Linux 爆出 CVSS 9.8 高危漏洞!CVE-2026-98432 可导致远程 Root 权限,赶紧检查你的服务器
原创
didiplus
didiplus
攻城狮成长日记
2026年11月3日 15:40
广东
去阅读
安全预警预计阅读 21 分钟 · 共 8370 字
Linux 爆出 CVSS 9.8 高危漏洞!CVE-2026-98432 可导致远程 Root 权限,赶紧检查你的服务器
Linux Kernel · CVE-2026-98432 · CVSS 9.8
Linux内核#UAF漏洞#远程Root#运维实战
READING PATH
阅读路线
6 个章节
01
CVE-2026-98432 到底是什么漏洞?
-
02
漏洞原理:一个 TCP 连接为什么会出现内存释放竞争?
-
03
哪些 Linux 服务器受到影响?
-
04
Linux 服务器如何修复 CVE-2026-98432?
-
05
运维人员应该如何开展批量排查?
-
06
不要等服务器出问题才开始排查
最近,Linux 内核曝出一个值得所有运维工程师重点关注的高危安全漏洞:CVE-2026-98432。该漏洞位于 Linux 内核 IPv4 TCP 网络处理模块,属于典型的 Use-After-Free(UAF,释放后使用) 内存安全问题。
为什么值得关注?
因为它并不是某个 Web 应用的普通漏洞,而是发生在 Linux 内核网络协议栈 中。攻击者在特定条件下,可以通过远程构造 TCP 网络请求触发竞争条件,导致内核内存破坏、系统崩溃,甚至可能实现远程代码执行。
更值得警惕的是,Anthropic 的安全研究人员已经展示了利用该漏洞攻击启用了 MPTCP 监听器的 Linux 服务器、获取 Root 权限的能力。
Critical
CVSS 3.1 评分:9.8 分
Critical 级别 · 远程无需认证 · 无需用户交互
远程攻击#无需认证#内核内存破坏#潜在RCE
Linux 内核官方给出的 CVSS 3.1评分高达 9.8 分(Critical)。对于维护大量 Linux 服务器的运维人员来说,这次需要重点关注的不只是漏洞本身,还有服务器是否启用了 MPTCP、当前内核是否包含修复补丁,以及发行版是否已经发布安全更新。
下面从实际运维角度,把这个漏洞彻底拆解一下。
CHAPTER 01
01CVE-2026-98432 到底是什么漏洞?WHAT IS THE VULNERABILITY
先看一下漏洞基本信息。
| 项目 | 内容 |
|---|---|
| 漏洞编号 | CVE-2026-98432 |
| 漏洞类型 | Use-After-Free(UAF) |
| 影响组件 | Linux Kernel IPv4 TCP |
| CVSS 评分 | 9.8(Critical) |
| 攻击方式 | 远程网络攻击 |
| 是否需要认证 | 不需要 |
| 是否需要用户交互 | 不需要 |
| 主要影响 | 内核内存破坏、拒绝服务、潜在远程代码执行 |
| 漏洞引入版本 | Linux Kernel 4.4 |
该漏洞于 2026 年 10 月 15 日由 Linux Kernel CVE 团队公开。从漏洞描述来看,问题主要出现在 Linux 内核处理 IPv4 TCP 连接请求的过程中。
涉及的关键函数包括:
●tcp_v4_syn_recv_sock()
●tcp_check_req()
●tcp_v4_send_synack()
●ip_options_build()
●inet_sock_destruct()
●tcp_v4_reqsk_destructor()
简单来说,就是 TCP 连接建立过程中,不同 CPU 核心可能同时处理同一个连接请求,而其中一个执行路径已经释放了相关内存,另一个执行路径却仍然在读取这块内存。
这就形成了典型的UAF漏洞。
CHAPTER 02
02漏洞原理:一个 TCP 连接为什么会出现内存释放竞争?VULNERABILITY MECHANISM
想理解这个漏洞,首先需要了解 TCP 三次握手。正常情况下,TCP 建立连接需要经历:
TCP THREE-WAY HANDSHAKE
TCP 三次握手流程
1
客户端发送 SYN
客户端主动发起连接请求
2
服务端返回 SYN-ACK
服务端确认并回应
3
客户端发送 ACK
客户端最终确认
4
连接建立成功
TCP 连接完成
Linux 内核在处理 SYN 请求时,会创建一个请求套接字(Request Socket),用于保存连接建立过程中需要的信息,其中就包括 IP Options。问题恰恰出现在这些信息的生命周期管理上。
01
问题发生在哪里?
根据 Linux 内核官方漏洞公告:
tcp_v4_syn_recv_sock() 在创建子 Socket 时,会将请求 Socket 中的 ireq_opt 所有权转移给新 Socket 的 inet_opt,但并没有进行数据复制。与此同时,另一个 CPU 核心可能正在处理同一个请求 Socket 的 SYN 重传,并通过 tcp_check_req() 继续构建 SYN-ACK。
此时就可能出现下面的竞争:
RACE CONDITION
UAF 竞争时序
1
CPU 1 完成连接处理
将 IP Options 转移给子 Socket
2
CPU 2 处理重传 SYN
读取原来的 IP Options
3
CPU 1 释放子 Socket
相关 IP Options 内存被释放
4
CPU 2 访问已释放内存
触发 Use-After-Free
最终导致 Use-After-Free。
02
为什么 UAF 如此危险?
UAF 的危险之处在于,程序继续使用已经释放的内存。这块内存可能已经被其他内核对象重新分配和使用。攻击者如果能够控制竞争时机以及相关内存布局,就有可能进一步影响内核的数据结构。
可能造成:
●内核异常访问,导致系统崩溃。
●内核内存信息泄露。
●内存数据被破坏。
●在特定条件下实现更严重的内核权限提升或远程代码执行。
03
官方是如何修复的?
Linux 内核官方给出的修复思路非常关键:将原来的普通内存释放方式 kfree() 调整为 kfree_rcu()。
BEFORE
修复前
使用 kfree() 立即释放内存,其他 CPU 可能仍在访问该内存,存在 UAF 风险。
AFTER
修复后
使用 kfree_rcu() 延迟释放,等待 RCU Grace Period 宽限期,确保所有读取 CPU 完成访问后再释放。
RCU(Read-Copy-Update)是一种 Linux 内核常见的并发编程机制。它允许读取者在临界区内安全访问数据,而释放操作需要等待一个 RCU Grace Period(宽限期),确保之前正在读取该对象的 CPU 已经完成访问。
不能因为一个 CPU 已经不再需要这块内存,就立即释放它;还需要确认其他 CPU 不会继续访问它。
这就是此次漏洞修复的核心。官方公告还指出,IPv4 主问题与 IPv6 的处理逻辑不同:tcp_v6_syn_recv_sock() 会复制相关选项,因此不受相同的主要竞争问题影响。不过,IPv6 请求 Socket 迁移场景还存在一个单独的问题,不能因此认为所有相关 IPv6 路径都绝对安全。
CHAPTER 03
03哪些 Linux 服务器受到影响?AFFECTED SYSTEMS
这是运维人员最关心的问题。根据 Linux 内核官方公告,漏洞代码可以追溯到 Linux Kernel 4.4。也就是说,不能只看服务器是否运行较新的 Linux 系统,就认为自己没有风险。
01
上游内核受影响范围
Linux 内核官方公布的修复版本如下:
| 内核分支 | 修复版本 |
|---|---|
| 5.10 | 5.10.272 |
| 5.15 | 5.15.223 |
| 6.1 | 6.1.190 |
| 6.6 | 6.6.159 |
| 6.12 | 6.12.113 |
| 6.18 | 6.18.56 |
| 7.2 | 7.2.10 |
| 7.3 | 7.3 |
💡 以上是上游内核修复版本,不代表所有 Linux 发行版都必须使用相同版本号。CentOS、Rocky Linux、RHEL、Ubuntu 等发行版可能会将补丁回移到自己的内核版本中,因此必须以发行版安全公告和实际安装的补丁状态为准。
02
主流发行版影响情况
截至 2026 年 11 月 2 日,公开资料显示:
| Linux 发行版 | 影响情况 | 修复情况 |
|---|---|---|
| RHEL 8 | 受影响 | 已发布修复 |
| RHEL 9 | 受影响 | 已发布修复 |
| RHEL 10 | 受影响 | 已发布修复 |
| RHEL 9 RT | 受影响 | 尚待修复 |
| OpenShift 4 | 受影响 | 尚待修复 |
| Ubuntu 22.04 | 受影响 | 修复处理中 |
| Ubuntu 24.04 | 受影响 | 修复处理中 |
| Debian 12 | 受影响 | 已发布修复 |
| Debian 13 | 受影响 | 已发布修复 |
| Amazon Linux | 部分版本受影响 | 已发布修复 |
| Oracle Linux | 部分版本受影响 | 已发布修复 |
| SUSE | 部分版本受影响 | 已发布修复 |
注意
特别提醒
RHEL 8/9/10#Ubuntu 持续关注#RHEL 7 不受影响
RHEL 8、9、10 的修复内核已经在 2026 年 11 月 1 日发布。Ubuntu 的修复状态仍需持续关注官方安全公告。另外,RHEL 7 不受该漏洞影响,不能简单按照 Linux 内核版本号进行判断。
05
如何进行安全的漏洞复现验证?
建议采用修复前后对照的方式:
PHASE 1
第一阶段:漏洞版本验证
1
启动漏洞内核
在隔离虚拟机中启动存在漏洞的内核
2
部署测试服务
部署测试 TCP 服务
3
检查处理路径
检查 IPv4 TCP 连接及 IP Options 处理路径
4
观察生命周期
使用内核调试工具观察相关对象的分配、释放和访问
5
并发压力验证
在受控的内核测试环境中进行并发压力验证
PHASE 2
第二阶段:修复版本验证
1
更换修复内核
更换为包含 CVE-2026-98432 修复补丁的内核
2
重复测试场景
重复相同的测试场景
3
对比内存生命周期
对比修复前后的内存生命周期
4
确认 RCU 释放
确认相关内存通过 RCU 宽限期后才释放
如果具备内核开发和调试条件,可以通过 KASAN、内核调试日志以及专门的并发测试程序辅助验证。
重要
验证结论判断
不能仅凭压测#不能仅凭未崩溃
普通 TCP 压测没有触发内核异常,不代表漏洞不存在;同样,修复前后没有出现系统崩溃,也不能单独作为漏洞是否修复的判断依据。真正可靠的验证方式,是确认当前运行内核已经包含官方修复补丁。
CHAPTER 04
04Linux 服务器如何修复 CVE-2026-98432?REMEDIATION
对于运维工程师来说,最重要的不是研究如何利用漏洞,而是尽快确认资产范围并完成修复。
01
RHEL / Rocky Linux / AlmaLinux 系列
RHEL 8、9、10 已经发布修复内核。根据 Red Hat 公告,相关修复版本包括:
| 系统 | 修复内核版本 |
|---|---|
| RHEL 8 | 4.18.0-553.182.1.el8\_10 |
| RHEL 9 | 5.14.0-687.64.1.el9\_8 |
| RHEL 10 | 6.12.0-211.72.1.el10\_2 |
执行更新:
bash
dnf clean all
dnf makecache
dnf update kernel -y
更新完成后查看已安装内核:
bash
rpm -q kernel
重启服务器:
bash
reboot
重启后检查当前运行内核:
bash
uname -r
💡 Rocky Linux 和 AlmaLinux 用户不要直接照搬 RHEL 的内核版本号,应以各自发行版的安全公告及仓库中的修复包为准。
02
Ubuntu 系列
Ubuntu 22.04、24.04 等版本需要持续关注 Canonical 的安全公告。截至 2026 年 11 月 2 日,相关修复仍处于处理中。可以先执行:
bash
sudo apt update
sudo apt upgrade
但需要注意:普通系统更新不等于该漏洞已经修复。只有在 Canonical 发布对应修复内核,并且服务器安装、启动该内核后,才能确认修复完成。
查看当前内核:
bash
uname -r
查看已安装内核包:
bash
dpkg -l | grep linux-image
03
Debian 系列
Debian 已经发布了相关修复。
Debian 12(Bookworm):
bash
apt update
apt install linux-image-amd64
Debian 13(Trixie):
bash
apt update
apt install linux-image-amd64
官方安全跟踪信息显示:
●Debian 12:修复版本 6.1.190-1。
●Debian 13:修复版本 6.12.113-1。
安装完成后,按照维护窗口安排重启。
04
暂时无法升级怎么办?
如果生产环境暂时无法更新内核,可以先采取临时防护措施:
●限制服务器 IPv4 TCP 访问来源。
●通过防火墙限制不必要的外部 TCP 访问。
●排查是否启用了 MPTCP。
●排查 tcp_migrate_req 和相关 eBPF 迁移程序。
●对重要业务增加网络边界防护。
●密切关注发行版补丁发布情况。
警告
临时防护不能替代内核升级
关闭MPTCP无效#主要路径仍可触发
单独关闭 MPTCP 并不能彻底解决这个漏洞。 因为主要漏洞路径还可以通过普通 IPv4 TCP 连接触发。对于具备防火墙运维能力的团队,可以进一步评估过滤携带特定 IPv4 IP Options 的 TCP 数据包。具体规则需要根据实际网络拓扑、业务依赖和发行版建议制定,避免误伤正常业务。
CHAPTER 05
05运维人员应该如何开展批量排查?BATCH INSPECTION
如果公司有几十台、几百台甚至上千台 Linux 服务器,逐台登录检查显然不现实。建议通过 Ansible 或其他自动化运维平台统一收集信息。下面提供一个简单的批量巡检脚本:
bash
!/bin/bash
============================================================
Linux CVE-2026-98432 专项巡检脚本
功能:系统信息、内核版本、TCP迁移、MPTCP状态检查
适用:RHEL / CentOS / Rocky / AlmaLinux / Debian / Ubuntu
============================================================
set -u
VERSION=\"1.0.0\"
CVE=\"CVE-2026-98432\"
HOSTNAME=$(hostname 2>/dev/null || echo \"unknown\")
DATE=$(date '+%Y-%m-%d %H:%M:%S')
KERNEL=$(uname -r 2>/dev/null || echo \"unknown\")
颜色
RED='\033[31m'
GREEN='\033[32m'
YELLOW='\033[33m'
BLUE='\033[34m'
NC='\033[0m'
统计
PASS=0
WARN=0
FAIL=0
INFO=0
info() {
echo -e \"${BLUE}[INFO]${NC} $1\"
INFO=$((INFO + 1))
}
pass() {
echo -e \"${GREEN}[PASS]${NC} $1\"
PASS=$((PASS + 1))
}
warn() {
echo -e \"${YELLOW}[WARN]${NC} $1\"
WARN=$((WARN + 1))
}
fail() {
echo -e \"${RED}[FAIL]${NC} $1\"
FAIL=$((FAIL + 1))
}
title() {
echo
echo \"------------------------------------------------------------\"
echo \"$1\"
echo \"------------------------------------------------------------\"
}
获取系统发行版信息
get\_os\_info() {
if [ -f /etc/os-release ]; then
. /etc/os-release
OS\_NAME=${PRETTY\_NAME:-${NAME:-unknown}}
else
OS\_NAME=\"unknown\"
fi
}
获取IP地址
get\_ip() {
if command -v ip >/dev/null 2>&1; then
ip -o -4 addr show scope global 2>/dev/null |
awk '{split($4,a,\"/\"); print a[1]}' |
paste -sd ',' -
else
echo \"unknown\"
fi
}
检查命令是否存在
command\_exists() {
command -v \"$1\" >/dev/null 2>&1
}
检查系统信息
check\_system() {
title \"1. 系统资产信息\"
get\_os\_info
echo \"主机名称:$HOSTNAME\"
echo \"IP地址:$(get\_ip)\"
echo \"操作系统:$OS\_NAME\"
echo \"内核版本:$KERNEL\"
echo \"系统架构:$(uname -m)\"
echo \"检查时间:$DATE\"
}
检查内核信息
check\_kernel() {
title \"2. Linux 内核信息\"
echo \"当前运行内核:$KERNEL\"
if command\_exists rpm; then
echo \"已安装内核包:\"
rpm -q kernel 2>/dev/null || echo \"未查询到 kernel 包\"
elif command\_exists dpkg-query; then
echo \"已安装内核包:\"
dpkg-query -W -f='${Package} ${Version}\
' \
'linux-image-[0-9]\*' 2>/dev/null || \
echo \"未查询到 linux-image 包\"
fi
echo
echo \"内核启动参数:\"
cat /proc/cmdline 2>/dev/null || echo \"无法读取\"
info \"内核版本信息采集完成\"
}
检查TCP迁移配置
check\_tcp\_migrate() {
title \"3. TCP Socket 迁移配置\"
KEY=\"net.ipv4.tcp\_migrate\_req\"
if command\_exists sysctl; then
VALUE=$(sysctl -n \"$KEY\" 2>/dev/null || true)
if [ -z \"$VALUE\" ]; then
warn \"$KEY 不存在或当前内核未暴露该参数\"
elif [ \"$VALUE\" = \"1\" ]; then
warn \"$KEY = 1,已启用请求 Socket 迁移功能\"
elif [ \"$VALUE\" = \"0\" ]; then
pass \"$KEY = 0,未启用请求 Socket 迁移功能\"
else
warn \"$KEY = $VALUE,返回值需要人工确认\"
fi
else
warn \"sysctl 命令不存在\"
fi
echo
echo \"相关 eBPF 程序:\"
if command\_exists bpftool; then
bpftool prog show 2>/dev/null |
grep -iE 'reuseport|migrate' ||
echo \"未发现名称匹配的程序,不能据此确认不存在相关程序\"
else
warn \"未安装 bpftool,跳过 eBPF 程序检查\"
fi
}
检查MPTCP配置
check\_mptcp() {
title \"4. MPTCP 配置检查\"
MPTCP\_SYSCTL=\"/proc/sys/net/mptcp/enabled\"
if [ -f \"$MPTCP\_SYSCTL\" ]; then
VALUE=$(cat \"$MPTCP\_SYSCTL\" 2>/dev/null)
if [ \"$VALUE\" = \"1\" ]; then
warn \"MPTCP 已启用\"
elif [ \"$VALUE\" = \"0\" ]; then
pass \"MPTCP 当前已禁用\"
else
warn \"MPTCP 状态无法识别:$VALUE\"
fi
else
info \"未发现 MPTCP enabled 参数,不能据此判断内核是否支持 MPTCP\"
fi
echo
echo \"MPTCP 监听情况:\"
if command\_exists ss; then
RESULT=$(ss -M -ltn 2>&1)
RC=$?
if [ \"$RC\" -eq 0 ]; then
echo \"$RESULT\"
if echo \"$RESULT\" | grep -qE 'LISTEN|State'; then
if echo \"$RESULT\" | grep -q 'LISTEN'; then
warn \"发现 MPTCP 监听 Socket,请进一步核实\"
else
pass \"未发现 MPTCP 监听 Socket\"
fi
else
pass \"未发现 MPTCP 监听 Socket\"
fi
else
warn \"ss 无法查询 MPTCP 监听状态:$RESULT\"
fi
else
warn \"ss 命令不存在\"
fi
echo
echo \"MPTCP Endpoint:\"
if command\_exists ip; then
RESULT=$(ip mptcp endpoint show 2>&1)
RC=$?
if [ \"$RC\" -eq 0 ]; then
if [ -n \"$RESULT\" ]; then
echo \"$RESULT\"
else
echo \"当前没有配置 MPTCP Endpoint\"
fi
else
warn \"无法查询 MPTCP Endpoint:$RESULT\"
fi
else
warn \"ip 命令不存在\"
fi
}
汇总结果
summary() {
title \"5. 巡检结果汇总\"
echo -e \"${GREEN}PASS:${PASS}${NC}\"
echo -e \"${YELLOW}WARN:${WARN}${NC}\"
echo -e \"${RED}FAIL:${FAIL}${NC}\"
echo -e \"${BLUE}INFO:${INFO}${NC}\"
echo
echo \"主机名称:$HOSTNAME\"
echo \"内核版本:$KERNEL\"
echo \"CVE编号:$CVE\"
echo
echo \"注意:本脚本仅进行环境与配置采集,\"
echo \"不能独立判断该漏洞是否存在或是否已修复。\"
echo \"请结合发行版安全公告、补丁包状态及当前运行内核进行确认。\"
}
main() {
echo \"============================================================\"
echo \" Linux $CVE 专项安全巡检工具\"
echo \" Version: $VERSION\"
echo \"============================================================\"
check\_system
check\_kernel
check\_tcp\_migrate
check\_mptcp
summary
echo
echo \"巡检结束。\"
}
main \"$@\"
可以将脚本部署到所有 Linux 主机,统一采集:
●主机名。
●操作系统版本。
●当前运行内核。
●TCP 迁移配置。
●MPTCP 监听情况。
●内核补丁状态。
然后根据发行版官方安全公告进行分类:
| 1 已修复 系统已安装包含补丁的内核并重启生效 | 2 待修复 补丁已发布但尚未安装或未重启 | 3 尚无补丁 发行版尚未发布对应修复内核 | 4 需要人工确认 版本信息无法自动判定,需人工核对 |
对于服务器数量较多的环境,建议将结果输出为 CSV 或 JSON,接入现有巡检平台,形成漏洞资产清单。
CHAPTER 06
06不要等服务器出问题才开始排查CONCLUSION
CVE-2026-98432 再次提醒我们:Linux 内核并不是绝对安全的,网络协议栈中的一个内存生命周期问题,也可能演变成严重的远程安全事件。
从此次漏洞来看,运维人员至少需要做好以下几件事情:
ACTION ITEMS
运维人员必做五件事
1
资产盘点
确认所有 Linux 服务器的发行版和内核版本
2
配置排查
重点关注 MPTCP、TCP 请求迁移以及相关 eBPF 程序
3
补丁管理
根据发行版官方公告及时安装修复内核
4
重启验证
确保服务器真正运行在修复后的内核上
5
持续监控
对暂时没有修复包的系统加强网络访问控制
还有一个容易被忽略的问题:安装了新内核,不代表漏洞已经修复。必须确认服务器已经重启,并且当前运行的内核确实包含对应补丁。
对于生产环境而言,漏洞应急不是简单执行一条升级命令,而是一个完整的资产识别、风险评估、补丁验证、业务切换和结果复核过程。
安全没有侥幸,补丁管理也不能靠运气。
如果你的服务器还在运行较老的 Linux 内核,建议尽快安排一次专项排查。
TAKE ACTION
现在就开始排查你的 Linux 服务器
复制巡检脚本立即执行
参考资料:
1.Linux Kernel 官方漏洞公告[1]
2.Red Hat CVE 公告[2]
3.Debian Security Tracker[3]
4.NVD 漏洞数据库[4]
5.BleepingComputer 漏洞分析[5]
6.Anthropic 安全研究[6]
参考资料
[1]CVE-2026-98432 官方公告 mbox 文件:https://git.kernel.org/pub/scm/linux/security/vulns.git/plain/cve/published/2026/CVE-2026-98432.mbox
[2]Red Hat 安全漏洞数据库:https://access.redhat.com/security/cve/CVE-2026-98432
[3]Debian 安全跟踪系统:https://security-tracker.debian.org/tracker/CVE-2026-98432
[4]美国国家漏洞数据库:https://nvd.nist.gov/vuln/detail/CVE-2026-98432
[5]Critical Linux kernel flaw allows remote root attacks:https://www.bleepingcomputer.com/news/security/critical-linux-kernel-flaw-allows-remote-root-attacks-on-mptcp-servers/
[6]Anthropic 安全研究团队:https://www.anthropic.com/
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论