ishankaru/CVE-2026-23111-nftables-lab

GitHub: ishankaru/CVE-2026-23111-nftables-lab

针对 Linux nf_tables 本地提权漏洞 CVE-2026-23111 的防御性暴露检测工具与一次性虚拟机复现实验室,不含漏洞利用代码。

Stars: 0 | Forks: 0

# CVE-2026-23111 nf_tables LPE:暴露检查与安全实验室 针对 CVE-2026-23111(Linux 内核中 `nf_tables` 的释放后重用本地权限提升漏洞,即 `nft_map_catchall_activate()` 中元素活动状态检查反转的“off by !”漏洞)的防御性工具和可复现的**虚拟机**实验室。 无特权的本地用户可以通过无特权 user namespaces 提权至 root,并从容器中逃逸。 本仓库**不提供任何漏洞利用代码**。它包含一个只读的暴露检查器、一个用于创建真正的无特权用户的脚本,以及虚拟机定义文件,以便您能安全地触达该漏洞并研究公开的研究成果。完整的 root 提权利用链位于下方链接的披露报告中,而非本仓库中。 完整分析报告:https://techearl.com/cve-2026-23111-nftables-lpe ## 文件 - `check-exposure.sh` — 只读检测器:对比内核版本与已修复构建、检查 `nf_tables` 是否存在、无特权 userns 前置条件,以及内核日志崩溃特征。 - `setup-unprivileged-user.sh` — 创建一个没有 sudo 权限的 `labuser`,并证明其确实无特权。LPE 测试的核心在于必须从一个本身无法获取 root 权限的用户开始。 - `Vagrantfile` — 一次性的 Debian 12 和 AlmaLinux 10 虚拟机(Multipass 无法启动这些发行版)。 ## 为什么使用 VM 而不是容器 容器共享宿主机内核。在容器内运行内核漏洞利用等同于在您真实的宿主机内核上运行,因此所谓的“测试”可能会危及实体机。请使用拥有独立内核的一次性 VM。 ## 发行版与启动工具 | 发行版 | 启动工具 | 原因 | |---|---|---| | Ubuntu 24.04 / 22.04 | Multipass(仅限 Ubuntu) | Exodus 在两者上均复现了该漏洞;24.04 默认开启了 AppArmor userns 限制,因此能展示该缓解措施。 | | Debian 12 | Vagrant (`vagrant up debian`) | Exodus 在其上复现了该漏洞;默认开放无特权 userns。 | | AlmaLinux / Rocky 10.1 | Vagrant (`vagrant up alma`) | 匹配 FuzzingLabs 的目标内核 `6.12.0-124.x.el10`,因此能如他们公布的那样复现公开的触发程序。 | Multipass 仅能启动 Ubuntu,这就是其他发行版使用 Vagrant 的原因。 ## 锁定易受攻击的内核(按发行版) 每个发行版都需要使用不同的技巧,才能启动一个真正未修复且在云 VM 中仍能保持网络正常连接的内核: - **Ubuntu (云):** 使用旧版的 `linux-aws`,而不是 `linux-generic`。通用内核(generic kernel)缺少 AWS **ENA** 网卡驱动,会导致在 Nitro 实例上丢失 SSH 连接。执行 `sudo apt install -y linux-image-6.8.0-1028-aws`(低于已修复的 `6.8.0-1051` 版本),在 GRUB 中将其设为默认,然后重启。在本地虚拟化环境中,通用内核没有问题。 - **Debian:** 主仓库只包含当前(已修复)的内核。添加一个未修复的快照镜像并安装 `cloud` 内核(保留了 ENA 支持):`deb [check-valid-until=no trusted=yes] https://snapshot.debian.org/archive/debian/20251201T000000Z/ bookworm main`,然后执行 `apt install -y linux-image-6.1.0-39-cloud-amd64=6.1.148-1`(低于已修复的 `6.1.164-1`,DSA-6163-1)。 - **AlmaLinux/Rocky:** 易受攻击的 `el10_1` 内核位于 10.1 vault 中。将 dnf 指向 `https://vault.almalinux.org/10.1/BaseOS/x86_64/os/` 并执行 `dnf install kernel-6.12.0-124.38.1.el10_1`,然后执行 `grubby --set-default`。 ## 运行它(任意 VM) ``` # 1. 创建一个真实的非特权用户并证明其无法 sudo。 # (使用 useradd,而不是 Debian 的 adduser,因此它在 RHEL 上也能运行。) sudo bash setup-unprivileged-user.sh labuser # 2. Exposure 判定。 sudo ./check-exposure.sh # 3. 作为 labuser,先执行 precondition,然后在 netns 内触发公开的 nft。 sudo -u labuser unshare -Ur id # uid=0 in a new userns = precondition open # (denied on stock Ubuntu 24.04 = mitigation working) # 公开的 FuzzingLabs 触发器(catchall GOTO + aborted batch)。此处内联作为 # 文档;本 repo 不提供可执行的 exploit/trigger 文件。 sudo -u labuser unshare -Urn bash -c ' nft add table inet t; nft add chain inet t c nft add map inet t m "{ type ipv4_addr : verdict; }" nft add element inet t m "{ * : goto c }" printf "delete element inet t m { * }\ndelete element inet t m { 1.2.3.4 }\n" > /tmp/b.nft nft -f /tmp/b.nft; nft flush ruleset' ``` 该序列会运行存在缺陷的 abort 路径;它**不包含**权限提升利用链,并且在原版内核上是静默的(见下文)。 ## 我实际观察到的情况(三种类型,真实有效) | 发行版 | 启动的易受攻击内核 | userns 默认设置 | 结论 | |---|---|---|---| | Ubuntu 24.04 | `6.8.0-1028-aws` | 受限 (AppArmor) | 已缓解,未修复 | | Debian 12 | `6.1.0-39-cloud` (`6.1.148-1`) | 开放 | 存在风险 | | AlmaLinux 10.1 | `6.12.0-124.38.1.el10_1` | 开放 | 存在风险 | 关于触发程序的客观发现:**在原版生产内核上它是静默的。** 它运行了存在缺陷的 abort 路径,没有任何崩溃且没有 `dmesg` 输出,即使在循环执行释放并重用(free-and-reuse)的情况下也是如此。分析文章中提到的 `KASAN: slab-use-after-free` 输出来自于 KASAN/调试内核;要将潜在的释放后重用武器化,需要利用漏洞的堆喷射(heap spray,不包含在本仓库中)。该实验室证明了无特权用户能够触达该漏洞,展示了 Ubuntu 默认的 AppArmor 限制拦截了该路径,并给出了明确的“存在风险 / 已缓解 / 已修复”结论。原则上,它不会直接为您提供一个 root shell。 ## 缓解措施 限制无特权 user namespaces(这会封堵公开漏洞利用的现实路径),然后修补内核。 ``` # Ubuntu 23.10+(基于 AppArmor,保持合法的 userns 用户正常工作): echo "kernel.apparmor_restrict_unprivileged_userns=1" | sudo tee /etc/sysctl.d/99-restrict-userns.conf sudo sysctl --system # 其他系统(全面禁用;在 Debian/Ubuntu 上同时设置两者): printf 'kernel.unprivileged_userns_clone=0\nuser.max_user_namespaces=0\n' | sudo tee /etc/sysctl.d/99-restrict-userns.conf sudo sysctl --system # Patch(Ubuntu 24.04 generic 已在 6.8.0-107.107 中修复): sudo apt update && sudo apt install --only-upgrade linux-image-generic && sudo reboot ``` ## 参考 - NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-23111 - Exodus Intelligence "Off By !": https://blog.exodusintel.com/2026/06/08/off-by-exploiting-a-use-after-free-in-the-linux-kernel/ - FuzzingLabs reproduction: https://fuzzinglabs.com/repro-cve-2026-23111/ - Ubuntu: https://ubuntu.com/security/CVE-2026-23111 - Red Hat: https://access.redhat.com/security/cve/cve-2026-23111 - Debian: https://security-tracker.debian.org/tracker/CVE-2026-23111 ## 许可证 MIT。仅限防御和教育用途。
标签:Linux内核, Vagrant, Web报告查看器, 安全渗透, 安全漏洞检测, 应用安全, 本地提权, 虚拟化实验环境, 配置修复