Clipping 微信公众号

Claude Code 推出安全审计插件,边写代码边抓漏洞

by 尹John 原文 ↗
Created: 2026-05-28

公众号名称:AGI Hunt

作者名称:尹John

发布时间:2026-05-27 23:56

Claude Code 上线了一个官方安全插件 security-guidance,能在你写代码的过程中自动识别安全漏洞,并当场修复。

开发者的安全守卫

装好之后不需要手动触发,它会在后台默默审查每一次代码变更,发现问题直接告诉 Claude,让 Claude 自己改。

01

先看效果

演示案例中给 Claude Code 下发了一个任务:给一个社交媒体网站写一个 Node.js 反向代理,要求拦截超过 150 个字符的消息。

用户输入任务

Claude 很快写出了一个零依赖的 proxy.js,功能很快就搞定了:监听 8081 端口,拦截 /api/send-message 的 POST 请求,解析 JSON body,检查 message 字段长度,超过 150 字符就返回 413。

Claude 生成代码

看起来……没什么问题,一切正常且熟悉,对吧?

但这时,屏幕上突然弹出了一行黄色高亮的提示:

“ 后台安全审查发现问题:proxy.js 中存在 JSON 解析器不一致导致的字段偷渡漏洞(JSON Interoperability / Parser-Disagreement Field Smuggling)

安全审计告警

插件在后台发现了一个跨语言解析器不一致的漏洞。

Claude 随即解释了这个漏洞的原理,并且自动开始修复。

自动修复漏洞

从发现到修复,整个过程大概 40 秒。开发者几乎什么都不用做,连漏洞长什么样,都不需要知道……

02

JSON 字段偷渡

而说起这个漏洞,其实还有些巧妙。

Node.js 的反向代理用 JSON.parse 解析请求体,检查 message 字段的长度。但后端是个 Go 服务,Go 的 encoding/json 在解析 struct 字段时是大小写不敏感的。

于是,攻击者就可以构造这样一个请求:

{"message": "short", "Message": "这里放超过200个字符的恶意内容..."}

Node.js 只看到小写的 message,内容是 “short”,长度检查通过了。

字段偷渡

就像你出国旅游,结果对面海关只检查了你的手提行李箱,然后放行了。

而 Go 呢?它把 messageMessage 视为同一个字段,取最后一个值。于是那段超长内容就这么绕过了代理的限制,直接到达了后端。

MESSAGEmEsSaGe 这些变体,也同样能绕过。

一个字段名的大小写差异,就能让整个长度限制形同虚设。

这样的漏洞,用传统的静态分析工具几乎很难抓到。因为它的根源在于两种语言的 JSON 解析器行为不一致,得理解整个系统的上下文才能发现。

03

Claude 上手修复

Claude 的修复方案,分了三步:

修复方案

Allowlist + 重新序列化。

不再直接转发原始 JSON,而是从解析后的对象中只提取白名单字段(fromtomessagebumpimageemoji),用 JSON.stringify 重新构建,再转发给后端。这样就算攻击者塞了大小写变体字段,重新序列化后也只会保留规范化的版本。

大小写变体拒绝。

任何 key 如果能映射到已知字段但本身不是小写形式(比如 MessageMESSAGE),直接返回 400。在重新序列化之外多加了一层防御。

类型守卫。

如果请求体不是 JSON 对象(比如数组或标量),直接原样转发给后端,让后端自己的校验来处理。

04

三层防线

security-guidance 插件的设计分了三层,每层解决不同粒度的问题。

三层安全防线

第一层是模式匹配。

基于正则表达式,覆盖了大约 25 种常见的危险模式。比如 yaml.loadpickle.loadeval()innerHTML、硬编码密钥之类的。这层应该是速度最快的,在 Claude 每次写文件或编辑文件时就会触发,看到可疑模式立刻弹警告。

第二层是 LLM Diff 审查。

Claude 完成一轮操作后,插件会把代码变更的 diff 发给一个独立的 LLM 调用(默认是 Opus 4.7),让它从安全角度审查。如果发现高危问题,会把结果反馈给 Claude,Claude 在你看到回复之前就把问题修了。

演示视频里那个 JSON 字段偷渡的漏洞,就是第二层发现的。

第三层是 Agent 式提交审查。

git commit 的时候触发,用 SDK 驱动的审查 Agent 去读相关文件、grep 上下文、追踪数据流,抓的是跨文件的安全漏洞,比如 IDOR、认证绕过、跨文件的 SSRF。

三层叠加下来,覆盖了注入攻击、XSS、SSRF、硬编码密钥、IDOR、认证绕过、不安全反序列化、路径穿越这些主要漏洞类型。

05

自定义策略

此外,插件还支持组织级别的安全策略定制。

自定义安全策略

在项目的 .claude/ 目录下放一个 claude-security-guidance.md 文件,就能定义团队专属的安全规则。比如:

# Acme 安全规则

- 所有针对 customers 或 orders 表的 SELECT 必须走 db.replica,
  不允许走 db.primary
- 后台任务不能使用用户上下文的 auth token,
  要用 jobs.get_service_account() 获取服务账号凭证
- 调用 requests.get(url) 时如果 url 来自用户输入,
  必须使用 acme.net.safe_request 的 SSRF 白名单封装

这些规则会被注入到每次安全审查的 prompt 中,让审查器按照你团队的具体规范来检查代码。

策略支持三个层级:用户全局(~/.claude/)、项目级(提交到仓库)、本地覆盖(.gitignore 掉),按顺序来加载和合并。

06

如何安装

在 Claude Code 里输入 /plugins,搜索 security-guidance 安装就行了。

插件安装

也可以直接用命令:

/plugin install security-guidance@claude-plugins-official

需要 Claude Code v2.1.144 以上版本。装完就默认启用了,不需要额外配置。

如果想调整审查用的模型,或者在 Bedrock/Vertex 环境下使用,可以通过环境变量 SECURITY_REVIEW_MODEL 来指定。

目前,已经有超过 15 万用户安装了这个插件。

07

只是安全辅助

AI 编程的安全问题,其实一直是个隐忧。毕竟代码生成的速度越快,引入漏洞的速度也就越快。

Anthropic 这个插件的思路是:既然 AI 写的代码可能有漏洞,那就……再用一个 AI 来审查。而且审查发生在编码过程中,不是说写完了再跑一遍扫描,它是边写边查,发现了当场改

用AI审查AI

需要注意的是,官方也有特意给出了标注:

这是个辅助工具,不能替代人工代码审查、SAST/DAST 扫描和渗透测试。会有漏报,也会有误报。

不过,作为开发流程中的一道额外防线,成本还比事后补救要低不少了。

最后,我只想说,还是太有法子让人花钱烧你家 token 了……

◇ ◆ ◇

相关链接:

https://github.com/anthropics/claude-code/tree/main/plugins/security-guidance

https://x.com/ClaudeDevs/status/2059385239781384341


cover_image

原创 尹John AGI Hunt


内容效果不满意?点此反馈

输入关键词开始搜索