Claude Code 安全插件上手:边写代码边查 25 类高危漏洞,三层审查怎么工作
AI 写代码的速度上来了,但"快"也意味着不安全的模式会被更快地复制进代码库——硬编码密钥、SQL 注入、不安全反序列化,模型一不留神就写出来。Anthropic 给 Claude Code 推出了免费的 security-guidance 插件:在你写代码的同一个会话里实时审查并修复漏洞。本文讲清它怎么装、三层审查各管什么、能查到哪些类型,以及它的能力边界。

一、一行命令安装
在 Claude Code 会话里执行:
/plugin install security-guidance@claude-plugins-official
/plugin install security-guidance@claude-plugins-official
安装时会提示选 scope——选 user scope,插件写进用户设置,这台机器上每个新本地会话都会加载。也可以用 /plugins 浏览市场安装。装完跑 /reload-plugins。
前置依赖:
- Claude Code 版本 2.1.144 或更高
- Python 3.8+
- 首次运行会在
~/.claude/security/下建虚拟环境并装 Claude Agent SDK,需要 pip 和网络访问
装好后无需调用——没有命令要记,插件自动运行。
二、三层审查机制
插件在三个检查点工作,深度递增:
| 层 | 触发时机 | 技术手段 | 成本 | 能查什么 |
|---|---|---|---|---|
| 1. Per-edit 模式警告 | 每次 Edit/Write | 正则匹配 ~25 类危险模式 | 零(无 AI 推理) | 已知危险构造 |
| 2. 回合末 diff 审查 | Claude 完成一个回合 | 快速 LLM 调用(默认 Opus 4.7) | 一次模型调用 | 逻辑级漏洞 |
| 3. Agentic 提交审查 | git commit 时 | SDK 驱动,读相关文件追数据流 | 多次工具调用 | 跨文件漏洞 |
第 1 层:Per-edit 正则(~25 类,零成本)
每次 Edit/Write 时即时提醒,正则匹配约 25 种已知危险模式,不需要 AI 推理,零额外用量成本。覆盖的危险构造例如:
eval(), new Function() # 任意代码执行
os.system(), child_process.exec() # 命令注入
pickle.load (不可信数据) # 不安全反序列化
yaml.load (非 safe_load)
torch.load(weights_only=False)
eval(), new Function() # 任意代码执行
os.system(), child_process.exec() # 命令注入
pickle.load (不可信数据) # 不安全反序列化
yaml.load (非 safe_load)
torch.load(weights_only=False)
前端侧的 DOM 注入向量:
element.innerHTML = userInput // XSS
dangerouslySetInnerHTML={{__html}} // React XSS
element.innerHTML = userInput // XSS
dangerouslySetInnerHTML={{__html}} // React XSS
以及硬编码密钥、API key 等。
第 2 层:回合末 LLM diff 审查
Claude 完成一个回合时,插件把 diff 发给一次快速 LLM 调用(默认 Opus 4.7),把高危发现喂回给 Claude,让它在你看到回复前就修掉。
关键点:这个审查者从全新上下文开始,对原方案没有"投入感",能抓到字符串匹配抓不到的逻辑级漏洞——授权绕过、不安全的直接对象引用(IDOR)、服务端请求伪造(SSRF)、弱加密。
第 3 层:Agentic 提交审查
git commit 时,一个 SDK 驱动的审查者用 Read/Grep/Glob 读相关文件、追踪跨文件的数据流,抓模式匹配漏掉的多文件漏洞(IDOR、auth bypass、跨文件 SSRF)。
整体覆盖常见 Web 漏洞类:注入、XSS、SSRF、硬编码密钥、IDOR、授权绕过、不安全反序列化、路径遍历等。
三、能力边界(重要)
插件把违规作为**发现项(findings)**交给 Claude 去修,但:
- ❌ 不阻断写入,不保证每个违规都被抓到
- ✅ 这是 best-effort 辅助工具,不是保证
别把它当成人工 code review、SAST/DAST、依赖扫描或渗透测试的替代品。把发现项当建议,不是终审。
四、按团队定制规则
可以扩展(但不能禁用)内置规则,靠两个仓库级文件:
.claude/claude-security-guidance.md # 用自然语言描述威胁模型和审查清单
# 模型审查时作为额外上下文加载
.claude/security-patterns.yaml # 加正则/子串规则到 per-edit 检查
# 作为确定性字符串匹配运行
.claude/claude-security-guidance.md # 用自然语言描述威胁模型和审查清单
# 模型审查时作为额外上下文加载
.claude/security-patterns.yaml # 加正则/子串规则到 per-edit 检查
# 作为确定性字符串匹配运行
团队可在 .claude/settings.json 里声明插件强制所有成员启用,管理员也能通过 managed settings 全组织推送。
五、配合 Claude API 做提交前的批量安全审查
插件聚焦"写代码的当下"。如果你想在 CI 阶段对整个 PR diff 做一轮独立安全审查,可以用 Claude API 自己搭一个轻量检查——claudeapi.com 兼容 Anthropic SDK,仅需替换 base_url:
from anthropic import Anthropic
client = Anthropic(
api_key="sk-...", # claudeapi.com 控制台获取
base_url="https://gw.claudeapi.com",
)
def review_diff(diff_text: str) -> str:
resp = client.messages.create(
model="claude-opus-4-7", # 安全审查用最强推理
max_tokens=2000,
system=(
"你是资深安全审查员。审查以下 diff,只报高危问题:"
"注入、XSS、SSRF、硬编码密钥、IDOR、授权绕过、不安全反序列化、路径遍历。"
"每条给出:文件:行、漏洞类型、修复建议。无高危则回 'PASS'。"
),
messages=[{"role": "user", "content": diff_text}],
)
return resp.content[0].text
from anthropic import Anthropic
client = Anthropic(
api_key="sk-...", # claudeapi.com 控制台获取
base_url="https://gw.claudeapi.com",
)
def review_diff(diff_text: str) -> str:
resp = client.messages.create(
model="claude-opus-4-7", # 安全审查用最强推理
max_tokens=2000,
system=(
"你是资深安全审查员。审查以下 diff,只报高危问题:"
"注入、XSS、SSRF、硬编码密钥、IDOR、授权绕过、不安全反序列化、路径遍历。"
"每条给出:文件:行、漏洞类型、修复建议。无高危则回 'PASS'。"
),
messages=[{"role": "user", "content": diff_text}],
)
return resp.content[0].text
把它接进 CI,和 IDE 里的实时插件形成"写时 + 合入前"双道防线。
六、小结
- 一行
/plugin install security-guidance@claude-plugins-official装好,自动运行,无需调用。 - 三层审查:per-edit 正则(~25 类,零成本)+ 回合末 LLM diff(Opus 4.7,抓逻辑漏洞)+ 提交时 agentic 跨文件审查。
- 它是 best-effort 辅助、不阻断、不替代人工审查与专业安全工具。
- 想在 CI 里加一道独立审查,用 Claude API 自搭,和 IDE 插件双道防线。
模型定价与接入文档见 claudeapi.com,控制台见 console.claudeapi.com。



