2026年10月,Linux内核中发现了一个严重漏洞CVE-2026-98432,其CVSS评分为9.8分(满分10分)。该漏洞会影响IPv4 TCP传入连接的处理方式,在特定条件下,攻击者无需密码,也无需管理员采取任何操作,即可远程获得服务器的root权限。
以下内容说明了哪些用户会受到影响、如何检查您的服务器以及如何保护它。所有命令均以 root 用户身份运行。 sudo.
漏洞简述
- 它是什么: 代码中存在一个释放后使用漏洞,该漏洞存在于建立 IPv4 TCP 连接的过程中,由竞争条件引起。攻击者可以向任何开放的 TCP 端口发送特制数据包。
- 受影响的内核: 自 Linux 4.4 以来的每个版本,这意味着几乎所有当前的发行版。
- IPv6 不受主要漏洞的影响。
- 威胁的真实程度: 人类学研究人员演示了一条有效的漏洞利用链,该漏洞利用链在大约 53 分钟内获得了启用了多路径 TCP (MPTCP) 的服务器的 root 权限。该漏洞利用代码尚未公开。
- 野外袭击事件: 截至2026年11月1日,尚未有任何滥用报告。因此,我们应该冷静地进行更新,而不是推迟更新。
Go 服务存在一个特殊的风险。自 Go 1.24 版本起,Linux 上的服务器程序默认会通过 MPTCP 协议监听端口(只要内核允许)。管理员甚至可能不知道他们的服务器接受此类连接。流行的程序 Xray 就是这样工作的——其开发者已经发布了紧急版本 v26.10.31,该版本默认禁用 MPTCP。
每个VPS运行着自己的内核,因此您需要自行更新服务器内部的内核。我们会自行更新虚拟化节点。
你的系统有修复方案吗?
截至 2026 年 11 月 1 日的最新情况。修复程序几乎每天都在推出——请查看本文末尾的链接以了解当前状态。
| 系统 | 状态 | 修复内核 |
|---|---|---|
| Debian 13的 | 固定 | linux 6.12.113-1 |
| Debian 12的 | 固定 | linux 6.1.190-1 |
| Ubuntu 22.04、24.04、26.04 | 修复进行中 | 还没到时候——先用临时保护措施。 |
| AlmaLinux 8、9、10 | 修复测试仓库 | 8: 4.18.0-553.180.2.el8_10 9: 5.14.0-687.61.2.el9_8 10: 6.12.0-211.69.2.el10_2 |
| Rocky Linux、RHEL 8、9、10 | 尚未修复 | 使用临时防护措施 |
| Oracle Linux 7–10 (UEK) | 固定 | 通过标准更新 |
| SUSE / openSUSE Leap 16 | 固定 | 通过标准更新 |
步骤 1. 检查您正在运行的内核版本
找出正在运行的内核版本:
uname -r
单凭版本号无法提供任何信息:发行版会将修复程序移植到自己的内核中,而不会更改基础版本。更可靠的方法是查看内核软件包的变更日志——如果日志中提到了 CVE 编号,则表示该修复程序已安装。
Debian 和 Ubuntu:
apt changelog linux-image-$(uname -r) 2>/dev/null | grep CVE-2026-98432
在 Debian 系统上, uname -v 该命令还会显示正在运行的内核的完整软件包版本:请将其与上表进行比较。
AlmaLinux、Rocky Linux、RHEL、Oracle Linux:
rpm -q --changelog kernel-core-$(uname -r) | grep CVE-2026-98432
如果该命令没有输出任何内容,则正在运行的内核存在漏洞。
接下来,检查哪些服务接受通过 MPTCP 建立的连接。类似这样的服务器是本次演示攻击的目标:
ss -lnMp
输出为空表示没有 MPTCP 监听器。
步骤 2:安装修复后的内核
更新内核前,请先备份服务器或创建服务器快照。
Debian 12 和 13
修复后的内核位于安全存储库中。请确保已启用该存储库:
grep -r security.debian.org /etc/apt/sources.list /etc/apt/sources.list.d/
如果未找到任何内容,则添加 security.debian.org 将版本发布到仓库。然后更新系统:
apt update
apt full-upgrade
reboot
Ubuntu
修复后的内核尚未发布。请检查更新:
apt update
apt list --upgradable | grep linux-image
如果您的服务器使用的是 Ubuntu Pro 系统,您可以查看修复方案:
pro fix CVE-2026-98432 --dry-run
修复程序发布后,请安装并重启:
apt update
apt full-upgrade
reboot
在此之前,请务必按照步骤 3 进行临时保护。
AlmaLinux 8、9、10
目前,修复后的内核仅在测试仓库中提供。如果您熟悉生产服务器的操作,请安装这些内核,并在更新前务必创建系统快照:
dnf install -y almalinux-release-testing
dnf update 'kernel*' --enablerepo=almalinux-testing
dnf config-manager --disable almalinux-testing
reboot
重启后,进行比较 uname -r 使用上表中列出的版本。如果您不想安装测试软件包,请先应用临时保护措施,等待修复程序更新到主仓库。
Rocky Linux 和其他基于 RHEL 的系统
目前还没有修复方案。您可以关注以下操作:
dnf --refresh updateinfo info --all --cves CVE-2026-98432
修复程序发布后:
dnf update kernel
reboot
更新后:需要重启。
新内核只有在重启后才会生效。要检查是否需要重启:
# Debian and Ubuntu
[ -f /var/run/reboot-required ] && echo "Reboot required"
# AlmaLinux, Rocky, RHEL
needs-restarting -r
重启后,从步骤 1 开始重复检查。
步骤 3. 临时保护,直到修复后的内核可用
这些措施可以降低风险,但不能替代内核更新。
阻止触发数据包
该攻击利用在 IPv4 头部带有 IP 选项的 TCP 数据包。这些数据包几乎不会出现在正常流量中,RFC 7126 也建议丢弃它们。以下 nftables 规则会丢弃所有带有选项的入站 IPv4 TCP 数据包,并且不会影响 IPv6、UDP 或 ICMP 协议。它可与 ufw 和 firewalld 配合使用。
如果尚未安装 nftables,请安装它:
# Debian and Ubuntu
apt install -y nftables
# AlmaLinux, Rocky, RHEL
dnf install -y nftables
创建规则文件:
cat > /etc/cve-2026-98432.nft <<'EOF'
table ip cve_2026_98432 {
chain pre {
type filter hook prerouting priority -300; policy accept;
meta l4proto tcp ip hdrlength gt 5 counter drop
}
}
EOF
为确保每次重启后规则都能恢复,请创建 systemd 服务:
cat > /etc/systemd/system/cve-2026-98432.service <<'EOF'
[Unit]
Description=Mitigation for CVE-2026-98432
After=network-pre.target nftables.service firewalld.service ufw.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=-/usr/sbin/nft delete table ip cve_2026_98432
ExecStart=/usr/sbin/nft -f /etc/cve-2026-98432.nft
ExecStop=/usr/sbin/nft delete table ip cve_2026_98432
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
systemctl enable --now cve-2026-98432.service
检查规则是否已加载:
nft list table ip cve_2026_98432
如果使用全局命令重启 nftables 服务 flush ruleset 规则,运行 systemctl restart cve-2026-98432 之后。
重要提示:请勿将此规则应用于使用 CIPSO 标签(SELinux 或 Smack NetLabel)的网络——这些网络通常会使用 IP 选项。如果您的服务器为其他机器路由流量,则此规则也会丢弃这些机器带有 IP 选项的 TCP 数据包。
如果不需要,请禁用 MPTCP。
sysctl -w net.mptcp.enabled=0
echo "net.mptcp.enabled = 0" > /etc/sysctl.d/99-disable-mptcp.conf
此设置仅阻止 新 阻止创建 MPTCP 套接字。已运行的服务将继续通过 MPTCP 监听,因此请重启列出的每个服务。 ss -lnMp 并确保其输出现在为空。
在 AlmaLinux 系统中,MPTCP 默认情况下是禁用的,除非您自己启用它。
在 Go 程序中禁用 MPTCP
对于使用 Go 1.24 或更高版本构建的服务,您可以使用环境变量禁用 MPTCP。例如,对于名为“ myservice:
systemctl edit myservice
将以下内容添加到打开的文件中:
[Service]
Environment=GODEBUG=multipathtcp=0
然后重启服务:
systemctl restart myservice
X射线更新
如果您的服务器运行的是 Xray,请将其更新至 v26.10.31 或更高版本。之前的版本 v26.10.29 已被开发者撤回。此更新会禁用 MPTCP,但不会修复内核,因此仍然需要更新内核。
检查另一项设置
第二种更狭窄的攻击途径需要启用请求迁移。该功能默认处于关闭状态——请确保已启用:
sysctl net.ipv4.tcp_migrate_req
该命令应该打印 0.
限制对您服务的访问
关闭所有无需从互联网访问的防火墙端口。尽可能仅对受信任的 IP 地址开放管理服务(例如 SSH、控制面板和数据库)。
步骤 4. 安装修复后的内核
- 重启服务器,并使用步骤 1 中的命令来确认修复后的内核正在运行。
- 您可以移除临时规则:
systemctl disable --now cve-2026-98432.service
rm /etc/systemd/system/cve-2026-98432.service /etc/cve-2026-98432.nft
systemctl daemon-reload - 如果需要 MPTCP,请恢复设置:删除
/etc/sysctl.d/99-disable-mptcp.conf并运行sysctl -w net.mptcp.enabled=1.
如果出现问题
如果内核更新后服务器无法启动,请通过控制面板中的 VNC 控制台连接,并在启动菜单中选择之前的内核版本。如果您不确定能否自行完成此操作,或需要更新方面的帮助,请联系我们的支持团队。