前端 · 2026年3月9日

Claude Opus 4.6挖出Firefox 22个CVE漏洞:AI安全审计到底行不行

上周Mozilla和Anthropic联合发了个消息:Claude Opus 4.6在两周内从Firefox代码里挖出了22个CVE漏洞,其中14个高危。所有漏洞已经在Firefox 148中修复。这不是AI随便跑跑fuzzer的水平。Firefox是全球审查最严格的开源项目之一,经历了二十多年的fuzzing、静态分析、人工安全审计,该找的bug按理说早就找完了。结果AI上来就翻出了一堆传统方法漏掉的东西。

事情经过

Anthropic的Frontier Red Team最初是在做内部评估——他们发现Opus 4.5已经能解决CyberGym(一个测试LLM能否复现已知漏洞的benchmark)上的几乎所有任务,需要更难的测试目标。Firefox正好符合要求:代码复杂度高、安全测试历史长、用户基数大。第一步是让Claude在旧版Firefox代码中复现已知CVE。结果Opus 4.6能复现其中相当高比例的历史漏洞,但这可能存在训练数据泄漏的问题。关键的第二步:让Claude在当前版本的Firefox中找从未被报告过的新漏洞。从JavaScript引擎开始。仅仅20分钟,Claude就报告发现了一个Use After Free漏洞——这种内存漏洞允许攻击者用恶意内容覆盖数据。Anthropic的研究员在独立虚拟机上验证了这个bug,然后提交给了Mozilla的Bugzilla。等他们验证完第一个漏洞提交上去,Claude已经又找到了50个新的崩溃输入。最终,Claude扫描了将近6000个C++文件,总共提交了112个独立报告,包括上述的高危和中危漏洞。

为什么传统方法没找到这些bug

Mozilla自己说了:Claude发现了fuzzer”几十年来一直没能覆盖到的整类逻辑错误”。这里的关键词是”逻辑错误”。Fuzzing的原理是往程序里灌大量随机/变异输入,看哪个能让程序崩溃。它擅长找内存越界、空指针这类”一撞就倒”的问题,但对于需要理解代码语义才能发现的逻辑缺陷,fuzzer基本无能为力。LLM的优势恰好在这里——它能”读懂”代码的意图,理解函数之间的调用关系和状态转换,从而发现那些”代码能跑但逻辑有问题”的漏洞。不过也别太神化。Anthropic提交的112个报告里,有相当一部分是assertion failure,这些和传统fuzzing的发现有重叠。真正独特的是那些逻辑层面的高危漏洞。

能找漏洞,但还不太会利用

Anthropic还做了一个更激进的测试:让Claude不仅找漏洞,还要写出exploit来证明漏洞可被利用。具体要求是读写目标系统的本地文件,模拟真实攻击。跑了几百次,花了大约$4000的API费用。结果Opus 4.6只在两个案例中成功写出了可用的exploit。而且这些exploit只在移除了部分安全特性的测试环境中有效,离真实浏览器的攻击场景还有距离。两个结论:

  • Claude找漏洞的能力远强于利用漏洞的能力
  • 发现漏洞的成本比构造exploit便宜一个数量级

这对防守方来说其实是好消息——AI目前更适合当安全研究员,而不是黑客。

对开发者意味着什么

Mozilla已经开始在内部安全流程中集成AI辅助代码分析。这个方向几乎不可逆。如果你维护一个有一定规模的开源项目,或者在公司里负责代码安全审计,可以关注这几个方向:1. AI代码审计的成本已经很低了扫描6000个C++文件,两周时间,产出22个CVE。对比传统安全审计公司的报价和周期,这个性价比已经很夸张了。2. 不要只依赖fuzzing了Fuzzing依然重要,但它有覆盖盲区。逻辑漏洞、状态管理问题、复杂的时序bug——这些是LLM能补上的短板。把AI审计和fuzzing结合起来用才是正确姿势。3. C/C++项目优先这次发现的漏洞大量集中在内存安全相关的问题(Use After Free等)。如果你的项目有C/C++组件,特别是处理不受信任输入的部分(解析器、引擎、网络协议处理),AI审计的收益最高。4. 前端项目也别掉以轻心Firefox的JavaScript引擎是这次审计的第一个目标。虽然前端JS代码不会有内存安全问题,但如果你在写Node.js native addon,或者项目依赖了C++编译的WASM模块,同样的风险存在。

怎么自己试

目前Anthropic没有开放专门的安全审计产品,但用Claude的API完全可以做类似的事情。基本思路:

# 伪代码示意,不是完整实现
import anthropic

client = anthropic.Client()

# 读取目标源文件
with open("target.cpp") as f:
    source_code = f.read()

response = client.messages.create(
    model="claude-opus-4-6-20260307",
    max_tokens=4096,
    messages=[{
        "role": "user",
        "content": f"""分析以下C++代码中的安全漏洞。重点关注:
- Use After Free
- Buffer Overflow
- Integer Overflow
- Race Condition
- 逻辑错误导致的安全问题

对于每个发现的漏洞,提供:
1. 漏洞类型和严重程度
2. 具体的代码位置
3. 可复现的最小测试用例
4. 修复建议

代码:
{source_code}"""
    }]
)

关键是prompt要具体——告诉模型关注哪些类型的漏洞,要求它给出可复现的测试用例(不是泛泛的描述),并且要求修复建议。更实际的做法是写一个脚本批量扫描项目中的源文件,然后人工review AI的输出。不要直接信任AI的判断,但把它当成一个高效的”第一轮筛选”。

费用参考

Anthropic写exploit的测试花了$4000跑几百次。单纯找漏洞的成本要低得多。粗略估算,用Opus 4.6的API扫描一个中等规模的C++项目(几百个文件),API费用大概在$100-500之间,取决于文件大小和扫描深度。跟请一个安全审计团队花几万到几十万比,这个价格几乎可以忽略。

这个趋势的另一面

AI能帮防守方找漏洞,攻击方一样能用。Anthropic自己也承认Claude在两个案例中成功写出了exploit,虽然只在受限环境下有效,但模型能力在快速提升。Mozilla选择和Anthropic合作而不是等着被动挨打,这个策略是对的。对于整个行业来说,”AI找漏洞的速度远快于人工修复漏洞的速度”这个矛盾会越来越尖锐。现在的窗口期很宝贵:AI暂时还更擅长找漏洞而不是利用漏洞。趁这个时间差,把自己项目里的安全债务清一清。