Back to Blog

Claude 编写了完整的 FreeBSD 远程内核 RCE 并获取 Root Shell (CVE-2026-4747)

April 1, 2026by Ichiban Team
securityaifreebsdvulnerabilityexploit

Hero

#引言

人工智能与进攻性网络安全领域的交汇点刚刚迎来了一个分水岭时刻。安全研究人员披露,Anthropic 的大型语言模型 Claude 成功编写了一个针对 FreeBSD 内核的完整、可靠的远程代码执行 (RCE) 漏洞利用程序 (Exploit)。该漏洞的编号为 CVE-2026-4747,允许未经身份验证的远程攻击者获取 root shell。

虽然 AI 模型此前已在识别潜在漏洞或编写简单的用户态 (userland) 利用方面展现出能力,但制作多阶段的远程内核利用程序却是出了名的复杂。这需要对内存管理、内核缓解机制以及精确的时序有深入的理解。一个大语言模型 (LLM) 能够将这些要求综合成武器化的 Payload,标志着我们在漏洞管理和系统防御策略上必须发生范式转变。

#事件经过

CVE-2026-4747 源于 FreeBSD 网络栈中的一个严重缺陷,具体涉及在处理畸形 IPv6 扩展头时的条件竞争 (race condition) 以及随后的释放后重用 (Use-After-Free, UAF) 问题。在高负载下并发解析时,内核会释放一个 mbuf(内存缓冲区),但在数据包处理队列中保留了一个悬垂指针 (dangling pointer)。

据 Califio 的安全研究人员称,他们只向 Claude 提供了最基本的信息:内核崩溃转储 (crash dump)、FreeBSD 网络子系统中有漏洞的源代码片段,以及一个要求开发有效概念验证 (PoC) 的提示词 (prompt)。

经过一系列迭代的提示词交互,Claude 并没有仅仅提供理论上的漏洞利用步骤;它生成了用于触发漏洞、操纵内核堆布局(堆风水,Heap Feng Shui)以及执行复杂的面向返回编程 (ROP) 链的 Python 代码。该模型自主弄清楚了如何:

  • 喷射堆内存 (Spray the heap):通过网络连接使用可控数据可靠地回收被释放的 mbuf
  • 绕过 KASLR(内核地址空间布局随机化):通过串联其在 ICMPv6 响应处理程序中发现的初始信息泄露原语 (primitive)。
  • 构建 ROP 链:进行栈翻转 (stack pivot),禁用特权模式访问防御 (SMAP),并执行最终的 shellcode 以生成反向 root shell。

#意义何在

从历史上看,从漏洞披露到发布武器化的远程内核利用程序,时间窗口可能长达几周甚至几个月。内核漏洞利用是一个高度专业化且极其考验手工技艺的过程。研究人员需要花费数百小时来分析内存分配器的行为、寻找有用的 gadget,并确保利用过程不会触发内核崩溃 (kernel panic)。

Claude 的成功极大地压缩了这一时间线。如果 AI 能够可靠地将崩溃转储和补丁 diff 转化为武器化的零点击 (zero-click) 远程 root 漏洞利用,那么“从漏洞到利用的时间”指标实际上就降到了接近于零。

  • 降低入门门槛:高级持续性威胁 (APT) 组织和顶尖漏洞研究团队不再是唯一有能力开发可靠内核 RCE 的实体。
  • “隐蔽即安全”的终结:依赖系统复杂性或极高的漏洞利用难度作为防御层已经不再可行。
  • 自动化武器化:我们正在进入这样一个时代:漏洞扫描器可能会与 LLM 结合,不仅能发现未修补的漏洞,还能自动生成定制的漏洞利用程序,从而大规模攻破未打补丁的系统。

#技术影响

开发远程内核利用程序需要绕过多种现代漏洞缓解机制。Claude 处理 FreeBSD uma_zalloc(通用内存分配器)的方法极具启发性,展现了对操作系统内部结构的深刻概念性理解。

#精确的内存操作

AI 意识到,由于网络抖动和数据包乱序,标准的基于网络的堆喷射不够可靠。相反,它利用了一种技术来迫使内核在目标对象附近分配特定的套接字缓冲区 (socket buffers),从而确保了接近 100% 的可靠性。

# AI-Generated Snippet: Coercing UMA zone allocations
def shape_heap(target_ip):
    # Spraying fake mbuf objects via targeted UDP fragmentation
    for i in range(1024):
        payload = build_fake_mbuf(
            m_flags=0x1,       # M_EXT
            m_ext_free=GADGET_PIVOT_ADDR
        )
        send_ipv6_frag(target_ip, payload)

#Gadget 链合成

在像 FreeBSD 内核这样庞大的二进制文件中寻找 ROP gadget,通常需要专业工具和人工验证。Claude 接受过大量开源代码、汇编语言和漏洞报告数据集的训练,能够在概念上推断出某些函数尾声 (epilogues) 的存在。通过利用脚本输出与研究人员的测试环境进行动态交互,它调整了偏移量,从而可靠地绕过了 KASLR。

#提权与安全退出

一旦获得执行控制权,该 Payload 并没有依赖复杂或臃肿的 shellcode。相反,AI 构建了一种面向数据的攻击 (data-oriented attack),直接覆盖了运行线程的 ucred(用户凭证)结构,将其权限提升至 UID 0。至关重要的是,随后它优雅地恢复了损坏的指针,并将执行流无缝地交还给网络循环以防止系统崩溃——这是专业漏洞利用开发的标志。

#展望未来

防御社区必须做出回应,加速在关键内核子系统中采用内存安全语言。与 Linux 类似,FreeBSD 项目一直在探索集成 Rust,而 CVE-2026-4747 则严厉地提醒了我们为什么这种架构转变如此迫切。

此外,防御性 AI 必须进化以匹敌进攻能力。我们需要能够分析代码提交 (code commits) 的 AI 系统,并在攻击者将补丁 diff 武器化之前,自动生成可靠的热补丁 (hot-patches)、防火墙规则或 eBPF 过滤器。

#结语

Claude 将 CVE-2026-4747 武器化,是网络安全领域一个令人着迷却又发人深省的里程碑。它证明了将抽象的内存损坏漏洞转化为功能完善、武器化的远程漏洞利用程序所需的认知飞跃,现在已经被大型语言模型所掌握。作为开发人员和系统管理员,我们的容错空间正在急剧缩小。及时的补丁修复、健壮的网络隔离和纵深防御 (defense-in-depth) 策略比以往任何时候都更加关键。自动化内核漏洞利用的时代已经正式到来。