💥 漏洞现场(有缺陷的旧内核):指针裸移交与提前平销
当客户端发来带 IP 选项的 SYN 包时,内核临时记账在 ireq_opt。三次握手完成瞬间,内核直接把原指针移交给新生的子套接字(inet_opt),却没有多复印一份。此时如果另一颗 CPU 正处理重传 SYN 并读这个指针,而子套接字由于网络关闭调用 kfree() 瞬间把内存碎纸撕掉,另一颗 CPU 就会直接读写已被释放的脏内存(UAF)!
2026 年 10 月,Linux 内核官方发布了一个评分高达 CVSS 9.8(严重/Critical)的高危漏洞 CVE-2026-98432。这个漏洞自 2016 年 Linux 4.4 引入无锁化半连接处理以来,已经在全球数十亿台 Linux 服务器、手机和物联网设备中潜伏了整整十年!攻击者只需向开放监听的 TCP 端口发送精心构造的重传 SYN 数据包,就能在内核握手流程中触发 UAF(释放后使用),进而实现远程内存泄露乃至 Root 权限代码执行。
基于 Akamai 安全分析、Ubuntu 安全公告与 Anthropic 红队披露深度拆解:看懂 TCP 三次握手背后的 Request Socket、未深拷贝的 IP 选项指针、RCU 宽限期缺失导致的竞态释放、MPTCP 致命放大效应与全平台热补丁防御。
当客户端发来带 IP 选项的 SYN 包时,内核临时记账在 ireq_opt。三次握手完成瞬间,内核直接把原指针移交给新生的子套接字(inet_opt),却没有多复印一份。此时如果另一颗 CPU 正处理重传 SYN 并读这个指针,而子套接字由于网络关闭调用 kfree() 瞬间把内存碎纸撕掉,另一颗 CPU 就会直接读写已被释放的脏内存(UAF)!
修改极度简单却直切要害:将直接物理销毁的 kfree(inet_opt) 替换为带异步宽限期的 kfree_rcu(inet_opt, rcu)!只要全网其他 CPU 还有任何人在拿着这个指针组装 SYNACK,内存就绝对不销毁,直到所有读者平安退出后才在后台悄然回收。
在 Linux 4.4 之前,处理握手必须死死锁住监听套接字(Listener Lock)。为了追求百万级高并发吞吐,内核引入了无锁哈希查找。然而并发性能提升的同时,请求套接字(Request Socket)彻底失去了全局排他保护,为两颗 CPU 的并发竞态撕开了一道致命缝隙。
性能的狂飙往往在不经意间放大了纳秒级时间差的杀伤力。
在握手完成调用 tcp_v4_syn_recv_sock() 时,内核为了省内存,直接将原指针赋给新生子套接字,却没有做深拷贝(Deep Copy)。令人啼笑皆非的是:IPv6 的实现从第一天起就老老实实做了选项完整复制,因此完全不受此漏洞影响!
一念之差的微小内存优化,在十年后演变为了全网高危漏洞。
单纯的 UAF 往往只会导致内核蓝屏死机(Panic)。然而 Anthropic 前沿红队在 2026 年 10 月 27 日公开证实:在开启多路径 TCP(MPTCP)监听的服务器上,该漏洞可以直接被编织为 100% 稳定的远程无鉴权 Root 执行!更危险的是,Go 语言自 1.24 起在 Linux 上默认激活了 MPTCP 监听!
多个现代软件栈的默认配置无意间让攻击链达成了完美闭环。
点击下方步骤,看并发数据包如何在多核 CPU 之间引发时序混乱:
注:本探针严格按照 Linux 内核 commit 修复记录与 Akamai / Anthropic 红队披露报告构建。
上游已正式合入 Linux 7.3。主流长期支持分支修复版本为:5.10.272、5.15.223、6.1.190、6.6.159、6.12.113、6.18.56、7.2.10。Debian、SUSE、Oracle Linux 已推送热更,应第一时间执行 apt upgrade 或 dnf update 并重启。
如果业务由于高可用无法立即重启宿主机,可在边界防火墙(iptables/nftables)下发规则,直接丢弃携带特定 IPv4 选项(如 Record Route 或 Timestamp)的入站 SYN 报文,阻断攻击触发的前置条件。
由于稳定 RCE 严重依赖 MPTCP 内存结构,对于暂未升级且暴露在公网的高危业务机,可通过 sysctl -w net.mptcp.enabled=0 或黑名单拉黑 mptcp 内核模块,拆解黑客的提权利用链跳板。
| 技术指标与维度 | 官方公报与安全基准数据 | 通俗影响与防护要领 |
|---|---|---|
| 漏洞类型与编号 | CVE-2026-98432(CWE-416: Use-After-Free 释放后使用) | 远程未授权内存竞争破坏,属于破坏力顶格的安全隐患 |
| CVSS 3.1 严重性评分 | 9.8 / 10.0(Critical 严重) | 网络可达、无需权限、无需交互、机密性/完整性/可用性全损 |
| 波及内核版本范围 | Linux 4.4 起直至各维护分支修复版本发布之前 | 横跨十年版本;5.10、5.15、6.1、6.6、6.12 等全线中招 |
| 受阻攻击向量条件 | 未修补的内核 + 暴露的 IPv4 监听端口 + 携带 IP 选项重传 | 在 MPTCP 监听(如 Go 1.24+ 默认应用)下可演变为远程代码执行 |
| 代码层根因修复 | inet_sock_destruct() 改用 kfree_rcu() 代替 kfree() |
强制内核等待所有正在读取选项的并发 CPU 退出后才安全释放 |
“CVE-2026-98432 再次向全球软件工业敲响了警钟:在支撑着现代文明底座的巨型 C 语言内核中,哪怕只是少写了一个字符的复制、少等了一个纳秒的读写锁,也能在十年后的某一刻,被远程对手编织成席卷全球的致命风暴。”
保持敬畏,迅速核查生产环境内核版本,在补丁尚未全面覆盖的空窗期筑牢防线,是每一位运维与安全工程师当下的第一要务。