Linux TCP漏洞升至9.8分

示意图:网络接头的缺口以正红标出,象征Linux握手代码中的网络安全漏洞

红帽 11 月 2 日把 Linux 内核漏洞 CVE-2026-98432 的 CVSS 评分提到 9.8,此前它给过 5.9 到 8.1 不等的分数,并在 11 月 1 日放出 RHEL 8、9、10 的修复内核。Ubuntu 的状态还是修复进行中。

这个漏洞在 IPv4 TCP 的连接建立流程里,从网络侧就能触发,不需要认证,也不需要用户操作。受影响范围从 Linux 4.4 算起,根子要追到 2015 年的一次提交。

两行代码修掉的竞争条件

SYN 包如果带 IPv4 选项(比如 Record Route、Timestamp),内核会把它们存在请求 socket 上。握手完成时,这块内存的指针被直接交给子 socket,没有复制,两边共用一份。

此时如果另一颗 CPU 正因为重传的 SYN 在构造 SYN-ACK,而子 socket 恰好被销毁,选项内存就会被 kfree() 立刻释放,构造 SYN-ACK 的路径读到的已是释放后的内存。

修复由 Eric Dumazet 提交,commit 为 e3f33b0a1d89,把 kfree() 换成 kfree_rcu(),等 RCU 宽限期过后再释放,只动两行。漏洞报告者是 Anthropic 的 Xinyang Ge。CVE 记录 10 月 15 日发布,稳定分支的修复版本是 5.10.272、5.15.223、6.1.190、6.6.159、6.12.113、6.18.56 和 7.2.10,主线在 7.3。

Anthropic 的说法只有它自己能证

让这个漏洞受关注的是 10 月 27 日 Anthropic Frontier Red Team 的一篇文章。文章称,一个未发布的内部模型为它写出了利用程序,能在开着 MPTCP 监听的服务器上,让未认证的远程攻击者以 root 身份执行命令。

利用分两段:先借竞争条件越界读内核内存,泄露指针、绕过 KASLR;再用越界写覆盖回调函数指针。Anthropic 给出的耗时是泄露指针约 48 分钟,再过约 5 分钟拿到命令执行。

这里有几处要分开看。利用代码、测试用的内核版本和配置都没有公开,目前没有第三方验证;CVE 记录和修复提交都没提到 MPTCP,文章也没解释为什么必须有它;53 分钟是未知环境下的数字,不能直接套到线上服务器。截至 11 月 2 日,没有厂商、CERT 或内核 CVE 团队报告在野利用,CISA 的已知被利用漏洞目录也没收录。

部分中文传播里写的“Anthropic 已公布利用示例”,准确地说是公布了利用过程的描述,没有放出可运行的代码。

评分上的分歧也还在。内核 CVE 团队和红帽现在给 9.8,Oracle、SUSE、Amazon 给 8.1,差别在于把攻击复杂度评成低还是高。NVD 尚未给出自己的分数。

Go 把前提条件变成了默认值

10 月 29 日 Go 安全团队的公告让影响面变大了。从 Go 1.24 起,multipathtcp 的默认值是 2,意思是只在监听端启用 MPTCP。也就是说,用 net.Listen 起服务的 Go 程序,默认就满足 Anthropic 演示的那个前提。

Go 团队给的缓解办法是运行时设 GODEBUG=multipathtcp=0,或者在主模块的 go.mod 里写 godebug multipathtcp=0,同时把这种逐个程序关闭的做法称为 “a fragile mitigation”(一种脆弱的缓解手段)。Go 团队认为现在改默认值为时过早。内核侧可以把 net.mptcp.enabled 设为 0,这只是去掉了演示过的前提,漏洞本身还在。

国内运维可以先做什么

各发行版的状态(部分为 10 月 29 日、部分为 11 月 2 日检查结果)大致是:

发行版状态
RHEL 8、9、10已修复
RHEL 9 real-time、OpenShift 4受影响,暂无修复
RHEL 7不受影响
Debian 12、13已修复
Ubuntu 22.04、24.04、26.04、26.10受影响,修复进行中
Ubuntu 16.04、18.04、20.04受影响,暂无修复
Amazon Linux 2、2023已修复
Oracle Linux(UEK)已修复

云主机用户里 Ubuntu 占比不低,这张表里最需要盯的就是它。发行版大多靠回移补丁修复,所以判断是否修好要对照自家安全公告里的包版本,只看 uname -r 的主版本号容易看错。装完新内核要重启,热补丁是另一套机制,得单独确认。

暂时等不到补丁的机器,可以先盘点有哪些服务在监听 MPTCP,尤其是 Go 1.24 以后编译的二进制,再决定是否按上面的办法关掉。厂商没有确认关闭 MPTCP 能消除全部风险,这一步只算争取时间。内核崩溃日志里如果出现 ip_options_build 这类函数,也应该查一下。

参考来源:Anthropic Frontier Red Team 文章的公开转述、Rescana 漏洞通报、CocoLoop、Go 安全团队公告、Debian 与红帽安全跟踪页;评分与发行版修复状态以各厂商公布口径为准,Anthropic 的利用细节未经独立验证。