MPTCP 引起的 Linux 内核 TCP 代码中的一个漏洞

来源: https://thehackernews.com/2026/10/linux-kernel-tcp-flaw-with-98-cvss.html

Linux 内核 TCP 代码中的一个漏洞(编号为CVE-2026-98432)会影响 Ubuntu、Red Hat Enterprise Linux (RHEL) 和其他 Linux 发行版。内核自身的 CVE 团队根据 CVSS 评分标准,将其评为 9.8 分(满分 10 分)。

10 月 27 日, Anthropic 公司表示,其 AI 模型编写了一个利用该漏洞的漏洞利用程序,允许没有凭据的远程攻击者在具有多路径 TCP 监听器的 Linux 服务器上以 root 身份运行命令。

截至10月29日,Ubuntu和RHEL尚未发布修复后的内核。Red Hat、Amazon、Oracle和SUSE对该漏洞的评分在5.9到8.1之间,低于内核团队给出的9.8分。

该缺陷是建立新的 IPv4 TCP 连接的代码中存在竞态条件。它会导致内核读取已释放的内存,这种错误类型被称为释放后使用 (use-after-free)。

内核修复程序将漏洞报告者归功于 Anthropic 的研究员 Xinyang Ge。无论是 CVE 记录还是修复程序本身,都没有提及多路径 TCP (MPTCP)。该漏洞与 MPTCP 的关联来自 Anthropic 的公告。

MPTCP允许一个连接同时使用多个网络路径。在 Linux 系统上,应用程序在打开套接字时必须请求 MPTCP。Go安全团队于 10 月 29 日表示,从 Go 1.24 版本开始,Go 程序默认会为其监听的套接字启用MPTCP。

Anthropic 的公告称,该漏洞“已在上游修复,并已移植到所有维护的稳定内核分支”。对于发行版用户而言,该修复程序仅包含在厂商提供的内核软件包中。Debian、Oracle Linux、SUSE 和 Amazon Linux 已发布了修复后的软件包(至少在其部分内核中如此),但 Ubuntu 和 RHEL 尚未发布。

哪些发行版有修复程序
分配 供应商评级 截至10月29日的情况 固定套餐或咨询
Ubuntu 22.04 LTS、24.04 LTS、26.04 LTS 和 26.10 高优先级 正在进行中 未发布
Ubuntu 16.04、18.04 和 20.04 高优先级 易受伤害的 未发布
RHEL 8、9 和 10,OpenShift 4 中等,5.9(CVE 页面)
重要,8.1( 公告文件) 做作的 未发布
RHEL 7 不适用 未受影响 不需要
Amazon Linux 2023,内核 6.18 软件包 重要,7.0 已于10月24日修复 kernel6.18-6.18.56-125.164.amzn2023 (ALAS2023-2026-3251)
Amazon Linux 2023,内核 6.12 软件包 重要,7.0 亚马逊已于 10 月 29 日发布公告修复此问题;但亚马逊的 CVE 页面仍显示“待定”。 kernel6.12-6.12.113-138.209.amzn2023 (ALAS2023-2026-3335)
Amazon Linux 2
Amazon Linux 2023,内核软件包 重要,7.0 待修复 未发布
Oracle Linux 7、8、9 和 10,UEK 内核 重要提示,8.1 已于10月16日修复 ELSA-2026-500397、ELSA-2026-500398、ELSA-2026-500399
Debian trixie(稳定版) 未列出分数 已于10月16日修复 linux6.12.113-1 ( DSA-6568-1 )
Debian 12(书虫) 未列出分数 已修复 10 月 17 日和 10 月 22 日 linux6.1.190-1 ( DLA-4841-1 )
linux-6.126.12.113-1~deb12u1 ( DLA-4850-1 )
SUSE Linux Micro 6.2,openSUSE Leap 16.0 重要提示,8.1 固定的 kernel-default6.12.0-160000.40.1 或更高版本
SLES 15 SP4 至 SP6 LTSS、SLES 16.0、SLE Micro 5.3 至 5.5 重要提示,8.1 在测试中 未发布
SLES 15 SP7 重要提示,8.1 受影响,正在修复中 未发布
Ubuntu 也将其云内核、FIPS 内核和实时内核列为存在漏洞或正在开发中的版本。10 月 29 日,Red Hat 表示其修复程序“目前推迟到未来的更新中”。到 10 月 30 日,Red Hat 将 RHEL 8、9 和 10 以及 OpenShift 4 列为受影响版本,而非“修复推迟”。Red Hat 和 Ubuntu 均未给出发布日期。

该漏洞的工作原理

竞争发生在 TCP 握手期间。连接建立完成后,内核会将存储在待处理请求中的 IP 选项传递给新的套接字,而不会进行复制。

如果在另一个 CPU 仍在使用该选项来响应重新连接请求时该套接字被销毁,内核将读取已释放的内存。

IPv6 不受此竞争条件的影响,因为内核会复制 IPv6 连接的选项。

该漏洞是在 Linux 4.4 中引入的。内核开发人员在 10 月 5 日应用了修复程序,比 CVE 发布早了十天。

该修复方案使内核等待其他 CPU 完成读取选项后再释放它们。

分数差异的原因

内核的 CVE 团队在 10 月 24 日将 9.8 分添加到 CVE 记录中,这是在发布 CVE 九天后。

该评分假设攻击者发送一个带有 IPv4 路由记录或时间戳选项的 TCP 连接请求,然后重新发送该请求以试图赢得竞争。该团队认为攻击复杂度较低,并表示竞争双方都是“攻击者造成的”。

研究团队表示,在这种情况下,该漏洞可能会将附近的内核内存发送回攻击者,损坏内核内存,或者导致系统崩溃。

截至 10 月 28 日,国家漏洞数据库(NVD) 尚未添加自己的评分,显示的是内核团队给出的 9.8 分。Ubuntu 的页面也显示了该评分。

红帽公司的 CVE 页面将此漏洞的严重程度评为“中等”,评分为 5.9 分,因为修复难度较大。页面指出,最可能的结果是内核崩溃,理论上也可能导致内存损坏,并且“尚未发现对机密性或完整性造成影响”。

红帽公司于 10 月 29 日更新的机器可读安全公告文件将该漏洞的影响等级列为“重要”,并对其机密性和完整性造成高度影响,评分为 8.1。红帽公司的漏洞跟踪系统也在同一天将该问题的严重性从“中”提升至“高”。当天,CVE 页面显示该漏洞的严重性等级为“中等”,评分为 5.9。

Oracle 和 SUSE 也给这个漏洞打了 8.1 分,使用的 CVSS 向量与 Red Hat 的安全公告文件中的相同。除了攻击复杂性之外,这些分数在所有指标上都与内核团队的评分一致;厂商对攻击复杂性的评分很高,而内核团队的评分很低。亚马逊的评分是 7.0 分。

Anthropic 声称它建造了什么

Anthropic公司在10月27日的一篇博文中描述了其人工智能模型Claude发现并利用的Linux漏洞。Hacker News于10月28日报道了该博文。Anthropic公司表示,Claude是在“初步提示”下编写了该漏洞利用程序。

该漏洞利用分两个阶段进行。首先,利用竞争条件诱使内核向攻击者发送额外的字节。一旦其中一个回复包含内核地址,攻击者就可以绕过内核内存地址随机化机制(KASLR)。

其次,同样的漏洞会导致缓冲区溢出,并将回调指针覆盖为攻击者已放置在内核内存中的有效载荷的地址。当内核调用该指针时,有效载荷会以 root 用户身份执行攻击者选择的 shell 命令。

该公司表示,即使攻击失败,也只会导致一次连接尝试失败,不会导致系统崩溃,因此攻击者可以继续尝试。在他们的测试中,泄露内核地址耗时48分钟,而执行命令则又耗时5分钟。

该帖子没有包含漏洞利用代码、内核版本或 Anthropic 测试的配置。

红帽公司表示,能够访问暴露的 TCP 服务的远程攻击者可能会触发竞争条件攻击。然而,Anthropic 的 root 漏洞利用针对的是具有多路径 TCP 监听器的服务器。该文章并未说明没有多路径 TCP 监听器的服务器是否也会受到同样的攻击。

截至10月29日,无论是厂商公告、CVE记录还是Anthropic公司发布的帖子,均未报告利用该漏洞发起的攻击。卢森堡CIRCL于10月28日更新的CISA已知已利用漏洞目录副本中也未出现该漏洞。

现在该怎么做

如果您的发行版已发布修复内核,请安装它。上表列出了 Debian、Oracle Linux、SUSE 和 Amazon Linux 的软件包和相关建议。

如果您自行编译内核,该修复程序已包含在 Linux 5.10.272、5.15.223、6.1.190、6.6.159、6.12.113、6.18.56、7.2.10 和 7.3 版本中。内核的 CVE 团队建议更新到最新的稳定内核。他们表示,内核社区不支持单独选择修复程序。

Ubuntu、RHEL 以及部分 Amazon Linux 和 SUSE 发行版目前还没有可安装的修复内核。Red Hat 表示,目前没有任何可用的缓解措施能够满足其易于部署、适用于大多数安装环境且稳定的标准。其他发行版的公告中也没有列出此类措施。

发行版的建议和 Anthropic 的帖子都没有说明关闭内核中的多路径 TCP 或阻止携带 IP 选项的传入连接请求是否会降低风险。

对于 Go 程序,Go 安全团队表示,GODEBUG=multipathtcp=0在程序的环境变量中添加相应设置会在运行时默认禁用 MPTCP。在godebug multipathtcp=0主模块的配置go.mod文件中添加相应设置会在构建时起到同样的作用,但调用该设置的代码SetMultipathTCP会覆盖这两种方法。

该团队称逐个程序地关闭 MPTCP 是一种脆弱的缓解措施。即使只有一个 MPTCP 监听器暴露在外,系统仍然会面临漏洞,而且这种方法假设所有有效的漏洞利用都依赖于 MPTCP。

该团队还表示,根本的漏洞并非 MPTCP 特有的,没有 MPTCP 监听器的系统也可能容易受到类似的攻击,最好的解决方法是升级到已打补丁的内核。

(本文已于 10 月 30 日更新,添加了 Go 安全团队针对 Go 程序的指导意见,并反映了 Red Hat 现在将 RHEL 8、9 和 10 以及 OpenShift 4 列为受影响版本,而不是“修复延期”。)