面向前端源码包的轻量级 SAST 扫描工具。
它适合在客户给出前端源码包后,快速定位可疑安全点,输出中文报告,并可选接入 AI 对命中结果做二次研判。
当前定位:首轮筛查 / 审计辅助工具。核心能力是规则扫描 + AI 研判,不是完整 AST / 污点追踪型 SAST。
- 递归扫描前端源码目录
- 基于 JSON 规则发现可疑风险
- 输出
findings.json和中文report.md - 支持 SiliconFlow AI 逐条研判
- 支持按严重级别选择 AI 研判范围
- AI 研判时显示进度,并实时保存结果
- 支持规则热加载和规则启停
当前规则覆盖:
xss:危险 HTML 渲染、动态执行redirect:跳转和 URL 风险secret:硬编码凭证、对象存储材料auth-ui-only:仅前端鉴权、按钮显隐、路由守卫graphql:GraphQL 查询面和高价值字段bridge:JSBridge、WebView、postMessagesupply-chain:安装脚本、构建链、命令执行、环境变量
要求:
- Node.js
>= 25.5.0
npm install
npm run compilenode dist/index.js scan <targetPath> [options]常用参数:
--output <dir>:输出目录--with-ai:启用 AI 研判--no-ai:禁用 AI 研判--ai-severities <value>:AI 研判级别,支持all、low、medium、high、critical、逗号多选--format <json|md|both>:输出格式,默认both--include <glob>:自定义包含文件--exclude <glob>:自定义排除文件--max-snippet-lines <n>:报告代码片段行数
查看帮助:
node dist/index.js --help扫描整个项目:
node dist/index.js scan /path/to/project --output ./output/project --no-ai扫描前端目录:
node dist/index.js scan /path/to/project/apps/admin --output ./output/admin --no-ai启用 AI,只研判高危和严重:
node dist/index.js scan /path/to/project/apps/admin --output ./output/admin-ai --with-ai --ai-severities high,critical只输出 Markdown:
node dist/index.js scan /path/to/project/apps/admin --output ./output/admin --format md --no-ai默认输出到指定目录:
output/
└── <scan-name>/
├── findings.json
└── report.md
report.md 是中文报告,包含:
- 扫描概览
- 分类统计
- 严重级别统计
- AI 结论统计
- 优先关注项
- 漏洞与代码细节
- 扫描错误
每条命中包含文件、行列号、命中文本、风险说明、复核建议和代码片段。
方式一:环境变量。
export SILICONFLOW_API_KEY="your_api_key"
export SILICONFLOW_MODEL="Pro/zai-org/GLM-4.7"方式二:本地配置文件。
cp config/ai.local.example.json config/ai.local.json填写:
{
"apiKey": "YOUR_SILICONFLOW_API_KEY",
"model": "Pro/zai-org/GLM-4.7",
"baseUrl": "https://api.siliconflow.cn/v1",
"temperature": 0.2,
"maxTokens": 2048,
"timeoutMs": 30000
}配置优先级:
- 环境变量
config/ai.local.json- 内置默认值
AI Prompt 模板:
config/prompts/triage.system.txtconfig/prompts/triage.user.txt
默认 --with-ai 会研判全部命中。
可以用 --ai-severities 限制范围:
# 全量
--ai-severities all
# 只研判高危
--ai-severities high
# 只研判严重
--ai-severities critical
# 研判中危、高危、严重
--ai-severities medium,high,criticalAI 研判过程中会实时刷新:
findings.jsonreport.md
如果中断,已经完成的 AI 结果会尽量保留。
运行时规则目录:
config/rules/
├── metadata.json
├── xss.json
├── redirect.json
├── secret.json
├── auth-ui-only.json
├── graphql.json
├── bridge.json
├── supply-chain.json
└── overrides.example.json
修改 config/rules/*.json 后不需要重新编译,下次扫描自动生效。
创建:
cp config/rules/overrides.example.json config/rules/overrides.local.json示例:禁用噪声较大的规则。
{
"enabledCategories": [],
"disabledCategories": [],
"enabledRuleIds": [],
"disabledRuleIds": [
"bridge.004",
"graphql.004"
]
}也可以禁用整个类别:
{
"enabledCategories": [],
"disabledCategories": ["bridge", "graphql"],
"enabledRuleIds": [],
"disabledRuleIds": []
}恢复默认规则:删除 config/rules/overrides.local.json。
- 先
--no-ai做全量规则扫描 - 看
report.md,确认命中数量和噪声来源 - 用
overrides.local.json关闭高噪声规则 - 再启用
--with-ai --ai-severities high,critical - 最终由人工复核确认漏洞是否成立
- 当前主要是关键字和正则规则
- 不能替代完整人工审计
- 不能直接证明复杂业务越权
- 暂不支持跨文件数据流和污点追踪
适合作为前端源码审计的第一轮线索发现工具。