用途:对代码库做静态安全分析,编排多个 SAST 工具,编写自定义检测规则,摄取并聚合 SARIF,再将原始告警分诊为按可利用性排序的发现列表。适用于扫描代码漏洞、从 CVE 或补丁差异生成 Semgrep 规则与 CodeQL 查询、对告警去噪、以及把 SAST 接入 CI。不适用于依赖包 CVE、运行时动态测试、容器镜像、IaC 配置、移动二进制、LLM 提示注入扫描和威胁建模,这些属于其他技能。
主要能力:按语言选型(多语言用 Semgrep 与 CodeQL;Python 用 Semgrep+Bandit;Go 用 gosec+Semgrep;Rails 用 Brakeman;Java 用 SpotBugs+FSB;JS/TS 用 Semgrep 与 ESLint 安全插件;需要跨过程污点追踪用 CodeQL)。支持并行扇出(Semgrep、Bandit、gosec、Brakeman、ESLint、Gitleaks 可并发)与硬依赖顺序(CodeQL 建库后分析、SpotBugs 需先编译)。分诊为最重的推理环节,用于可达性、污点、影响和误报判定。所有发现统一为 finding.json 结构,工具原生输出用 SARIF 2.1.0。
使用方式:按工作流文件执行,如多工具扫描、分诊、从 CVE 生成规则、从 sink 生成查询、误报削减、CI 集成。工具安装命令:pip install semgrep;pip install 'bandit[sarif]';go install github.com/securego/gosec/v2/cmd/gosec@latest;gem install brakeman;npm i -D eslint eslint-plugin-security eslint-plugin-no-unsanitized;brew install gitleaks;CodeQL 从 github/codeql-cli-binaries 下载 CLI。
限制:分诊必须等待全部扫描完成,勿用部分 SARIF 启动;每个工具用独立子代理避免上下文耗尽。验证版本为 Semgrep 1.60、CodeQL CLI 2.17、Bandit 1.8、gosec 2.20、Brakeman 6.2、SpotBugs 4.8+FSB 1.13、ESLint 9。