Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2026-98432 — 幂等的 shell 脚本,用于安装一条持久化的 iptables 规则,丢弃带有 IP 选项的 IPv4 TCP 数据包,以在 Ubuntu 和 Debian 上缓解 CVE-2026-98432,直至可用的已修补内核发布。 | Kitploit
工具/GitHubGitHub/mervent/cve-2026-98432
防御工具漏洞分析脚本与自动化配置审计网络安全错误配置事件响应
GitHubmervent/cve-2026-98432

cve-2026-98432

幂等的 shell 脚本,用于安装一条持久化的 iptables 规则,丢弃带有 IP 选项的 IPv4 TCP 数据包,以在 Ubuntu 和 Debian 上缓解 CVE-2026-98432,直至可用的已修补内核发布。

查看仓库
15天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-98432 针对 Ubuntu 和 Debian 的临时缓解措施

一个幂等脚本,用于丢弃携带 IP 选项的入站 IPv4 TCP 数据包,使该规则在重启后依然生效,并验证其是否有效。它适用于尚无法获得修复内核的 Ubuntu(18.04 – 24.04)和 Debian(11 – 13)服务器。

这是权宜之计,并非修复方案。 唯一的真正修复是打补丁的内核加重启。一旦服务器运行修复后的内核,请移除此缓解措施。

用法

curl -fsSL https://raw.githubusercontent.com/Mervent/cve-2026-98432/master/install.sh | sudo sh

你可以任意多次运行它:文件会被覆盖,规则永远不会重复。 最后脚本会验证结果,并在任何失败时以非零状态退出:

--- validation ---
OK    helper installed: /usr/local/sbin/cve-2026-98432-mitigation
OK    cron entry: /etc/cron.d/cve-2026-98432
OK    cron service enabled
OK    iptables rule active (raw/PREROUTING)
OK    exactly one rule (no duplicates)
      plain SYN: connected, SYN with IP options: timeout
OK    drop test: packets with IP options are dropped
--- rule counters ---
 pkts bytes target     prot opt in     out     source               destination
    3   204 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            u32 "0x0>>0x18&0xf=0x6:0xf" /* cve-2026-98432 */

安装内容

路径用途
/usr/local/sbin/cve-2026-98432-mitigation用于维护该规则的辅助脚本。不带参数时,若规则缺失则添加该规则。--check 在规则处于活动状态时以 0 退出。--remove 删除该规则。
/etc/cron.d/cve-2026-98432@reboot 条目,在每次启动后重新应用该规则

规则本身:

iptables -t raw -I PREROUTING -p tcp -m u32 --u32 "0>>24&0xF=6:15" \
    -m comment --comment cve-2026-98432 -j DROP

重启后检查

sudo /usr/local/sbin/cve-2026-98432-mitigation --check && echo active
sudo iptables -t raw -L PREROUTING -v -n | grep cve-2026-98432

在启动到固定内核后移除

sudo /usr/local/sbin/cve-2026-98432-mitigation --remove
sudo rm /usr/local/sbin/cve-2026-98432-mitigation /etc/cron.d/cve-2026-98432

要查看你的发行版是否已发布修复,请检查 Ubuntu 或 Debian (对于 Debian 9 – 11,请查看 Freexian ELTS 跟踪器)。 一旦你的发行版显示为“Fixed”,请运行 apt update && apt full-upgrade,重启,然后移除缓解措施。

截至 2026 年 11 月 1 日,Debian 12(linux 6.1.190-1,DLA-4841-1)和 Debian 13(linux 6.12.113-1, DSA-6568-1)已有修复后的内核,因此在那些发行版上请升级,而不是使用此脚本。 Debian 11 的修复(linux 5.10.272-1,ELA-1846-1)仅在 Freexian 的 ELTS 仓库中提供:该仓库为商业性质, 但对个人和小型非营利组织可免费申请。

理由

漏洞

CVE-2026-98432(“ipv4: free inet_opt and ireq_opt after an RCU grace period”)是 IPv4 TCP 握手过程中的一个释放后使用(use-after-free)漏洞。它影响 Linux 4.4 及更高版本,CVSS 评分为 9.8。

如果 SYN 携带 IPv4 选项,内核会将这些选项保存在请求套接字上,以便在 SYN-ACK 中回显它们。随后 tcp_v4_syn_recv_sock() 将该缓冲区交给子套接字而不进行复制。 当子套接字销毁时,该缓冲区会通过普通的 kfree() 被释放,而另一个 CPU 可能仍在 读取它以构建针对重传 SYN 的 SYN-ACK。

所有这些都发生在内核中,任何应用程序看到连接之前。任何处于监听状态的 IPv4 TCP 端口都可以通过这种方式被访问(SSH、HTTP、PostgreSQL 等),并且不需要任何凭据。 Anthropic 报告了一个针对具有多路径 TCP(MPTCP)监听器的 主机的可用的远程 root 漏洞利用。Go 安全团队指出,该缺陷并非 MPTCP 特有。

为什么丢弃带 IP 选项的 TCP 数据包

被过早释放的内存仅在传入的 SYN 携带 IPv4 选项时才存在。没有 选项时就没有保存的缓冲区,因此释放后使用漏洞没有可作用的对象。合法的 TCP 流量 实际上几乎从不携带 IPv4 选项,因此丢弃这些数据包在实践中没有代价。Red Hat (RHSB-2026-016)和 AlmaLinux 发布了等效的 nftables 规则。

u32 "0>>24&0xF=6:15" 读取 IHL 字段,即 IPv4 头部长度(以 32 位字为单位)。值为 5 表示 仅 20 字节的裸头部。6 到 15 的值表示存在选项。

Red Hat 表示,此类规则“降低了暴露于该漏洞的风险,但无法完全防止它”。 在内核被打补丁之前,请将其视为风险降低措施。

为什么使用 raw / PREROUTING

  • PREROUTING 会看到每一个传入数据包,既包括发往主机的流量,也包括转发到已发布端口上 Docker 容器的流量。INPUT 中的规则(ufw 放置其规则的位置)会漏掉 转发的流量。
  • raw 表在连接跟踪之前运行,因此被丢弃的数据包永远不会创建 conntrack 条目。
  • ufw 和 Docker 不会刷新 raw/PREROUTING,因此该规则能在它们重启后继续存在。

为什么使用 iptables 而不是 nftables

  • iptables 存在于每个 Ubuntu 目标发行版上。在 Ubuntu 18.04 和 20.04 上它使用 legacy 后端;从 Ubuntu 22.04 和 Debian 11+ 起则是 iptables-nft。nft 二进制文件并非 在所有地方都默认安装。在 Debian 上,iptables 本身可能缺失;此时脚本会要求你运行 apt install iptables。
  • 使用 iptables-nft 时,ufw/Docker 和此规则共享 nf_tables 后端,因此一条规则即可覆盖两者。
  • u32 匹配需要 xt_u32 内核模块。如果缺失,脚本会失败并提示你 检查 modinfo xt_u32。

为什么使用 cron @reboot 条目

  • 不是 nftables.service。 在 Ubuntu 上,/etc/nftables.conf 以 flush ruleset 开头,而该服务在停止时会执行 nft flush ruleset。这两者中的任何一个都会清除 ufw 和 Docker 的规则。
  • 不是 iptables-persistent。 netfilter-persistent save 会转储当前所有规则,包括 Docker 的规则,而在启动时恢复该快照会与 Docker 自身创建的规则发生冲突。
  • 不是 ufw 的 before.rules。 它仅在启用 ufw 时生效,而且其链看不到转发到容器的流量。
  • cron.d。 它安装在标准 Ubuntu 和 Debian 服务器上(脚本会检查它是否存在),/etc/cron.d 中的文件通过覆盖实现幂等,删除它只需一条 rm。代价是启动后有几秒钟的窗口期,此时网络已启动但 cron 尚未应用规则。对于只需持续到下一次内核更新的缓解措施来说,这是可以接受的。

为什么不直接设置 net.mptcp.enabled=0

禁用 MPTCP 只是移除了已公开漏洞的前提条件,而非漏洞本身。普通 TCP 监听器仍然会经过同样存在漏洞的代码路径。在没有 MPTCP 监听器的服务器上(ss -Mlnp 无输出),该 sysctl 完全不起作用。它只是一个无害的额外措施,不能替代本规则。

验证

脚本会检查辅助程序和 cron 条目是否已安装、cron 是否已启用,以及是否恰好有一条规则处于活动状态。随后它会使用 python3 运行端到端的丢弃测试,如果缺少 python3 则跳过:

  1. 在 127.0.0.1 上打开一个监听器。
  2. 不带 IP 选项连接一次;此连接必须成功。
  3. 带 Record Route IP 选项连接一次;此连接必须超时。

回环流量经过 raw/PREROUTING,因此这证明规则确实丢弃了数据包,而不仅仅是存在于表中。

局限性

  • 不能修复内核漏洞。Red Hat 指出,过滤 IP 选项“无法完全阻止”利用。
  • 可能遗漏同一主机网桥上容器之间的流量。AlmaLinux 警告此类流量“可能绕过”这种过滤器。
  • 会破坏 CIPSO 安全标签,这些标签通过 IPv4 选项传输。不要在依赖它们的网络上使用。
  • 启动后到 cron 应用规则之前有几秒钟的窗口期。
  • 不涉及 IPv6。主要漏洞仅影响 IPv4。

测试情况

在运行 Ubuntu 24.04 内核 6.8.0-100-generic 的 Docker 主机上,于容器(ubuntu:18.04、20.04、22.04、24.04、debian:11-slim、12-slim、13-slim)中运行。每次运行都覆盖了管道安装、无重复规则的重复安装、丢弃测试,以及通过 cron @reboot 恢复被删除的规则。

发行版iptables结果
Ubuntu 18.041.6.1 (legacy)通过
Ubuntu 20.041.8.4 (legacy)通过
Ubuntu 22.041.8.7 (nf_tables)通过
Ubuntu 24.041.8.10 (nf_tables)通过
Debian 111.8.7 (nf_tables)通过
Debian 121.8.9 (nf_tables)通过
Debian 131.8.11 (nf_tables)通过

所有镜像共享主机内核。未测试这些发行版原装内核上 xt_u32 的可用性(仅测试了 Ubuntu 24.04 的 6.8 内核),也未执行真实重启。

来源

  • Ubuntu CVE 跟踪器 — 完整的内核 CVE 描述及各发行版状态
  • Debian 安全跟踪器 和 Freexian ELTS 跟踪器
  • 修复提交 e3f33b0
  • Red Hat RHSB-2026-016
  • AlmaLinux 公告
  • Go 安全团队关于 MPTCP 的说明,经由 oss-security
  • Atlas 分析文章
下载工具