跳到正文
不翻车专注 VPN 软件评测

Linux 内核漏洞 9.8 分:自建节点怎么查、Debian 和 Ubuntu 怎么修

不翻车编辑部 · 更新于

Xray-core v26.10.31 发布说明:紧急安全更新,默认关闭 MPTCP,v26.10.29 已撤版,并建议尽快更新 Linux 内核

先说结论:10 月 30 日公开的 Linux 内核漏洞 CVE-2026-98432,内核团队评了 9.8 分(满分 10),4.4 以后的内核都在范围里。报道里的演示攻击,是冲着开着 MPTCP 监听的服务器去的,而 Xray 和 3x-ui 面板都是用 Go 写的,新版本默认就开 MPTCP,自己搭的节点多半中招。目前还没有确认的真实攻击,修法分三步:查系统和内核版本;用 Debian 的升级内核(Debian 12 要到 6.1.190-1,Debian 13 要到 6.12.113-1)再重启;在 3x-ui 里把 Xray 换成 v26.10.31。用 Ubuntu 的,到 11 月 1 日官方还没发修复版,要先关 MPTCP、加一条防火墙规则顶着。

视频封面:你的VPS可能被人远程拿下?内核漏洞9.8分,今天就做这3件事
这篇有视频版:YouTube 上看《你的VPS可能被人远程拿下?内核漏洞9.8分,今天就做这3件事》。 订阅频道

文中的版本号和公告状态,2026 年 11 月 1 日重新核对过一遍:Ubuntu 公告页、Debian 安全追踪页、Xray 最新版本、3x-ui 有没有发关 MPTCP 的版本,都和视频里一样。终端输出来自一台演示用的 Ubuntu 22.04 服务器(美国),面板是 3x-ui v3.10.2,截图里没有服务器地址。

这个漏洞是什么,为什么自建节点会中招

服务器每接一个新连接,内核都要先和对方握手。握手时内核会用一小块内存存这个连接的附加信息(IP 选项)。问题在于:这块内存已经释放、还给了系统,另一个 CPU 上的代码还会去读它,这类毛病叫“释放后使用”。攻击的人如果能赶在这个空当把自己的数据塞进那块内存,就有机会让内核执行他的东西。内核是整台服务器权限最高的部分,被拿下就等于对方拿到了 root,服务器上的配置、密码和流量都由不得你了。

安全媒体 BleepingComputer 10 月 30 日的报道里写着,做出演示攻击的是 Anthropic 的研究人员:在一台开着 MPTCP 监听的 Linux 服务器上,大约 53 分钟远程拿到 root,不需要账号密码。也有不同看法,红帽认为利用起来比较复杂,只给了 5.9 分。

MPTCP 是多路径 TCP,一条连接可以同时走好几条路,比如手机的 Wi-Fi 和流量一起用。Go 官方安全团队的公告写明:从 Go 1.24 起,Go 程序在 Linux 上开监听端口时,只要系统支持,默认就用 MPTCP。Xray 是 Go 写的,3x-ui 面板也是。

10 月 31 日,Xray 发了紧急安全更新 v26.10.31,默认关掉 MPTCP,之前的 v26.10.29 已经撤版。但 MPTCP 的维护者在 Xray 的讨论里说得很直接:光关 MPTCP 保护不了你,普通 TCP 连接也可能触发这个漏洞,该做的是升级内核,或者拦掉带 IPv4 选项的数据包。所以下面内核和 Xray 两头都要处理。

第一步:查系统、内核,还有谁开着 MPTCP

SSH 登录服务器,下面的命令都要 root 权限。先看系统:

cat /etc/os-release

看 PRETTY_NAME 那一行。演示这台:

PRETTY_NAME="Ubuntu 22.04.5 LTS"

再看内核版本:

uname -rv

演示这台的输出是 5.15.0-177-generic #187-Ubuntu ...,Ubuntu 看前面这一串。Debian 要看后面写着 Debian 的那一段,比如 Debian 6.1.190-1。Debian 12 前面那串只会写成 6.1.0-54-amd64 这种样子,看不出小版本,别拿它对照。

最后看哪些程序开着 MPTCP 在等连接:

ss -Mltnp | grep mptcp

每一行最前面是 mptcp 的,就是开着 MPTCP。演示这台换 Xray 之前是这样(只留了 Xray 和面板的行):

mptcp LISTEN 0  4096  127.0.0.1:62789  0.0.0.0:*  users:(("xray-linux-amd6",pid=237255,fd=3))
mptcp LISTEN 0  4096  127.0.0.1:20853  0.0.0.0:*  users:(("x-ui",pid=237248,fd=10))
mptcp LISTEN 0  4096  127.0.0.1:11111  0.0.0.0:*  users:(("xray-linux-amd6",pid=237255,fd=6))
mptcp LISTEN 0  4096          *:2096        *:*  users:(("x-ui",pid=237248,fd=11))

Xray 和 3x-ui 都在里面,最后一行 2096 是面板的订阅端口,前面是 *,对整个互联网开着。也可以顺手看一眼系统层面的开关,= 1 就是开着:

sysctl net.mptcp.enabled

然后对照修复版本:

系统 修复状态(2026-11-01 核对)
Debian 12 内核 6.1.190-1 起修复,在 bookworm-security 源
Debian 13 内核 6.12.113-1 起修复,在 trixie-security 源
Ubuntu 22.04 / 24.04 / 26.04 / 26.10 修复还在做,没发布
红帽系 8–10(Rocky、Alma 等) 官方说计划修复

Debian 安全追踪页:bookworm 主源 6.1.176-1 仍有漏洞,bookworm-security 6.1.190-1 和 trixie-security 6.12.113-1 已修复

Ubuntu 公告页状态表:26.10、26.04、24.04、22.04 都是 Vulnerable,修复在做中,22.04 的修复写在 5.15.0-203.213

第二步:Debian 升级内核,重启后核对

apt update && apt full-upgrade

中间问要不要继续,输入 y 回车。看到 linux-image 开头的包被装上,新内核就装好了。

新内核要重启才生效。节点会断一两分钟,挑人少的时候做:

reboot

重启后重新登录,再跑一次 uname -rv。后面写着 Debian 6.1.190-1(Debian 13 是 6.12.113-1)或者更大的数字,就修好了。

还是旧版本,多半是软件源里没有 security 源。修复版只在 security 源里,Debian 12 的主源到现在还是 6.1.176-1。可以先用这条看候选版本从哪来:

apt policy linux-image-amd64

在 Debian 12 上,正常应该看到候选版本是 6.1.190-1,来自 debian-security bookworm-security。没有的话,打开 /etc/apt/sources.list(新装的 Debian 13 在 /etc/apt/sources.list.d/debian.sources),补上 security 源,Debian 12 是这一行:

deb http://deb.debian.org/debian-security bookworm-security main

补完再 apt update && apt full-upgrade,再重启一次。

便宜的 OpenVZ、LXC 这类 VPS 例外:容器用的是商家那台宿主机的内核,你在里面升级没用,要开工单问商家什么时候修。

第三步:在 3x-ui 里把 Xray 换成 v26.10.31

升级 3x-ui 面板和升级 Xray 是两回事。面板最新的 v3.11.0(10 月 25 日发布)自带的还是 Xray v26.10.21,要单独换。

  1. 打开 3x-ui,首页左上角写着“Xray · 运行中”,后面是版本号。演示这台是 v26.10.10。
  2. 点这个版本号,弹出“Xray 更新”,列表最上面就是 v26.10.31。
  3. 点它右边的圆圈,再点确定。面板会自己下载新版本并重启 Xray,节点断几秒就恢复。

3x-ui 的 Xray 更新弹窗:版本列表最上面是 v26.10.31,右边是选择用的圆圈

左上角变成 v26.10.31 就换好了。

3x-ui 首页左上角显示 Xray 运行中 v26.10.31

换完 Xray,面板端口还开着 MPTCP

换完再跑一次(这次不加 grep mptcp,tcp 行也看):

ss -Mltnp | grep -E 'xray|x-ui'

演示这台的结果:

tcp   LISTEN 0  4096  127.0.0.1:62789  0.0.0.0:*  users:(("xray-linux-amd6",pid=487893,fd=6))
tcp   LISTEN 0  4096  127.0.0.1:20853  0.0.0.0:*  users:(("x-ui",pid=237248,fd=10))
tcp   LISTEN 0  4096  127.0.0.1:11111  0.0.0.0:*  users:(("xray-linux-amd6",pid=487893,fd=3))
tcp   LISTEN 0  4096          *:2096        *:*  users:(("x-ui",pid=237248,fd=11))
mptcp LISTEN 0  4096  127.0.0.1:20853  0.0.0.0:*  users:(("x-ui",pid=237248,fd=10))
mptcp LISTEN 0  4096  127.0.0.1:11111  0.0.0.0:*  users:(("xray-linux-amd6",pid=487893,fd=3))
mptcp LISTEN 0  4096          *:2096        *:*  users:(("x-ui",pid=237248,fd=11))

Xray 的 62789 只剩 tcp 了,但面板端口 20853、对外开着的订阅端口 2096 还是 mptcp,Xray 的指标端口 11111 也还是。面板本身是 Go 写的,到 11 月 1 日 3x-ui 还没发关 MPTCP 的版本。所以只换 Xray 不够,内核还得修;用 Debian 的,做完第二步就行。

安卓客户端也看一眼

Xray 的更新说明里写着,安卓客户端的 Socks/HTTP 入站如果开了“允许来自局域网的连接”,也有一点危险。v2rayNG 的设置里能找到这个开关,没有拿手机给别的设备共享网络的,关掉。

Ubuntu 暂时没修复版怎么办

Ubuntu 公告页上,22.04 的修复写在 5.15.0-203 里,还没发布。演示这台现在能升到的是 202:

$ apt-cache policy linux-image-generic | head -4
linux-image-generic:
  Installed: 5.15.0.177.162
  Candidate: 5.15.0.202.174

所以现在升级补不上这个洞。等修复版出来之前,做三件事:

  1. 照上面的做法,把 Xray 换成 v26.10.31。
  2. 关掉整台服务器的 MPTCP,再重启面板。 第一行马上生效,第二行让重启后也保持关闭:
sysctl -w net.mptcp.enabled=0
echo "net.mptcp.enabled=0" | tee /etc/sysctl.d/99-no-mptcp.conf
x-ui restart

oss-security 邮件列表上有人指出,这样关掉以后,新启动的 Go 程序会正常退回普通 TCP。演示这台重启面板后,所有端口都变回了 tcp:

tcp   LISTEN 0  4096  127.0.0.1:62789  0.0.0.0:*  users:(("xray-linux-amd6",pid=488134,fd=6))
tcp   LISTEN 0  4096  127.0.0.1:20853  0.0.0.0:*  users:(("x-ui",pid=488128,fd=10))
tcp   LISTEN 0  4096  127.0.0.1:11111  0.0.0.0:*  users:(("xray-linux-amd6",pid=488134,fd=3))
tcp   LISTEN 0  4096          *:2096        *:*  users:(("x-ui",pid=488128,fd=11))
  1. 拦掉带 IPv4 选项的数据包。 这是 MPTCP 维护者给的另一条路。Rocky Linux 背后的公司 CIQ 公开了一条现成的 nftables 规则,三行:
nft add table inet ciq_cve_2026_98432
nft add chain inet ciq_cve_2026_98432 prerouting '{ type filter hook prerouting priority -300; policy accept; }'
nft add rule inet ciq_cve_2026_98432 prerouting ip hdrlength gt 5 meta l4proto tcp counter drop

加完用这条确认,能看到带 counter 和 drop 的那一行就是生效了:

nft list table inet ciq_cve_2026_98432

演示这台的输出:

table inet ciq_cve_2026_98432 {
	chain prerouting {
		type filter hook prerouting priority raw; policy accept;
		ip hdrlength > 5 meta l4proto tcp counter packets 0 bytes 0 drop
	}
}

维护者说,正常连接很少带这种选项,从客户端到服务器的路上一般早被别的设备拦掉了。但这条规则有代价,CIQ 原文写明了:

  • 会挡住少量带 IP 选项的正常 TCP 连接;
  • 服务器重启、或者 nftables 服务停掉,规则就没了,要一直保留得按 CIQ 原文里的写法设成开机加载;
  • 原文是针对 Rocky Linux 写的,演示这台 Ubuntu 22.04 上能加上、能列出来,别的系统自己确认一遍。

等 Ubuntu 发了修复版:升级、重启、用 uname -rv 核对,再把规则删掉,MPTCP 想开回来也可以:

nft delete table inet ciq_cve_2026_98432
rm /etc/sysctl.d/99-no-mptcp.conf
sysctl -w net.mptcp.enabled=1

升级以后节点连不上,先看这三处

先别急着当成被墙。Xray 这两个月改了几处,升级后最常见的是这三种:

  1. REALITY 指纹选了 edge、ios、qq、random。 服务端从 v26.9.8 起不再接受这几种,客户端报“received real certificate”(收到真实证书)。开发者在 issue #7259 里的回复就是改用 chrome;报告者自己试过,firefox、safari、randomized 也能用。
  2. REALITY 目标网站不回 ALPN。 从 v26.10.21 起,目标网站握手时如果不确认域名、也不回 ALPN,REALITY 就握手失败。开发者没打算修(issue #7243),说本来就不鼓励用不支持 ALPN 的目标。换一个目标网站,换之前可以用本站的 REALITY 目标网站检测先查一下。
  3. Hysteria2 测真连接延迟显示 -1。 客户端升到 v26.10.21 以后出现。开发者在 issue #7277 里说,这次改动里端口跳跃的设置换了位置,他们在 v26.10.29 上没能复现。服务端和客户端都换成最新版再测。

这套办法的局限

  • 只换 Xray 不算修好。 3x-ui 的面板端口和订阅端口照样开着 MPTCP,而且维护者说普通 TCP 也可能触发,根本还是内核。
  • Ubuntu 的临时办法都有副作用。 关 MPTCP 会让真需要多路径的场景失效(节点一般用不上);nft 规则会误挡少量正常连接,重启就丢。
  • OpenVZ、LXC 小鸡自己修不了,只能等商家。
  • 订阅端口对外开着的问题,修完漏洞也还在,面板端口和订阅路径最好一起收紧,做法见 3x-ui 面板加固。

常见问题

我的 VPS 是 CentOS / Rocky / Alma,怎么办

红帽系 8 到 10 官方说计划修复,还没出补丁的话,按上面 Ubuntu 的临时办法做:换 Xray、关 MPTCP、加 CIQ 那条规则。CIQ 原文本来就是给 Rocky Linux 写的。

只换了 Xray,没升级内核,安全吗

不算安全。演示服务器上,换完 Xray 以后 3x-ui 的面板端口和订阅端口还是 mptcp;MPTCP 维护者也说,光关 MPTCP 防不住,普通 TCP 也可能触发。内核要修,修不了就加上防火墙规则。

uname -r 显示 6.1.0-54-amd64,是修好的版本吗

Debian 12 的这串数字看不出小版本。用 uname -rv,看后面写着 Debian 的那一段,是 6.1.190-1 或更大就修好了。

关掉 MPTCP 会影响节点速度吗

MPTCP 要客户端和服务端两头都支持才会用上,常见的代理客户端连节点走的是普通 TCP。关掉以后程序退回普通 TCP 监听,演示服务器重启面板后所有端口都是 tcp。Xray v26.10.31 自己也默认关了 MPTCP。

升级重启以后节点连不上,是被墙了吗

先查三处:REALITY 指纹是不是 edge、ios 这几种;目标网站回不回 ALPN;Hysteria2 两边版本是否一致。都排除了,再按被墙的思路查。

来源

  • NVD / 内核 CNA:CVE-2026-98432 描述和评分(9.8),受影响版本 4.4 起。
  • BleepingComputer,Lawrence Abrams,2026-10-30:Critical Linux kernel flaw allows remote root attacks on MPTCP servers。
  • Go Security Team 公告(oss-security 2026-10-30):Go 1.24 起 Linux 监听默认开 MPTCP。
  • oss-security,John Haxby,2026-10-30:sysctl -w net.mptcp.enabled=0 全系统关闭 MPTCP。
  • Xray-core v26.10.31 发布说明(2026-10-31);Xray-core PR #7291(MPTCP 维护者评论);issue #7259、#7243、#7277。
  • Debian security tracker:security-tracker.debian.org/tracker/CVE-2026-98432(DLA-4841-1、DSA-6568-1)。
  • Ubuntu 公告页:ubuntu.com/security/CVE-2026-98432(页面更新于 2026-10-30,2026-11-01 核对未变)。
  • CIQ 知识库,Howard Van Der Wal,2026-10-30:CVE-2026-98432 mitigation。
  • 3x-ui releases:v3.11.0(2026-10-25),到 2026-11-01 没有关闭 MPTCP 的版本。
  • 终端输出和面板截图:演示服务器 Ubuntu 22.04.5、3x-ui v3.10.2,2026 年 11 月 1 日。