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

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

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

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Paranoid-CVE-2026-98432 — 丢弃 IP 报头中包含选项的入站 IPv4 TCP 数据包。 | Kitploit
工具/GitHubGitHub/scriptzteam/paranoid-cve-2026-98432
防御工具漏洞分析脚本与自动化配置审计网络安全错误配置事件响应
GitHubscriptzteam/paranoid-cve-2026-98432

Paranoid-CVE-2026-98432

丢弃 IP 报头中包含选项的入站 IPv4 TCP 数据包。

查看仓库
67天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Paranoid-CVE-2026-98432

丢弃 IP 头部包含选项的入站 IPv4 TCP 数据包。

针对 CVE-2026-98432 的一个小型、可逆的 iptables 临时缓解措施。

在当前网络命名空间中丢弃包含 IP 选项的 IPv4 TCP 数据包。 包含清晰的状态输出、可重复执行的 apply/remove 命令、只读 清单、可选的 systemd 服务以及独立的连接检查。

版本: 1.0.0 · 审查日期: 2026 年 10 月 30 日 · 要求: Linux + Bash + iptables

这是社区过滤措施,并非内核修复,也不是经供应商认证的完整 变通方案。存在规则并不能证明具备抵御漏洞利用的能力。请安装 供应商修复后的内核并启动进入该内核,或使用明确覆盖此 CVE 的受支持 livepatch。

快速开始

解压 ZIP,在此目录中打开终端,然后:

# Read-only inventory; no root required, although visibility may be limited.
bash paranoid-cve98432.sh audit

# Preview the firewall commands; no changes, no root required.
bash paranoid-cve98432.sh apply --dry-run

# Apply the two runtime rules.
sudo bash paranoid-cve98432.sh apply

# Check exact rules and packet counters.
sudo bash paranoid-cve98432.sh status

保持 SSH 会话处于打开状态,并确认第二个 SSH 连接和你的正常服务仍然可用。需要 IPv4 IP 选项的客户端可能会受到影响。

撤销:

sudo bash paranoid-cve98432.sh remove

仅移除该工具自身的精确标记规则。其他防火墙规则和所有 sysctl 设置均保留。你之前手动安装的规则,包括 我们对话中那条未标记的规则,不会被移除或采纳。

要求

依赖项用途
Bash脚本运行时
带有 IPv4 raw 表、u32 和 comment 匹配的 iptables数据包过滤
Root 和 CAP_NET_ADMIN应用、查看状态和移除
flock、stat、mkdir使用 /run 下的私有目录串行化变更
iproute2(ss)可选的监听器清单
Python 3.8+可选的验证辅助工具
Python 3.9+离线测试套件
systemd仅用于可选的启动持久化

Ubuntu/Debian 上的典型软件包:

sudo apt install iptables util-linux iproute2 python3

在 RHEL 系列系统上,提供 iptables 命令的软件包因发行版而异。请检查 dnf provides '*/iptables'。本工具不会安装软件包,也不会更改所选的 iptables 后端。

某些 iptables-nft 安装在其当前配置下不支持 u32。如果插入失败,工具会报告错误并回滚其新增的规则。不要在运行中的服务器上盲目切换防火墙后端;请改用与现有防火墙集成的原生 nftables 等效方案。

安装内容

以下为确切规则,并附带用于识别它们的注释:

iptables -w 10 -t raw -I PREROUTING 1 -p tcp \
  -m u32 --u32 '0>>24&0x0F=6:15' \
  -m comment --comment 'cve98432-guard:v1' -j DROP

iptables -w 10 -t raw -I OUTPUT 1 -p tcp \
  -m u32 --u32 '0>>24&0x0F=6:15' \
  -m comment --comment 'cve98432-guard:v1' -j DROP

IPv4 首部的第一个字节包含版本和 Internet 首部长度(IHL)。五个 32 位字是正常的 20 字节首部。IHL 为 6–15 表示存在 IP 选项。u32 会直接读取该字段。

  • PREROUTING 在到达的 IPv4 TCP 流量交付给监听者之前对其进行过滤。
  • OUTPUT 还会过滤本地生成的流量,包括尝试访问本地监听者的流量。它也可能丢弃携带 IP 选项的传出回复。
  • 这些规则会检查每一个匹配的 IPv4 TCP 数据包,而不仅仅是 SYN 数据包。它们不依赖于在可能分片的数据包中定位 TCP 标志。
  • 它们不会清空表、更改默认策略、更改端口、封锁 IP 地址、禁用 IPv6,也不会更改 SACK、时间戳和窗口缩放等普通 TCP 选项。

这些是 IPv4 IP 选项,是与 TCP 选项不同的首部字段。不带 IP 选项的正常 SSH、HTTPS 及其他流量不在匹配范围内。

重复应用不会增加更多副本。如果第二次插入失败,只会回滚该次调用尝试的规则;先前已存在的完全相同的规则会被保留。remove 还会清理本工具完全相同的规则的重复项。本工具的并发调用会被串行化。无关的防火墙管理器仍可能同时更改规则。

为什么这有帮助,以及它的局限

上游公告描述了在构建 SYN-ACK 或迁移请求时,IPv4 请求/套接字选项的释放后使用(use-after-free)问题。修复方案更改了两个析构函数,通过 RCU 延迟释放。

过滤携带 IP 选项的传入数据包,可防止通常由数据包提供的选项在这些钩子覆盖的路径上到达 TCP。这就是此临时缓解措施的依据。这是一种基于分析的缓解措施,并非对完整漏洞利用的复现,也不保证能阻止进入易受攻击代码的所有途径。

请检查以下限制:

情况限制 / 操作
容器、网络命名空间、VPN 命名空间规则按命名空间生效。主机规则不覆盖限制在另一命名空间内的流量。请在每个相关命名空间内检查并应用。容器共享主机内核。
Linux 网桥 / 二层转发这些 IPv4 规则不是完整的网桥策略。确保目标命名空间已被覆盖;如果该转发路径需要过滤,请使用 bridge 族规则。
隧道确认在解码后的内层 IPv4 路径上进行过滤。加密的外层数据包不会将内层 IP 选项暴露给外层过滤器。
与 SELinux 或 Smack 配合使用的 NetLabel / CIPSOCIPSO 可以通过内核标记路径填充请求选项。不要将入站首部过滤视为对该路径的覆盖。仅启用 SELinux 并不能证明已配置 CIPSO。
现有套接字或待处理请求添加过滤器不是对已创建内核对象的清理或修补。
防火墙重载重载、恢复、容器编排器或管理员可能移除/重排规则。请重新检查状态并重新应用。
更早的 raw 表终止规则新规则会放在位置 1,但后续规则更改可能将终止规则置于它们之前。请检查顺序。
需要 IP 选项的客户端其连接可能停止工作。这包括专门的安全标记部署。
IPv6这些规则不过滤 IPv6,也不处理单独跟踪的 IPv6/CALIPSO 迁移问题。

不会仅凭版本字符串、变更日志提及、空的监听者输出或零数据包计数器就自动声称内核已修补。厂商内核会向后移植修复,并有独立的 generic、cloud、HWE 及其他变体。已安装的新内核不一定是正在运行的内核。

MPTCP:有用的额外加固,但不是修复

Anthropic 10 月 27 日的报告描述了针对带有 MPTCP 监听者 的服务器的远程 root 漏洞利用。底层公告描述的是不限于 MPTCP 的 IPv4 TCP 竞态。这两个事实都很重要。

如果你的应用程序不需要 MPTCP,你可以单独禁用新的 MPTCP 套接字:

# Record the current value before changing it.
sysctl net.mptcp.enabled
sudo sysctl -w net.mptcp.enabled=0

此设置按网络命名空间生效,并控制新套接字的创建。 此命令不会将现有的 MPTCP 监听器转换为普通 TCP。 如有需要,请识别依赖服务并有意地重启/重新配置它们; 此工具不会重启服务。某些应用程序可能会失败,而不是 回退到普通 TCP。

若要持久化此更改(如果你选择这样做),请通过你常用的 sysctl 配置添加行 net.mptcp.enabled = 0。记录该文件 以及之前的运行时值,以便日后恢复。该防护工具的 remove 命令 不会还原单独进行的 sysctl 更改。

net.ipv4.tcp_migrate_req=0 同样只限制一种迁移机制。一个 reuseport BPF 迁移程序是另一种机制,而主要的竞态仍然存在。 这两个 sysctl 都不能替代打补丁。

验证

在服务器上:

sudo bash paranoid-cve98432.sh status

PRESENT 表示已安装完全匹配的标记规则。pkts 和 bytes 显示自插入以来的匹配次数。计数为零表示尚未统计到匹配;这并不能证明已提供保护或不存在攻击。

从一台未启用 IP 选项过滤的独立 Linux 客户端,针对你服务器上一个已知的开放端口:

python3 verify-filter.py SERVER_IPV4 22

该辅助工具会建立一个普通 TCP 连接和一个带 Record Route IP 选项的连接。它不发送任何应用数据,也不运行任何竞态或漏洞利用。

结果解读
普通连接成功;选项连接超时与路径中某处存在过滤的情况一致。确认带标记的目标 DROP 计数器增加。
两者均连接成功该路径上接受选项。这并不能确定内核是否已修补。
普通连接失败、选项设置失败或连接被拒绝结果不确定。检查端口、路由、本地选项支持和防火墙策略。

客户端自身的过滤器可能会丢弃出站探测包或带选项的回复。路由器也可能丢弃 IP 选项。仅凭超时并不能证明服务器规则已生效。该辅助工具刻意避免给出漏洞利用证明式的结论。

可选的重启持久化

运行时 apply 在重启后不会保留。提供的 systemd 单元会在启动时重新应用规则;如有需要,请显式安装它:

sudo install -m 0755 paranoid-cve98432.sh /usr/local/sbin/cve98432-guard
sudo install -m 0644 systemd/cve98432-guard.service \
  /etc/systemd/system/cve98432-guard.service
sudo systemctl daemon-reload
sudo systemctl enable --now cve98432-guard.service
sudo /usr/local/sbin/cve98432-guard status

该服务使用宿主机当前的 iptables 替代方案。在依赖该服务时,请勿更改该替代方案。它仅针对自身的命名空间;不会自动向 Docker/LXC 或其他命名空间注入规则。

该单元提供启动持久化,而非持续强制执行。在外部防火墙重新加载后,请运行:

sudo systemctl reload cve98432-guard.service
sudo /usr/local/sbin/cve98432-guard status

单独使用 systemctl is-active 并不能验证规则是否仍然存在。 为实现更强的集成,请将等效规则添加到您已经在使用的防火墙管理器中, 而不是依赖两个独立的管理器。

在确认已运行修复后的内核后,移除持久化安装:

sudo systemctl disable --now paranoid-cve98432.service
sudo /usr/local/sbin/cve98432-guard remove
sudo rm /etc/systemd/system/paranoid-cve98432.service
sudo systemctl daemon-reload
sudo rm /usr/local/sbin/paranoid-cve98432

显式的 remove 也会处理在运行时规则仍然存在时处于非活动状态的单元。如果先前的 stop/remove 命令失败,请不要执行文件删除步骤;请先检查错误。

其他网络命名空间

对于命名的 VPN/网络命名空间:

sudo ip netns exec YOUR_NAMESPACE bash ./paranoid-cve98432.sh apply
sudo ip netns exec YOUR_NAMESPACE bash ./paranoid-cve98432.sh status
# Later:
sudo ip netns exec YOUR_NAMESPACE bash ./paranoid-cve98432.sh remove

对于容器命名空间,请使用宿主机的工具,并显式指定容器 PID 以及 nsenter -t PID -n。在命名空间重建后需重新应用。本软件包不会发现容器、授予容器能力,也不会在容器镜像内写入。

命令与退出码

命令行为
status(默认)检查精确规则和原始表计数器;不修改防火墙
apply添加缺失的运行时规则
remove仅删除精确标记的规则
audit读取内核、操作系统、命名空间、监听器及相关 sysctl
apply --dry-run / remove --dry-run打印命令;不调用 iptables
--version / --help显示版本/帮助

Guard 退出码:0 命令成功(对于 status:两条规则均存在),1 操作错误,2 参数错误,3 status 发现一条或两条规则缺失。Audit 退出码 0 表示清点完成,并不表示机器安全。

Probe 退出码:0 结果与过滤一致,2 选项被接受或 CLI 参数无效,3 无法确定。

测试与验证

bash -n paranoid-cve98432.sh
python3 -m unittest discover -s tests -v

主要参考资料:

  • Ubuntu CVE 跟踪器
  • Red Hat CVE 公告
  • Linux CVE 公告
  • 上游修复
  • Anthropic 报告,第 5 节
  • 内核 MPTCP sysctl 文档
  • Netfilter u32 文档

公告状态会发生变化。请针对你实际运行的内核软件包使用当前的厂商信息,而不是工作进展中的跟踪器行里计划发布的版本号。

下载工具