
最近折腾了大模型驱动的安全测试,踩了几个坑,这篇把 Mozilla 和 Anthropic 这次合作说清楚。
Mozilla 的 MFSA2026-13 安全公告列出了 14 个高危 Firefox 漏洞,归功于"Anthropic 的 Claude"。这几乎占了 2025 年所有 Firefox 高危 bug 的 20%,而这些漏洞是大模型在两周内发现的。这不是 Demo,是生产级别的 Agent 驱动安全研究,在全球防护最严密的代码库之一里挖出了真实的 CVE。
有意思的不是 AI 找到了 bug,而是 Anthropic 怎么搭建验证流水线、决定上报什么、以及如何在不往 Mozilla 的 bug 追踪器里灌假漏洞的情况下把结果移交给他们。
Anthropic 选择 Firefox 因为它代码复杂、经过大量审计、服务数亿用户。浏览器是高价值目标,需要持续解析不可信内容,渲染引擎里的内存安全问题可能导致远程代码执行。
Firefox 已经有了:
如果 Agent 能在这里发现新 bug,这说明基于 LLM 的安全研究不只是玩具项目,是真能 scale 的。
Anthropic 的方案把 LLM 推理和传统安全工具结合起来。Agent 不是光读代码瞎猜,而是编排一个多步骤工作流:
关键洞察是 LLM 不需要不安全的执行权限。它生成假设和 PoC 代码,但验证发生在有内存清理工具和崩溃报告的受控环境中。
Agent 驱动安全研究最大的运营挑战是防止幻觉浪费人工时间。如果 Claude 生成了 1000 个潜在漏洞利用代码但 990 个是误报,安全团队就不会再关注了。
Anthropic 的过滤策略:
Mozilla 在这里扮演了关键角色。他们帮助 Anthropic 校准什么才算得上可上报的 bug。合作早期,Agent 可能提交了技术正确但不可利用或已知的发现。反馈循环收紧了过滤条件。
Agent 如何决定去哪里找?Anthropic 综合使用了:
这不是随机 fuzzing。Agent 推理出 bug 可能藏在哪里,然后用具体漏洞利用代码验证这些假设。
| 方法 | 速度 | 覆盖率 | 误报率 | 人力投入 |
|---|---|---|---|---|
| 人工代码审计 | 慢 | 定向 | 低 | 高 |
| Fuzzing(AFL、libFuzzer) | 快 | 广但浅 | 中 | 低(设置)、高(分类) |
| 静态分析(Coverity) | 中 | 广 | 高 | 高(分类) |
| Agent 驱动(Claude) | 快 | 定向且深入 | 中(带过滤) | 中(校准、分类) |
Agent 结合了 fuzzing 的速度和人工审计的推理能力。它能读代码、理解上下文、构造传统 fuzzer 漏掉的漏洞利用代码(逻辑漏洞、竞态条件、复杂状态机)。
Anthropic 的红队 Agent 运行在循环中:
# Simplified agent loop for security research
def security_agent_loop(codebase, known_cves): while True: # Step 1: Generate hypothesis
hypothesis = claude.analyze( codebase=codebase, historical_cves=known_cves, prompt="Identify high-risk attack surfaces" ) # Step 2: Construct PoC
poc_code = claude.generate_exploit(hypothesis) # Step 3: Validate in sandbox
result = run_in_sandbox( target="firefox", poc=poc_code, sanitizers=["asan", "ubsan"], timeout=30 ) # Step 4: Filter and report
if result.crash or result.sanitizer_violation: severity = claude.assess_severity(result) if severity >= REPORTABLE_THRESHOLD: submit_bug_report( vendor="mozilla", finding=result, severity=severity ) # Step 5: Learn from feedback
known_cves.append(result)
关键可观测性钩子:
Agent 驱动的安全研究有可预见的失败模式:
幻觉漏洞利用:LLM 生成了听起来合理但实际不工作的 PoC 代码。
过度上报低危 bug:Agent 向 bug 追踪器灌入大量小问题。
漏掉复杂漏洞:Agent 聚焦于明显模式,漏掉微妙的逻辑漏洞。
沙箱逃逸:如果 Agent 有执行权限,恶意提示词可能利用研究基础设施。
如果 Agent 能在 Firefox 里找到高危 bug,它们也能在你的代码库里找到。运营层面的问题是如何把 Agent 驱动的测试集成到现有 CI/CD 流水线中。
实际部署选项:
成本模型不同于传统安全测试。Fuzzing 便宜(CPU 时间)但噪音大。人工审计贵(人工时间)但精确。Agent 驱动的测试处于中间:中等成本(LLM API 调用、沙箱基础设施),校准后信噪比高。
适合使用 Agent 驱动的安全测试:
不适合的场景:
Firefox 合作证明了 Agent 能做真实的安全工作,不只是生成代码。工程实现才是关键:验证循环、严重性评分和供应商反馈决定了这是有用的工具还是吵闹的实验。