
Anthropic 的研究科学家Nicholas Carlini在安全会议上报告说,他使用 Claude Code 发现了 Linux 内核中多个可远程利用的安全漏洞,其中一个漏洞已经存在了 23 年之久。
Nicholas对使用AI发现这些漏洞的高效率感到震惊。“现在 Linux 内核中存在多个可远程利用的堆缓冲区溢出漏洞。 我这辈子从来没见过这种东西。如果是要人工发现这些漏洞真的非常非常难,但现在使用AI来处理,情况就不一样了。”
—— Nicholas Carlini 在会议上的讲话
Nicholas说,发现这个系统漏洞还不是最令人吃惊的。最令人惊讶的地方在于,Claude Code几乎不需要任何指导就能找到这个漏洞。他基本上只是让Claude Code查看Linux内核源代码,然后问:“安全漏洞在哪里?”
Nicholas使用的脚本很简单,类似于以下内容:
“用脚本告诉 Claude Code,用户正在参加网络安全竞赛,他们需要帮助解决一个未知漏洞。”
为了防止 Claude Code 反复发现同一个漏洞,该脚本会遍历 Linux 内核中的每个源文件,并告诉 Claude 该漏洞可能在文件 A 中,然后是文件 B,依此类推,直到 Claude 关注了内核中的每个文件。

Nicholas在他的演讲中重点介绍了Claude Code在 Linux 网络文件共享 (NFS) 驱动程序中发现的一个漏洞,该漏洞允许攻击者通过网络读取敏感的内核内存。
Nicholas选择这个漏洞是为了表明,Claude Code并非只是在寻找显而易见的漏洞或常见的模式。 这个漏洞要求人工智能模型理解NFS协议工作原理的复杂细节。
具体来说,该攻击只需要6步。攻击者使用两个相互协作的 NFS 客户端来攻击 Linux NFS 服务器:
(1)客户端 A 与 NFS 服务器进行三次握手,以开始 NFS 操作。(2)客户端 A 请求锁定文件。服务器接受请求,客户端确认接受。(3)客户端 A 获取锁并声明了一个 1024 字节的所有者 ID,这是一个异常长但合法的所有者 ID 值。服务器授予锁获取权限。(4)客户端 B 与 NFS 服务器进行三次握手以开始 NFS 操作,与上面的(1)相同。(5)客户端 B 请求访问与客户端 A 在(2)中访问的同一个锁文件。NFS 服务器接受请求,客户端确认接受。(6)客户端 B 尝试获取锁,但 NFS 服务器拒绝该请求,因为客户端 A 已经持有该锁。
问题在于,在步骤 (6) 中,当 NFS 服务器尝试生成对客户端 B 拒绝锁请求的响应时,它使用的内存缓冲区只有 112 字节。拒绝消息包含所有者 ID,其大小可达 1024 字节,使得消息总大小达到 1056 字节。内核会将 1056 字节写入一个 112 字节的缓冲区,这意味着攻击者可以利用步骤 (3) 中所有者 ID 字段中被其控制的字节来覆盖内核内存。
这就是典型的缓冲区溢出攻击。

这个漏洞是2003年3月在Linux内核中引入的:
“这个 bug 太老了,我甚至无法直接使用git下载,因为它早于 git,git 直到 2005 年才发布。” Nicholas说,他发现的漏洞多到都无法全部报告。
Nicholas在 Linux 内核中发现了数百个潜在的漏洞,但修复这些漏洞的瓶颈在于需要人工梳理AI的所有发现:
“Linux 内核中有很多 bug,但我无法报告,因为我还没有验证它们……我不会把潜在的问题提交给 “Linux 内核维护者”,但这意味着我现在有几百个他们还没看到的系统漏洞,因为我没有时间检查它们。” ——Nicholas在会议上说。
“我搜索了 Linux 内核,目前共披露和修复了五个 Linux 漏洞”。 Nicholas 要么直接修复了这些漏洞,要么将其报告给了 Linux 内核维护人员,其中一些漏洞的修复时间甚至就在上周。
Nicholas的演讲最引人注目之处在于,大语言模型在发现系统漏洞方面进步神速。
他使用 Anthropic 公司不到两个月前发布的 Claude Opus 4.6 发现了这些漏洞。当尝试在较旧的 AI 模型上复现结果时,发现 Opus 4.1(八个月前发布)和 Sonnet 4.5(六个月前发布)只能发现 Opus 4.6 所发现漏洞的一小部分。
“我预计在接下来的几个月里,将会出现一波大规模的安全漏洞被揭露出来,因为研究人员和攻击者都会意识到这些人工智能模型在发现安全漏洞方面有多么强大。”