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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2026-98432 — 用于评估 Ubuntu 内核针对 CVE-2026-98432 的补丁状态的 Shell 脚本,并应用持久的 nftables 或 iptables 临时缓解措施,丢弃携带 IP 选项的 IPv4 TCP 数据包。 | Kitploit
工具/GitHubGitHub/ndeet/cve-2026-98432
防御工具漏洞分析配置审计网络安全错误配置事件响应
GitHubndeet/cve-2026-98432

cve-2026-98432

用于评估 Ubuntu 内核针对 CVE-2026-98432 的补丁状态的 Shell 脚本,并应用持久的 nftables 或 iptables 临时缓解措施,丢弃携带 IP 选项的 IPv4 TCP 数据包。

查看仓库
115天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

针对 Ubuntu 16.04、22.04、24.04 和 26.04 的 CVE-2026-98432 缓解措施

快速开始

# 1. Inspect the host; no changes.
sudo ./cve-2026-98432-mitigate.sh check

# 2. Get a patch-state verdict for the exact running kernel package.
sudo ./cve-2026-98432-mitigate.sh assess

# 3. Apply the stopgap filter and make it survive reboot.
sudo ./cve-2026-98432-mitigate.sh enable

# 4. Prove that normal TCP still works and IP-option TCP is dropped.
sudo ./cve-2026-98432-mitigate.sh verify

# 5. Monitor. Exit 0 = healthy, 1 = mismatch/persistence failure, 2 = no state.
sudo ./cve-2026-98432-mitigate.sh status

# 6. After booting a kernel that Ubuntu marks as fixed.
sudo ./cve-2026-98432-mitigate.sh disable

当检测到 CIPSO/NetLabel 时,enable 会拒绝更改规则集,因为该规则会丢弃所有携带 IP 选项的 TCP 流量,包括带标签的流量。只有在您接受这一权衡时才使用 --ignore-cipso。没有 systemd 的容器或主机应使用 --no-persist;否则,当无法建立重启持久化时,enable 会以退出码 4 退出,同时保持活动规则不变。

它的作用及原因

CVE-2026-98432 是 Linux IPv4 TCP 握手过程中的一个释放后使用(use-after-free)漏洞。当传入的 SYN 携带 IP 选项时即可触发。真正的修复是打补丁的内核;此脚本是一个临时缓解措施,它在 conntrack 和 Docker NAT 之前丢弃 IP 头长度大于 5(IHL 6-15)的入站 IPv4 TCP 数据包,即携带 IP 选项的数据包。

它支持两种等效的后端:

  • nftables:table ip cve_2026_98432,prerouting 优先级 -310,仅 TCP,计数器,丢弃。
  • iptables:raw PREROUTING,u32 匹配 0>>24&0xf=6:15,仅 TCP,计数器,丢弃。

nft 形式使用 ip 族和数字优先级,因此它既能在 Ubuntu 16.04 的 nft 0.5 上工作,也能在当前 nft 1.x 上工作。iptables 形式适用于 iptables 1.6 及更高版本。除非传入 --install-nft,否则不会安装任何软件包。

该脚本验证完整的预期规则,而非片段。对于 nft,它要求 pre 链在恰好优先级 -310(或旧式 raw - 10 写法)上承载 prerouting 钩子,并且预期的 DROP 是第一条规则。对于 iptables,它要求 iptables -C 成功,并且完整的首条 raw PREROUTING 规则在规范化后匹配。enable 会修复被移位的规则,而不是拒绝重新应用。

纳入的来源

  • Ubuntu 安全跟踪器:https://ubuntu.com/security/CVE-2026-98432
  • BTCPay Server Docker PR #1224:https://github.com/btcpayserver/btcpayserver-docker/pull/1224
  • rockstardev gist:https://gist.github.com/rockstardev/06f8ec3225cb30725444fd6c57d57f24
  • Akamai 验证/缓解脚本:https://github.com/akamai/cve-2026-98432-validation-mitigation

Akamai 的脚本贡献了以下评估和安全理念。其强制执行形式未被采用,因为我们的形式更严格且兼容 16.04。以下按优先级顺序列出最重要的纳入发现:

  1. 补丁状态评估,附带精确软件包证据。 assess 解析运行中内核的精确镜像包(先 linux-image-$KVER,再 linux-image-unsigned-$KVER,然后是 /boot/vmlinuz-$KVER 的所有者)。诸如 linux-image-generic 之类的元包仅作为上下文显示,绝不作为判定证据。变更日志命中是强有力但可能出错的证据;变更日志缺失加上独立确凿的、等于或高于修复版本的干净上游版本,仍会得出 PATCHED;没有证据的厂商内核会得出 UNKNOWN。
  2. 真实的持久化结果。 自安装失败、单元写入/启用/启动失败,或主机没有 systemd,都会使 enable 以退出码 4 退出,同时保持规则活动。status 独立于 oneshot 的运行时状态评估持久化,并拒绝将 enabled-runtime 视为非持久化。
  3. CIPSO/NetLabel 安全。 检测是三态的:detected 默认拒绝,unknown 警告,not_detected 继续。缺少 netlabelctl 并不能证明 CIPSO 不存在。
  4. 定义明确的可用后端契约。 check 区分已验证可用、存在但未验证、不可用和未知;即使 iptables 可用,--backend nft 也会评估 nft。
  5. 带不确定性的覆盖信号。 Cilium 接口、macvlan/ipvlan 链路和 XDP 程序被报告为潜在绕过或未知,而非确定的缺口。Cilium 的路由模式很重要,且 XDP_PASS 仍会进入内核协议栈。
  6. 精确计数器和旧版清理。 计数器尽可能使用精确(-x)输出,并且在加载 raw 替换规则后,会报告并移除早期版本遗留的 filter/INPUT 规则。

升级现有安装

规则匹配和状态文件格式向后兼容。你不需要先执行 disable;用此版本重新运行 enable 会就地修复规则、安装更新后的启动单元,并记录新的持久化字段。如果旧状态文件没有 persist= 行,status 会根据单元状态推断持久化情况,而不是因缺少该字段而失败。

需要了解的操作变更:

  • 当规则处于活动状态但重启持久化失败时,enable 现在会以退出码 4 退出。此前在这种情况下它可能以 0 退出。
  • check 现在仅在验证到可用后端时返回 0,无可用后端时返回 1,存在但未验证时返回 4,用法错误时返回 2。
  • assess 是新增的,按下文所述返回 0/1/3/4。
  • 检测到 CIPSO 的主机现在会拒绝 enable,除非传入 --ignore-cipso。
  • 如果你之前安装过该单元,请重新运行 enable,以便应用新的单元顺序和 ExecStart。

编制日期: 2026-10-30(更新于 2026-10-31) Ubuntu 跟踪器检查时间: 2026-10-31 11:59 UTC(页面最后更新于 2026-10-30)。尚未发布修复内核。 范围: Linux 服务器,主要是 Ubuntu 16.04(xenial)、22.04(jammy)、24.04(noble)和 26.04(resolute),包括 Docker/BTCPay 主机。 交付物: 本目录中的 cve-2026-98432-mitigate.sh。 测试环境: Ubuntu 16.04、22.04、24.04 和 26.04。


1. 要点

  • CVE-2026-98432 是 Linux 内核 IPv4 TCP 握手过程中的释放后使用(use-after-free),内核 CNA 评分为 9.8 严重,Ubuntu 评分为 高。
  • 当传入的 SYN 携带 IP 选项时,任何 IPv4 TCP 监听器都可被触发。攻击者控制是否存在 IP 选项,因此普通客户端即可触发。
  • 真正的修复是打补丁的内核。 检查时间 2026-10-31 11:59 UTC:Ubuntu 仍未为 16.04、22.04、24.04 或 26.04 发布修复内核。跟踪器(最后更新于 2026-10-30)对当前 24.04 内核(6.8.0-149.149)、22.04(5.15.0-203.213)、26.04(7.0.0-43.43)和 26.10(7.3.0-10.10)仍显示“vulnerable work in progress”(漏洞修复进行中)。
  • 在此之前,正确的临时措施是在防火墙处丢弃携带 IP 选项的入站 IPv4 TCP 数据包。两个参考缓解措施都用 nftables 实现了这一点。交付的脚本可以使用 nftables 或 iptables 进行同样的匹配;它不要求 nftables,且默认不安装任何东西。
  • 使用默认 3.13 内核的 Ubuntu 14.04 不受影响;存在漏洞的 request-socket 路径随 Linux 4.4 引入。运行 HWE 内核的 Ubuntu 14.04 主机需要单独检查(基于 4.4 的 HWE 内核受影响)。Ubuntu 16.04 / 4.4 受影响。 所有更新的 Ubuntu LTS 均受影响。
  • 立即在 16.04、22.04、24.04 和 26.04 主机上应用该过滤器,对其进行监控,并仅在重启进入 Ubuntu 标记为已修复的内核后移除它。
  • 16.04 已过标准支持和 ESM 期限。除非它由 Ubuntu Pro Legacy Support 覆盖,否则内核修复可能永远不会到来;请计划保留该过滤器或升级主机。

2. 漏洞是什么

摘自 Ubuntu 描述:

  • tcp_v4_syn_recv_sock() 将 ireq->ireq_opt 的所有权转移给子套接字(newinet->inet_opt),而不进行复制。
  • 另一个 CPU 可以处理同一请求套接字的重传 SYN,并从 tcp_check_req() 发送 SYNACK。tcp_v4_send_synack() 和 inet_csk_route_req() 仅在 rcu_read_lock() 下读取 ireq->ireq_opt。
  • 由于请求套接字在没有监听锁的情况下被处理(提交 079096f103fa),子套接字可能在 SYNACK 仍在构建时被释放。TCP 子套接字没有 SOCK_RCU_FREE,而 inet_sock_destruct() 使用普通的 kfree() 释放 inet_opt,导致 ip_options_build() 中的释放后使用(use-after-free)。
  • 存在第二种变体,涉及请求套接字迁移(net.ipv4.tcp_migrate_req=1,或 BPF_SK_REUSEPORT_SELECT_OR_MIGRATE 程序):inet_reqsk_clone() 共享 ireq_opt,而 tcp_v4_reqsk_destructor() 也使用普通的 kfree()。
  • 修复方法是在 inet_sock_destruct() 和 tcp_v4_reqsk_destructor() 中使用 kfree_rcu()。
  • IPv6 不受第一个问题影响,因为 tcp_v6_syn_recv_sock() 会复制选项。IPv6 迁移/CALIPSO 问题正在单独的补丁中处理。

实际暴露面: 任何运行 IPv4 TCP 服务的主机——SSH、Web、Docker 发布的端口、BTCPay、Lightning 等——都可被触及。触发条件是 IP 头长度大于 5 的 SYN(即存在 IP 选项)。正常的 TCP 选项(MSS、窗口缩放、SACK、时间戳)不是 IP 选项,不受影响。


3. 受影响的内核与 Ubuntu 状态

3.1 Ubuntu 跟踪器快照(检查于 2026-10-31 11:59 UTC;页面最后更新于 2026-10-30)

尚未为任何受影响的 Ubuntu 发行版发布修复内核。 以下状态与上次检查相比没有变化。

发行版内核系列Ubuntu 状态
26.10 stonking7.3受影响,修复进行中(7.3.0-10.10)
26.04 LTS resolute7.0受影响,修复进行中(7.0.0-43.43)
24.04 LTS noble6.8受影响,修复进行中(6.8.0-149.149)
24.04 HWE 6.17 / 7.06.17 / 7.0受影响
22.04 LTS jammy5.15受影响,修复进行中(5.15.0-203.213)
22.04 HWE 6.86.8受影响,修复进行中(6.8.0-149.149~22.04.1)
20.04 LTS focal5.4受影响
18.04 LTS bionic4.15受影响
16.04 LTS xenial4.4受影响
14.04 LTS trusty3.13(默认)不受影响;HWE 内核可能受影响

云内核和衍生内核(aws、azure、gcp、gke、oracle、ibm、nvidia、lowlatency 等)也被列为受影响或修复进行中。请检查您运行的具体内核包;跟踪器列出了每一个。

3.2 哪些较旧内核不受影响

  • Linux 4.4 之前的上游内核不受主要 UAF 影响。易受攻击的设计由上游提交 079096f103fa("tcp/dccp: install syn_recv requests into ehash table")引入,该提交创作于 2015-10-02 并为 4.4 合并。该提交使请求套接字可以在没有监听锁的情况下被处理,这正是允许子套接字在 SYNACK 构建期间被释放的原因。
  • 使用默认 GA 内核的 Ubuntu 14.04(3.13) 早于该提交,被 Ubuntu 标记为不受影响。如果主机运行 HWE 内核,请检查跟踪器;基于 4.4 的 HWE 内核受影响。
  • Ubuntu 16.04(4.4) 及所有更新版本均受影响。
  • 注意事项:厂商内核可能将 079096f103fa 向后移植到较旧的基础版本中。请使用针对您确切软件包的 Ubuntu CVE 页面,而不要仅依赖版本号。
  • 截至 2026-10-31 11:59 UTC,修复尚未进入任何 Ubuntu 内核。只有当 Ubuntu 针对您的软件包声明已修复,并且您已启动到该内核时,内核才算"已修复"。

3.3 哪些措施不能解决此问题

  • 禁用 MPTCP 无济于事。 MPTCP 子流将握手交给相同的 IPv4 TCP 函数处理,而 MPTCP 监听器本身已经接受普通 TCP。
  • net.ipv4.tcp_migrate_req=0 可避免请求套接字迁移克隆变体,但不能修复主要的子套接字 UAF。它适合作为纵深防御,而非唯一的缓解措施。
  • 仅过滤 IPv6 对 IPv4 监听器无济于事。过滤器必须覆盖 IPv4 TCP。

4. 缓解策略

4.1 主要措施:打补丁的内核

  1. 关注 Ubuntu CVE 页面以及适用于你的发行版和内核变体的 Ubuntu 安全公告。
  2. 当修复后的内核可用时,升级、重启,并确认正在运行的内核是修复后的版本。
  3. 在重启进入修复内核完成之前,保持临时措施处于启用状态。
  4. 然后运行 sudo /usr/local/sbin/cve-2026-98432-mitigate disable 并验证规则已被移除。

4.2 临时措施:丢弃带 IP 选项的 IPv4 TCP

过滤器必须:

  • 仅匹配 IPv4(ip hdrlength),而非 IPv6。
  • 仅匹配 TCP(meta l4proto tcp),以便 IGMP、组播和 ping -R 继续正常工作。
  • 匹配 IP 头长度 > 5(5 × 4 = 20 字节,无选项;任何更大的值意味着存在 IP 选项)。
  • 在 conntrack 之前的 prerouting 阶段运行(优先级 -310,即 raw - 10),从而在连接跟踪之前覆盖主机、回环、Docker 发布的端口和 DNAT。
  • 计数被丢弃的数据包,以便查看规则是否生效。
  • 具备幂等性且可移除。

参考 gist 和 BTCPay PR 均实现了此方案。本目录中的脚本实现了相同的规则,并额外提供状态、状态查询、验证、开机持久化和禁用路径。

4.3 例外情况

下载工具