Back to Blog

AI化身安全工程师:Anthropic的Claude如何在Firefox中发现22个漏洞

March 9, 2026by Ichiban Team
aisecurityclaudefirefoxvulnerabilityllmcybersecurity

Hero

#引言

软件开发行业长期以来一直在争论,人工智能在超越代码生成和代码补全之后,究竟能在多大程度上进行深度的、结合上下文的复杂问题求解。虽然我们已经看到AI在辅助静态分析和自动化模糊测试(fuzzing)方面发挥作用,但复杂的漏洞发现传统上仍然需要人类安全工程师的直觉和对架构的深刻理解。然而,这种模式正在迅速转变。

根据最近的报告,Anthropic的Claude(特别是借助其最新模型的能力)在短短两周的时间内,成功在Mozilla Firefox代码库中发现了22个不同的漏洞。这绝非易事。Firefox是世界上最成熟、最复杂且审查最严格的代码库之一,包含数千万行C++和Rust代码,以及一个高度优化的JavaScript引擎(SpiderMonkey)。

对于开发者和安全专业人员来说,这一事件代表着一个分水岭。它证明了大型语言模型(LLM)现在已经能够消化庞大且相互关联的代码库,追踪跨越多个文件的复杂数据流,并识别出传统工具经常遗漏的、隐蔽的内存破坏漏洞。

#事件回顾

在为期14天的分析期内,一个由Anthropic的Claude驱动的专用代理框架评估了Firefox代码库中近6000个C++文件。结果令人震惊:

  • 发现漏洞总数: 22
  • 高危漏洞: 14
  • 生成的独立崩溃报告: 112
  • 发现首个严重漏洞的耗时: 20分钟(JS引擎中的一个释放后使用漏洞)

客观来看,这14个高危漏洞大约占Mozilla在过去整整一年中为Firefox修补的高危漏洞总数的20%。该AI系统接收指令,结合迭代静态分析与动态执行反馈,对代码库进行自主探索。

引人注目的是,该模型在部署后的最初20分钟内就发现了它的第一个重大问题——一个释放后使用(Use-After-Free,UAF)漏洞。大多数被发现的漏洞都已负责任地披露,并随后在Firefox 148版本中得到修复。

然而,同样重要的是要注意该模型在此次演练中表现出的局限性。虽然Claude在“识别”漏洞方面极其熟练,但在“漏洞利用”方面却举步维艰。在数百次尝试为其发现的漏洞合成可靠的漏洞利用代码后,它仅生成了两个粗糙的概念验证(PoC),且两者都需要显式禁用浏览器的安全沙盒才能运行。

#意义何在

这一发现的深远影响远远超出了单个浏览器补丁周期的范畴。在过去的十年中,大规模漏洞发现的行业标准一直是模糊测试(例如OSS-Fuzz)。虽然模糊测试极其强大,但它本质上是半盲目的;它通过变异输入并监控崩溃来工作,但缺乏对其正在执行的代码的语义理解。

#从模糊测试到语义分析的转变

特性传统模糊测试 (Fuzzing)LLM驱动的分析
方法输入变异与覆盖率最大化语义代码理解与逻辑推演
优势发现边缘情况的崩溃,高吞吐量理解复杂的状态机,逻辑缺陷
劣势没有好的测试工具(harness)时对深层逻辑漏洞视而不见计算成本高,存在误报/幻觉的可能性
配置时间高(需要定制模糊测试目标)低(可以直接读取源代码)

Claude的成功表明,AI代理可以成为连接模糊测试的暴力破解与人类研究员直觉之间的桥梁。通过理解代码的“意图”,LLM能够发现随机模糊测试工具可能永远无法触发的逻辑不一致和内存管理不当问题。它极大地加速了从发现到修补的流水线,使工程团队能够主动而非被动地加固复杂的代码库。

#技术影响

Claude发现的漏洞类型——主要是如释放后使用和越界读写等内存安全问题——出了名地难以通过静态分析检测,因为它们通常跨越多个函数调用和异步边界。

#理解释放后使用(UAF)漏洞

当应用程序在指针所指向的对象被释放后继续使用该指针时,就会发生释放后使用(UAF)漏洞。在像浏览器引擎这样复杂的C++应用程序中,对象的生命周期通过引用计数和智能指针来管理,这使得人工代码审计极其容易出错。

考虑以下一个简化的UAF模式概念示例,LLM可能通过分析跨文件依赖关系来发现它:

// File: EventDispatcher.cpp
void EventDispatcher::ProcessEvent(Event* evt) {
    if (evt->Type() == EventType::RELOAD) {
        // Deallocates the associated UI component
        evt->GetTarget()->Destroy(); 
    }
    
    // VULNERABILITY: If the target was destroyed, this access is invalid
    LogEventTargetMetrics(evt->GetTarget()->GetName()); 
}

传统的代码检查工具可能很难意识到Destroy()释放了支持GetTarget()的内存。然而,LLM可以读取Destroy()的定义,推断生命周期状态的变化,并将随后的读取操作标记为危险。Claude跨越近6000个文件追踪这些上下文状态变化的能力,是自动化代码审查领域的一次巨大飞跃。

此外,Claude在将这些漏洞武器化方面表现出的挣扎,凸显了一个关键的技术边界。识别内存破坏问题需要语义理解;而构建可靠的漏洞利用则需要对特定操作系统、内存布局、堆排布(heap shaping)技术以及缓解措施绕过(如ASLR和DEP)有深刻的了解。这表明,尽管AI是一个令人难以置信的防御工具,但完全自主的攻击性AI仍然面临重大的技术障碍。

#展望未来

将高级LLM集成到持续集成和持续部署(CI/CD)流水线中是合乎逻辑的下一步。我们正迈向这样一个未来:“AI安全工程师”不仅审查每个Pull Request的代码风格和语法,还会深入审查架构缺陷和内存安全漏洞。

  1. 混合工具: 预计将会看到LLM与传统模糊测试工具的集成。LLM可以分析代码库,识别潜在的薄弱环节,并自动编写高度针对性的模糊测试工具来验证这些特定假设。
  2. 语言迁移: 像Claude这样的工具将加速旧版C/C++代码库向内存安全语言(如Rust)的迁移。AI可以映射出易受攻击的C++逻辑,并将其可靠地转换为安全的Rust等效代码,同时在这个过程中验证语义。
  3. 安全大众化: 无法负担专职漏洞研究人员的小型组织,将能够利用AI来实现以前只有科技巨头才能享有的安全审计基准。

#结论

Anthropic的Claude在两周内于Firefox中发现22个漏洞,这不仅仅是一个令人印象深刻的基准测试;它更是软件工程新常态的预演。随着这些模型变得更快、更便宜,并且拥有更大的上下文窗口,它们对复杂系统进行推理的能力将从根本上改变我们构建和保护软件的方式。AI增强型安全工程师的时代已经正式到来,它有望让互联网成为一个极其安全的地方。