案例背景
我们的内部业务系统是个跑了 5 年的"祖传"项目:12 万行代码,Java 后端 + Node.js 网关 + 少量 Python 脚本,横跨三个语言栈。安全团队只有 2 人,每年只能抽审一次,历史欠账越堆越多。今年合规要求做一次全仓安全审计,传统人工预估要 4-6 人周,远超人力。我们决定用 Agent 把"机械的初筛"自动化,让人只盯确认与决策。
工具组合
| 工具 | 角色 | 为什么选它 |
|---|---|---|
| Claude Code | 主审计 Agent | 长上下文理解跨语言大仓,可自主读-改-验证-迭代 |
| Sequential Thinking MCP | 可回退推理 | 安全审计多假设并行、要能换路,普通 CoT 走死胡同 |
| GitHub MCP | 拉代码 / 提修复 PR | 自动建分支、提 PR、跑 CI,闭环到仓库 |
| Memory MCP | 漏洞模式库 | 沉淀已确认漏洞模式,下次同类直接命中 |
实施步骤
第 1 步:建立漏洞审计清单与优先级(半天)
不直接让 Agent 漫扫,先定审计范围与优先级,写进 Memory 当铁律:
安全审计铁律(存入 Memory):
- 优先级:注入类(SQL/命令/表达式)> 鉴权越权 > 敏感信息泄露 > 依赖漏洞 > 配置风险
- 只报有可触达输入路径的漏洞,纯内部不可达的死代码不算高危
- 每个发现必须给出:漏洞点、触发路径、PoC 思路、修复方案、风险等级
第 2 步:分语言扫描,每类一个 Goal(3 天)
按语言拆 Goal,避免上下文互相污染:
Goal:审计 java-backend/src 下所有直接拼接 SQL 的查询点,
对每个找到的可疑点,用 Sequential Thinking 走一遍
"输入可达性 → 是否参数化 → 是否有过滤 → 风险等级" 四步推理,
确认高危的写入修复 PR,低危的只记录清单。
Sequential Thinking 在这里发挥关键作用:Agent 发现某处拼接后,会开一支分支追输入可达性,追到不可达就 revisesPreviousThought 降级,避免误报。
第 3 步:跨语言污点追踪(2 天)
最棘手的是污点从 Node.js 网关流到 Java 后端的场景。让 Agent 用 GitHub MCP 把两端代码都拉进上下文,Sequential Thinking 走多步追踪:
起点:网关
req.query.id→ 是否校验 → 透传到后端 RPC → 后端是否拼接到 SQL
这条链跑通一次要十几个 thought 节点,普通 CoT 会在第 5 步断链,Sequential Thinking 的分支与修订让它能跑完整条链。
第 4 步:人审确认与 PR 合并(1 天)
Agent 把 17 个候选发现按优先级排好,安全团队只做最终确认:12 个确认为高危并合并修复 PR,5 个降级为信息项。Memory 沉淀这 12 个漏洞模式,下次同类项目直接命中。
关键 Prompt
你是安全审计 Agent。对给定代码范围执行审计:
1. 先用 sequentialthinking 列出本语言 Top 风险点清单(每个风险一个 thought)
2. 对每个风险点开分支验证:
- 分支A:输入是否可达(找入口与传递路径)
- 分支B:是否已有防护(参数化/校验/编码)
3. 仅当"可达且无防护"才标高危,输出修复方案
4. 不可达或有防护的,revisesPreviousThought 降级,不要进高危清单
5. 每个高危项格式:漏洞点 | 触发路径 | PoC思路 | 修复方案 | 风险等级
铁律:宁可漏报不可误报——误报会浪费人审时间,漏报下次扫还会再碰到。
效果数据
| 指标 | 人工预估 | Agent 辅助 |
|---|---|---|
| 投入人力 | 4-6 人周 | 2 人 × 7 天 |
| 初筛发现数 | — | 17 个候选 |
| 确认高危数 | — | 12 个 |
| 误报率 | — | 29%(17→12) |
| 修复 PR | 人工逐个改 | 12 个 PR 全部自动生成 |
经验总结
- 先定清单再扫描:让 Agent 漫扫会出一堆低价值噪音,定好优先级与"必须可达"的硬规则后信噪比立刻上来。
- 多步推理必须可回退:安全审计天然多假设并行,Sequential Thinking 的分支+修订是降误报的关键,普通 CoT 不够用。
- 跨语言污点要拉全上下文:别让 Agent 只看单语言,污点跨语言时必须把两端代码同时拉进上下文,否则追踪必然断链。
- 沉淀漏洞模式:把确认的漏洞模式存进 Memory,下次审计同类项目直接命中,这是 Agent 审计能越用越快的原因。
- 人盯决策不盯机械活:Agent 把 17 个候选排好序,人只做 5 个降级判断,把稀缺的安全人力放在最有价值的确认环节。