当一个漏洞在 Linux 内核中潜伏 23 年之久,最终被人工智能工具发现时,整个安全社区都为之一震。Anthropic 研究科学家 Nicholas Carlini 在 2026 年 [un] prompted 安全会议上分享了这一里程碑式发现:Claude Code 在没有任何人工引导的情况下,自动扫描 Linux 内核源码并发现了一个可远程利用的堆缓冲区溢出漏洞,该漏洞自 2003 年起就存在于 NFS 驱动程序中。这一突破不仅展示了现代大语言模型在代码审计领域的巨大潜力,更为安全研究人员提供了一套可复制的 AI 辅助漏洞挖掘工程方法论。
漏洞发现的核心机制
Carlini 使用的检测方法出奇地简单,却极其有效。他编写了一个自动化脚本,让 Claude Code 扮演 CTF(Capture The Flag)竞赛参赛者的角色,逐个文件地扫描 Linux 内核源码寻找安全漏洞。脚本的核心逻辑是使用find命令遍历内核源码树中的每一个文件,然后将当前文件路径作为提示词传递给 Claude Code,要求其找出该文件中最严重的安全漏洞并写入报告文件。这种方法的关键在于通过改变提示词中的文件路径,强制模型将注意力分散到整个代码库的各个部分,避免其反复分析同一处代码而忽略其他潜在漏洞。
脚本的具体实现利用了 Claude Code 的命令行参数--dangerously-skip-permissions来绕过权限检查,同时配合--print参数直接输出分析结果。整个过程几乎不需要人工干预,Carlini 只需向模型发出 “在哪里存在安全漏洞?” 这样简单的指令,剩下的工作就由 AI 自动完成。这种 “设定场景 + 聚焦文件” 的双层提示策略极大地提高了漏洞发现的覆盖率和效率。
值得注意的是,Carlini 选择的 CTF 场景设定并非随意之举。在 CTF 比赛中,参赛者需要寻找特定类型的安全漏洞来 “解题”,这种任务导向型的提示能够激发模型更深入地分析代码逻辑,而非泛泛地进行表面审查。同时,告诉模型这是一个竞赛而非真实的代码审计任务,能够有效降低模型的保守倾向,使其更敢于标记潜在的异常模式。
23 年漏洞的技术剖析
被发现的这个漏洞位于 Linux 内核的 NFS(网络文件系统)驱动中,是一类经典的堆缓冲区溢出问题。漏洞的技术细节揭示了为什么它能够逃脱人类开发者长达二十余年的审查:当 NFS 服务器接收到客户端的锁请求请求时,如果该锁已被其他客户端持有,服务器需要生成一个 “锁拒绝” 响应报文。在这个响应报文中,必须包含请求该锁的客户端标识信息(owner ID),而这个 owner ID 的长度是可变的,最大可达 1024 字节。
问题的关键在于,NFS 服务器在构造拒绝响应时使用了一个固定大小仅为 112 字节的缓冲区。当一个持有 1024 字节 owner ID 的客户端尝试获取锁,随后另一个客户端尝试获取同一锁而遭到拒绝时,服务器需要将包含 1024 字节 owner ID 的拒绝消息写入仅 112 字节的缓冲区,造成 1056 字节的数据溢出。攻击者可以通过精心构造的第一个客户端请求来控制溢出数据的具体内容,从而实现对内核内存的任意写入。
这个漏洞的隐蔽性在于它需要多个复杂的交互步骤才能触发。首先,攻击者需要建立一个 NFS 客户端连接并获取一个带有超长 owner ID 的锁;然后启动第二个 NFS 客户端尝试竞争同一锁;最后服务器在生成拒绝响应时才会触发溢出。这种涉及状态机和多步骤交互的漏洞模式,传统的静态分析工具往往难以捕捉,而 Claude Code 通过理解 NFS 协议的状态转换逻辑,成功识别了这一问题。
AI 漏洞挖掘的工程参数清单
基于 Carlini 的实践经验,可以总结出一套可复制的 AI 辅助漏洞挖掘工程参数。首先是提示工程层面的配置:采用任务导向型场景设定(CTF 竞赛解题而非代码审查)能够显著提升模型发现漏洞的积极性;通过分文件遍历策略确保整个代码库被完整覆盖,避免重复分析同一位置;提示词中应包含 “找到最严重的漏洞” 这类引导性表述,促使模型优先输出高危发现而非泛泛列出所有潜在问题。
在自动化流程层面,推荐使用find命令配合while循环实现源码文件的批量处理,文件路径通过变量传递以实现动态聚焦;利用--dangerously-skip-permissions参数可在无需交互确认的情况下完成大规模自动化扫描;输出结果应重定向至专用报告文件,便于后续人工复核。需要特别注意的是,这种自动化扫描会产生大量的潜在漏洞报告,后续的人工验证环节往往成为整个流程的瓶颈 ——Carlini 本人就表示他发现了数百个潜在漏洞,但由于缺乏足够时间进行人工验证,许多漏洞尚未向维护者报告。
在模型选择方面,Carlini 的对比实验表明模型版本对漏洞发现能力有显著影响。Claude Opus 4.6 能够发现比 4.1 版本更多的漏洞,而 4.1 版本又远超 Sonnet 4.5 的表现。这说明在漏洞挖掘场景中,使用最新版本的推理模型能够获得更好的效果。随着模型能力的持续提升,预计 AI 工具发现安全漏洞的效率将继续呈指数级增长。
安全研究的新范式
这一发现标志着 AI 辅助安全研究进入了一个新阶段。在过去,发现内核级别的可远程利用漏洞通常需要资深安全研究员投入数月乃至数年的精力,而大语言模型将这一时间大幅缩短。更重要的是,AI 工具发现的是真实可利用的漏洞,而非无关紧要的代码缺陷 ——Carlini 明确表示他发现的是 “可以远程利用的堆缓冲区溢出”,这是安全影响最高漏洞类别之一。
然而,这一技术进步也带来了双刃剑效应。正如 Carlini 在演讲中警示的,攻击者同样可以利用这些 AI 工具来发现漏洞。在未来的安全格局中,AI 辅助的漏洞发现将成为常态,无论是防御者还是攻击者都在同一条起跑线上。对于安全社区而言,这意味着需要重新审视漏洞披露流程,建立更快速的补丁响应机制,同时也要思考如何利用 AI 工具来增强整体的防御能力。
从工程实践角度看,Claude Code 在 Linux 内核漏洞发现中的成功证明了大语言模型在代码审计领域的实用价值。其方法论的精髓不在于复杂的工具链,而在于巧妙的提示设计 —— 通过场景设定激发模型的深层分析能力,通过分而治之的策略实现全覆盖扫描。这种 “少即是多” 的工程哲学,对于希望在安全研究中引入 AI 能力的团队具有重要的参考意义。
参考资料
- Nicholas Carlini 在 [un] prompted 2026 会议上的演讲:Black-hat LLMs at [un]prompted 2026
- 漏洞修复提交记录:nfsd: fix heap overflow in NFSv4.0 LOCK replay cache