Back to Blog

Claude Code 挖出潜伏长达 23 年的 Linux 内核漏洞

April 4, 2026by Ichiban Team
aisecuritylinuxclaude-codezero-day

Hero

#引言

著名的林纳斯定律(Linus's Law)提到:“只要有足够多的眼球,所有的 Bug 都无所遁形”。数十年来,开源社区一直仰仗这一法则来保障 Linux 内核等基础架构的安全。但是,当这些“眼球”不再是人类,并且能够以过去难以想象的规模和深度来处理代码时,情况会怎样呢?

在最近举办的 [un]prompted AI 安全会议上,来自 Anthropic 前沿红队(Frontier Red Team)的 Nicholas Carlini 打破了我们对遗留代码安全性的长期认知。他展示了在强大的 Claude Opus 4.6 模型加持下,Claude Code 如何自主发现并利用了 Linux 内核中一个极其严重的远程可利用漏洞,而这个漏洞竟在众目睽睽之下潜伏了整整 23 年。

这绝不是静态分析工具的又一次常规迭代,而是一个分水岭事件。它彻底重新定义了代码库审计、防御性补丁的开发方式,乃至整个网络安全的经济学模型。

#发现了什么

Anthropic 前沿红队采用的方法看似简单粗暴,却极具破坏力。Carlini 的团队本质上构建了一条基于 AI 的多轮“暴力”审计流水线,其运行规模是传统人类安全团队望尘莫及的。

这一 AI 驱动的安全审计流程可分为三个明确的阶段:

  • 第一阶段:深度语义解析。 Claude Code 系统性地摄取了 Linux 内核仓库中的每一个源文件。Claude 并没有依赖预定义的正则表达式或抽象语法树(AST)匹配,而是深入解析 C 代码的语义,追踪复杂的状态机和指针生命周期。
  • 第二阶段:自动化验证。 第二批 Claude 智能体接手被标记的代码路径,并尝试编写功能性的漏洞利用验证(PoC)。这实现了近乎 100% 的验证成功率,彻底消除了传统静态应用安全测试(SAST)工具中让人头疼的误报问题。
  • 第三阶段:生成修复方案。 漏洞一经确认,智能体便会提出结构完善的内核补丁,直接封堵攻击面。

整个过程中最令人瞩目的战果,便是在 NFSv4(Network File System version 4)守护进程中发现的复杂栈溢出漏洞。这段存在缺陷的代码早在 2003 年就已被引入,在长达二十年的时间里,它挺过了无数次人工审计、代码重构以及自动化的 Fuzzing(模糊测试)。

仿佛是为了证明这并非侥幸,Carlini 还透露他们让 Claude Opus 4.6 去审计了拥有超过 5 万 GitHub Star 的热门开源平台 Ghost CMS。在不到 90 分钟的时间里,AI 揪出了一个 0day 盲注 SQL 漏洞,并成功提取了管理员的 API 密钥。

#为什么这很重要

在全球审查最严格的代码库之一中挖出潜伏 23 年的漏洞,这迫使我们不得不面对一个残酷的现实:现有的安全工具在处理复杂的、有状态的漏洞时,根本力不从心。

资本市场立刻嗅到了这一演示的严重性。在演示结束后,包括 CrowdStrike 和 Palo Alto Networks 等行业巨头在内的主要网络安全股票应声大跌。投资者开始担忧一个即将到来的未来:寻找 0day 漏洞的财务和技术门槛,将降至几乎为零。

从历史上看,想要发现类似 NFSv4 栈溢出这样的漏洞,通常需要那些精通内核底层机制和网络协议的顶尖安全专家耗费数月时间潜心研究。通过将这一过程自动化,Claude Code 彻底打破了攻防之间的不对称性。如果 AI 能够在一个周末的时间里,完整梳理并利用一个 23 年前的漏洞,那么所谓“久经考验(battle-tested)”的软件,其安全性显然需要进行根本性的重新评估。

#技术启示

要理解为什么说这是一次巨大的技术飞跃,我们必须先弄清楚,为何传统工具在过去的 23 年里对这个漏洞视而不见。

传统的 Fuzzer(比如 syzkaller)在发现内存损坏漏洞方面表现优异,但它们严重依赖基于覆盖率引导的变异策略。众所周知,这类工具在触达需要复杂的、多步状态机交互的代码路径时,往往显得无能为力。要触发这个 NFSv4 漏洞,客户端必须发送一系列极其特定的恶意组合请求,在满足一系列严苛的先决条件后,才能触发栈溢出。标准的 Fuzzer 几乎必然会卡在生成有效的校验和,或者满足协议严格状态要求等步骤上。

然而,Claude Code 根本不需要去盲猜状态机——它直接阅读代码并理解了内部的逻辑。

下面是一个简化的概念性代码片段,展示了 Claude 能够利用的那种“语义盲区”:

/* Conceptual example of the semantic bug pattern */
int process_nfs4_compound(struct nfsd4_compoundargs *argp, void *buf) {
    int op_count = argp->opcnt;
    char local_buffer[256];
    
    // Traditional SAST sees a bounds check here and marks it safe
    if (op_count > MAX_OPS) {
        return -EINVAL;
    }

    // However, an obscure protocol downgrade state allows 
    // op_count to be manipulated AFTER the initial check
    trigger_legacy_fallback(argp); 

    // Semantic understanding reveals that argp->opcnt is now unbound,
    // leading to a stack overflow during the memory copy
    memcpy(local_buffer, buf, argp->opcnt * sizeof(struct nfsd4_op));
    
    return 0;
}

静态分析工具在看到初始的边界检查后,通常会认为该变量是安全的。但 Claude Opus 4.6 能够跨越多个函数调用来追踪变量的生命周期。它敏锐地察觉到 trigger_legacy_fallback() 以某种方式改变了内部状态,从而让之前的安全检查形同虚设。这种级别的上下文推理能力,在过去仅仅是资深人类安全研究员的专属技能。

#下一步是什么

我们正在步入一个 AI 安全的“双刃剑”时代。

在防御端,这项技术展现出了极具诱惑力的前景:它赋予了我们系统性清除数十年技术债务的能力。企业可以部署内部的 AI 智能体集群,对其整个软件供应链进行全面审计,在漏洞被外部恶意武器化之前完成修复。“默认安全(secure by default)”的软件梦想,突然变得触手可及。

然而,它在攻击端带来的威胁同样不容忽视。Carlini 提到,Anthropic 最近让一个由 16 个 Opus 智能体组成的团队,完全从零开始,用 Rust 编写出了一个功能完备的 C 编译器。当这种级别的架构设计和编码能力被用于攻击性安全研究时,整个威胁态势将呈指数级恶化。恶意攻击者很快就能掌握那些具备极高能力的、24 小时无休运转的自动化漏洞挖掘流水线。

为了应对这一局面,业界必须摒弃传统的“被动打补丁”模式。我们很可能会看到向内存安全语言的全面迁移——这也印证了目前将 Rust 引入 Linux 内核这一举措的正确性——以及大规模部署运行速度和规模与 AI 攻击者相当的 AI 驱动的自治防御系统。

#结语

Claude Code 在 Linux 内核中挖出 23 年老 Bug 的事件,无疑给整个软件工程界敲响了警钟。它无情地证明了,在我们遗留的代码库中,仍然潜藏着大量的高危漏洞,只需有足够的时间和推理能力——无论是人还是机器——就能将它们一一翻出。

这个特定的内核漏洞目前已被修复,但挖掘它的方法论已经公之于众。随着 AI 模型在上下文窗口长度和逻辑推理能力上的持续狂飙,网络安全行业必须加速自我进化。自动化防御者与自动化攻击者之间的军备竞赛已经正式打响,并且,没有回头路可走。