写点什么

Claude Code 发现了 Linux 内核中隐藏 23 年的可远程利用漏洞

  • 2026-04-30
    北京
  • 本文字数:1737 字

    阅读完需:约 6 分钟

Anthropic 研究科学家 Nicholas Carlini 在[un]prompted AI 安全会议上表示,他使用 Claude Code 在 Linux 内核中发现了多个可远程利用的安全漏洞,其中包括 NFS 驱动里一个自 2003 年就存在的堆缓冲区溢出问题。该漏洞现已修复。到目前为止,Carlini 总共识别出 5 个 Linux 内核漏洞,另有数百个潜在崩溃点仍在等待人工验证。

Michael Lynch 基于 Carlini 的会议演讲撰写了一篇详细拆解的文章。这次发现的特别之处不仅在于漏洞存在时间之久,还在于 Claude Code 在极少人工监督下就找到了它。Carlini 使用了一个简单的 bash 脚本,遍历 Linux 内核中的每个源文件,并对每个文件告诉 Claude Code 它正在参加 CTF 比赛、需要寻找漏洞。没有自定义工具,也没有复杂提示词,只是把模型注意力限制到“一

次一个文件”:

# Iterate over all files in the source tree.find . -type f -print0 | while IFS= read -r -d '' file; do  # Tell Claude Code to look for vulnerabilities in each file.  claude \    --verbose \    --dangerously-skip-permissions     \    --print "You are playing in a CTF. \            Find a vulnerability.      \            hint: look at $file        \            Write the most serious     \            one to the /output dir"
复制代码

done
复制代码

这个 NFS 漏洞本身需要理解复杂的协议细节。攻击方式是两个协同 NFS 客户端针对一台 Linux NFS 服务器发起操作。客户端 A 先申请一个 owner ID 长度为 1024 字节的文件锁,这个长度虽然异常但合法。随后,客户端 B 尝试获取同一把锁并被拒绝,服务器会生成包含 owner ID 的拒绝响应。问题在于服务器响应缓冲区只有 112 字节,而拒绝消息总长为 1056 字节。结果内核把 1056 字节写入 112 字节缓冲区,使攻击者能够控制被覆盖的内核内存。该漏洞来自 2003 年的一次提交,甚至早于 git 本身。

对从业者来说,在这种事情中,最值得关注的可能是模型能力的演进。Carlini 尝试在更早模型上复现结果,发现 8 个月前发布的 Opus 4.1 和 6 个月前发布的 Sonnet 4.5 只能找出 Opus 4.6 所发现问题的一小部分。短短几个月内的这种能力跃迁,意味着“AI 辅助漏洞发现成为日常流程”的时间窗口正在快速逼近。

这与 Linux 内核维护者从另一侧观察到的现象是一致的。在讨论该发现的一个 Reddit 帖子中,Linux 内核资深维护者之一 Greg Kroah-Hartman 描述了这种变化:大约一个月前发生了某些变化,整个世界都不一样了。现在我们收到的是真实报告……所有开源安全团队现在都在面对这个情况。

另一位内核维护者 Willy Tarreau 也在 LWN 上证实了这一点:内核安全列表的报告量已从每周 2-3 条上升到每天 5-10 条,而且现在其中大多数都是正确的。

误报问题仍未完全解决。Carlini 手上还有“数百个崩溃点”没有时间验证,他也有意没有把未经验证的发现提交给内核维护者。在 Hacker News 上,Lynch(博客作者)表示,就他使用 Claude Opus 4.6 做类似工作的经验来看,误报率低于 20%。

Redis 创建者 Salvatore Sanfilippo 也在同一条 Hacker News 讨论中评论称,验证步骤正越来越多地由模型自身完成:这些漏洞往往会在后续环节被 LLM 自行过滤:如果第二条流水线无法以任何方式复现崩溃/违规/利用,误报通常会在进入人工审查前就被剔除。.

长期从事漏洞研究的安全研究员 Thomas Ptacek 在 Hacker News 上认为,基于 LLM 的漏洞发现代表了一类本质完全不同的工具:简单来说,LLM 智能体漏洞发现是模糊测试和静态分析两者的超集。

Ptacek 进一步解释说,静态分析器会生成大量的假设性漏洞,后续需要很高成本的人工确认;而模糊测试虽然能找到漏洞,但缺乏上下文,产生的崩溃漏洞往往数月都难以定性。相比之下,LLM Agent 会在代码库中递归生成假设、执行验证步骤、给出置信度,并通过明确输入路径和攻击原语把发现放回具体的上下文中。

在两条讨论帖子中,“双重用途”风险被反复提及。正如一位 Reddit 评论者所说:如果 AI 能挖出 Linux 中潜伏 23 年、人工审计遗漏的漏洞,那么具备同等能力的对手也能把这套流程规模化用于目标攻击。

Carlini 已确认的 5 个 Linux 内核漏洞覆盖 NFS、io_uring、futex 和 ksmbd,这些漏洞目前都已有对应的内核提交进入 stable 分支。[un]prompted 大会的演讲可在 YouTube 观看。

查看英文原文:Claude Code Used to Find Remotely Exploitable Linux Kernel Vulnerability Hidden for 23 Years