漏洞档案

字段 内容
CVE 编号 CVE-2026-64564
漏洞名称 SCTPhantom
漏洞类型 Use-After-Free(释放后使用)
影响组件 Linux 内核 SCTP 协议栈
引入版本 Linux 2.6.25(2008 年 12 月)
修复版本 7.1.6 / 6.18.42 / 6.12.101 / 6.6.148(2026 年 8 月 3 日)
披露方 腾讯朱雀实验室 Corvus AI
攻击前提 本地普通用户权限
危害 本地提权至 root;特定配置下可逃逸容器获取宿主机 root

SCTP 与动态地址重配置

SCTP(Stream Control Transmission Protocol)是一种传输层协议,最初由 IETF 于 2000 年标准化,设计目标是在 IP 网络上承载电话信令。相比 TCP,SCTP 支持多宿主(multi-homing)和多流(multi-streaming),在电信和运营商网络中有广泛部署。

动态地址重配置(Dynamic Address Reconfiguration)是 SCTP 的一个扩展特性,允许在已建立的关联(association)中动态添加或删除 IP 地址,而无需重建连接。该功能通过 ASCONF(Address Configuration Change Chunk)块实现,客户端可以向对端发送 ADD-IP 或 DEL-IP 请求来修改关联的地址列表。

漏洞就出在 DEL-IP 操作的地址校验逻辑中。

根因分析

内核在处理 ASCONF chunk 中的 DEL-IP 请求时,会先对请求删除的地址做身份校验——检查该地址是否属于当前关联的传输路径(transport)。校验通过后,内核会释放对应的 asconf->transport 结构体。

问题在于,同一个 ASCONF chunk 内可以包含多个 DEL-IP 操作。攻击者可以构造一个精心设计的操作序列:

  1. 先发送一个具体地址的 DEL-IP,通过地址检查后释放 asconf->transport
  2. 紧接着发送一个通配符(wildcard)DEL-IP,该分支不会重新校验地址有效性,而是直接复用已释放的 asconf->transport 指针

这就形成了一个典型的 UAF:asconf->transport 被释放后,通配符分支仍然持有这个悬空指针并对其进行读写操作。

从代码层面看,修复补丁只改动了 6 行——核心是在通配符 DEL-IP 分支中增加了对 asconf->transport 有效性的检查,避免重用已释放的指针。一个存在了 18 年、经历数百个内核版本迭代、数千名开发者审查的漏洞,最终只需要 6 行代码修复,这在内核安全领域并不罕见。

利用思路

UAF 漏洞的利用通常遵循”释放—占位—重写”的经典套路:

  1. 触发释放:通过上述 ASCONF 序列释放 transport 结构体
  2. 堆喷占位:在释放后的内存位置上喷射可控内容,重新占用该内存页
  3. 悬空指针复用:利用通配符 DEL-IP 分支持有的悬空指针,对已被占位的内存进行读写
  4. 篡改内核对象:通过任意读写原语篡改 cred 结构体或 uid/gid 字段,将当前进程权限提升为 root

在容器场景下,由于容器与宿主机共享同一个内核,一旦获得内核任意读写原语,攻击者可以直接修改容器进程的 namespace 指针或 cgroup 相关结构体,突破容器隔离边界。测试中,即使在默认 seccomp 限制下、未授予容器 CAP_NET_ADMIN 或 CAP_SYS_ADMIN 权限,攻击仍然可以成功——8 次测试中 6 次成功完成容器逃逸。

需要注意的是,SCTP 协议在很多服务器发行版中默认是编译为模块的。如果系统未加载 sctp 内核模块,攻击者需要先触发模块自动加载(例如通过创建 SCTP socket),这在大多数默认配置下是允许的。

修复与缓解

上游修复已合入主线,并 backport 到多个稳定分支。建议尽快升级到以下版本:

  • Linux 7.1.6 及以上
  • Linux 6.18.42 及以上
  • Linux 6.12.101 及以上
  • Linux 6.6.148 及以上

无法立即升级的环境,可以考虑以下缓解措施:

  • 禁用 SCTP 模块加载:在 /etc/modprobe.d/ 中添加 install sctp /bin/true
  • 通过 seccomp 过滤 socket(AF_SCTP, ...) 系统调用
  • 容器环境中限制 CAP_NET_ADMIN 权限(虽然测试表明该漏洞在默认权限下仍可利用,但减少攻击面始终有价值)

参考链接