Claude Code Security实测:20分钟挖出Firefox高危漏洞,我自己的项目也试了
Claude Code Security让我印象最深的不是22个漏洞这个数字,而是它审查代码的方式——不是匹配已知模式,而是理解代码的逻辑和意图。对个人开发者来说,你第一次可以用接近专业安全审计的质量审查自己的代码,成本几乎可以忽略。对安全行业来说,只靠规则库吃饭的工具确实需要重新想想定位了。AI不会替代安全工程师。但不用AI的安全工程师,会被用AI的安全工程师替代。关注公众号 92year,每天
Claude Code Security实测:20分钟挖出Firefox高危漏洞,我自己的项目也试了
上个月做代码审查,盯着一个C++模块看了两天,死活找不到偶现的段错误。六千个文件几十万行代码,人眼看到第三天就废了。
然后Anthropic和Mozilla的合作公告出来了——Claude Opus 4.6用两周扫了Firefox六千个C++源文件,挖出22个安全漏洞,14个高危。第一个Use After Free,20分钟就出来了。
这不是实验室demo。Firefox 148已经修了这些bug,推给了几亿用户。
我自己也试了一把,下面是完整记录。
Claude Code Security是什么
2026年2月5日Anthropic发布Claude Opus 4.6,核心升级是百万token上下文和长时间自主执行。两周后放出Claude Code Security——内嵌在Claude Code里的安全扫描功能。
消息一出,CrowdStrike股价跌了8%,Cloudflare跌了8%,Okta跌了9.2%。
为什么?因为它做了一件以前只有顶级安全研究员能做的事:读懂代码逻辑,追踪数据流向,发现传统扫描工具找不到的漏洞。
传统SAST工具(SonarQube、Snyk、Semgrep)本质是模式匹配。规则库里没有的漏洞类型,它看不见。Claude Code Security不查规则库,它读代码,理解组件交互和数据流向,能发现跨模块的逻辑漏洞。
Firefox实测数据
Anthropic和Mozilla合作的关键数据:
| 指标 | 数值 |
|---|---|
| 扫描文件数 | ~6000个C++文件 |
| 扫描时长 | 2周 |
| 提交报告 | 112份 |
| 确认漏洞 | 22个(14高危/7中危/1低危) |
| 首个漏洞发现时间 | 20分钟 |
| 最严重漏洞 | CVE-2026-2796,CVSS 9.8 |
14个高危是什么概念?大约等于2025年全年Firefox高危漏洞修复数量的五分之一。
CVE-2026-2796是WebAssembly JIT编译器里的Use After Free——内存释放后代码还在往那个地址写数据。攻击者可以在你浏览网页时执行任意代码。
112份报告里22个被确认为真实漏洞,确认率约20%。考虑到全自动发现、没有人工筛选,这个比例相当不错。人类安全研究员提交的bug report确认率通常也就30%到50%。
在自己的项目上试一把
我日常维护一个多平台自动发布系统,涉及微信API、飞书API、微博自动化等几十个接口对接。大量cookie处理、token刷新、API签名计算。
直接上操作。在Claude Code里跑安全审查的命令:
# 进入项目目录
cd ~/your-project
# 启动Claude Code
claude
# 在Claude Code交互界面里输入
/security-review
它会自动扫描当前目录下的所有代码文件。我的项目跑了大约15分钟,输出了一份详细的安全报告。
发现一:Token明文存储
我之前把API token直接写在配置文件里:
# ❌ 危险写法:token明文存储在配置文件
config = {
"app_id": "cli_a920301608381bcd",
"app_secret": "CzglIIJN9CkYLv09QK6x6CEWJxyG4Quu",
"api_token": "eyJhbGciOiJIUzI1NiIsInR..."
}
# ✅ Claude建议的改法:环境变量 + 脱敏日志
import os
config = {
"app_id": os.environ.get("FEISHU_APP_ID"),
"app_secret": os.environ.get("FEISHU_APP_SECRET"),
}
# 日志输出脱敏
def safe_log(token: str) -> str:
"""只显示前4位和后4位"""
if len(token) > 8:
return f"{token[:4]}...{token[-4:]}"
return "****"
发现二:错误处理泄露敏感信息
API调用失败时,我把完整error response写进了日志,里面包含请求头和cookie:
# ❌ 危险写法:完整错误信息写日志
try:
resp = requests.post(url, headers=headers, json=data)
resp.raise_for_status()
except Exception as e:
logging.error(f"API调用失败: {e}, headers={headers}, response={resp.text}")
# ✅ 安全写法:过滤敏感字段
import re
def sanitize_log(text: str) -> str:
"""过滤日志中的敏感信息"""
patterns = [
(r'(Cookie:\s*)[^\n]+', r'\1[REDACTED]'),
(r'(Authorization:\s*Bearer\s*)[^\s]+', r'\1[REDACTED]'),
(r'(token["\s:=]+)[^\s,}"]+', r'\1[REDACTED]'),
]
for pattern, replacement in patterns:
text = re.sub(pattern, replacement, text, flags=re.IGNORECASE)
return text
try:
resp = requests.post(url, headers=headers, json=data)
resp.raise_for_status()
except Exception as e:
logging.error(f"API调用失败: status={resp.status_code}, body={sanitize_log(resp.text[:200])}")
发现三:MD5签名算法
有个API用了MD5做签名,Claude指出应该升级:
# ❌ MD5签名(已不安全)
import hashlib
sign = hashlib.md5(f"announce={json_str}×tamp={ts}".encode()).hexdigest()
sign = hashlib.md5((sign + salt).encode()).hexdigest()
# ✅ 升级到HMAC-SHA256
import hmac, hashlib
sign = hmac.new(
secret_key.encode(),
f"announce={json_str}×tamp={ts}".encode(),
hashlib.sha256
).hexdigest()
在CLAUDE.md里加安全约束
这是我从实际使用中总结的一组安全约束,加到项目根目录的CLAUDE.md里,AI生成代码时会自动遵守:
# CLAUDE.md 安全约束
## 密钥管理
- 所有密钥、token、密码必须通过环境变量传入,不能硬编码
- 日志输出必须脱敏,不能包含完整的token或cookie
- .env文件必须在.gitignore中
## 输入处理
- 所有用户输入必须做转义,防止注入
- SQL查询必须用参数化查询,不能拼接字符串
- 文件路径操作必须验证,防止路径遍历
## 网络请求
- HTTPS优先,HTTP请求需要明确标注原因
- 超时设置不能超过30秒
- 重试逻辑需要有指数退避和最大重试次数
## 错误处理
- catch块不能忽略异常
- 错误日志不能包含请求头、cookie等敏感信息
- 生产环境不能返回stack trace给客户端
有人在知乎上分享过,加了类似的30行安全约束后,AI生成代码的漏洞率降了一半。我自己的体验也类似。
用GitHub Actions自动化安全扫描
如果你是开源项目维护者,可以配一个CI自动扫描:
# .github/workflows/security-scan.yml
name: Claude Security Scan
on:
pull_request:
branches: [main]
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Claude Code Security
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
command: "/security-review --format sarif --output results.sarif"
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
每个PR自动跑一遍安全扫描,发现的问题在合并之前就修掉。
传统工具 vs Claude Code Security
拿一个跨文件的逻辑漏洞做对比。用户输入经过了sanitize函数,但sanitize没覆盖Unicode字符,下游HTML渲染模块可能触发XSS:
# file: utils/sanitize.py
def sanitize(text: str) -> str:
"""看起来做了过滤,但漏了Unicode"""
dangerous = ['<script>', 'javascript:', 'onerror=']
for d in dangerous:
text = text.replace(d, '')
return text
# file: views/render.py
from utils.sanitize import sanitize
def render_comment(user_input: str) -> str:
clean = sanitize(user_input)
return f"<div class='comment'>{clean}</div>"
# 攻击payload:<script>alert(1)</script>
# 全角 <> 绕过了sanitize的半角检测
# 浏览器渲染时部分情况下仍可执行
SonarQube的规则库里有"直接拼接HTML"的告警,但不会告诉你sanitize函数有Unicode绕过问题。Claude Code Security能追踪数据从user_input到sanitize到render_comment的完整路径,指出sanitize的覆盖不全。
前者找到了一个点,后者理解了一条链路。
成本对比
| 审计方式 | 成本 | 耗时 | 覆盖率 |
|---|---|---|---|
| 专业安全审计公司 | 5-50万元 | 2-4周 | 核心模块10-20% |
| SonarQube/Snyk | 免费-几万/年 | 分钟级 | 规则库覆盖范围 |
| Claude Code Security | API费几十到几百元 | 小时级 | 全量代码扫描 |
| Zerodium零日报价 | 收购价30-100万美元 | - | 单个漏洞 |
以前找一个靠谱的安全审计要花好几万,现在用Claude跑一遍几美元API调用费。性价比变化了几个数量级。
目前的局限
Anthropic自己报告了:花了约4000美元API费,让Claude尝试把漏洞转化为实际可用的exploit。跑了几百次,只有2次成功,而且是在移除了沙箱的测试环境里。
找漏洞的能力远超利用漏洞的能力——这是当前的真实水平。对防御方是好消息,但Anthropic也承认这个成功率会随模型进步而提高。
Claude Code Security目前还在"有限研究预览"阶段,只对Team和Enterprise用户开放。个人用户暂时用不了完整功能,但/security-review命令是可以用的。
写在最后
Claude Code Security让我印象最深的不是22个漏洞这个数字,而是它审查代码的方式——不是匹配已知模式,而是理解代码的逻辑和意图。
对个人开发者来说,你第一次可以用接近专业安全审计的质量审查自己的代码,成本几乎可以忽略。
对安全行业来说,只靠规则库吃饭的工具确实需要重新想想定位了。
AI不会替代安全工程师。但不用AI的安全工程师,会被用AI的安全工程师替代。
关注公众号 92year,每天一篇AI工具深度实测
更多推荐



所有评论(0)