[!WARNING] 本 PoC 仅用于帮助防御者、维护者和经授权的安全团队验证其拥有或明确获授权测试的系统上的补丁、缓解措施、检测规则和暴露面。
您需自行确保对本材料的使用是合法、经授权、受控的,并在隔离的测试环境中进行。
[!WARNING] 本 PoC 具有破坏性。 它会故意破坏活动内核内存。 一次位置错误的覆写可能会破坏无关的内核内存,导致机器挂起/崩溃。
仅在一次性 VM/临时主机上运行。
该 PoC:
struct file 对象,并将已填充的 fdtable 整理到目标分配中dev_hard_header() 重新分配 skb head,然后利用过期的 PPPoE 头指针将某个 fdtable 条目重定向到伪造的 file,并且/bin/sh -p。该 PoC 假定并针对 x86-64,以保持简单。理论上,该漏洞不应与架构相关,但你需要移植大量内容(从泄漏内核基址到链条的其余部分)。
为完整起见,详尽列举如下:
6.19.10-300.fc44.x86_64,或 Ubuntu 24.04 搭配 6.8.0-124-generic 或 6.8.0-136-generic(你可以尝试移除这些检查,但其他发行版/内核版本可能需要针对每个目标进行定制/整理)passwd 条目以及其拥有的主目录CAP_NET_ADMIN 和 CAP_NET_RAW/dev/fuse 的读写访问权限,以及 Fedora 上的 FUSE、PPPoE、IP6GRE、AF_PACKET/TX-ring 和 team 支持,或 Ubuntu 上的 bonding 支持membarrierRLIMIT_NOFILE 硬限制足够大,以容纳所选载体几何结构,在运行时检查,可能需要最多 8,192 个描述符gcc、taskset、unshare、ip、true 和 /bin/sh,以及在 Ubuntu 上如果直接 unshare -Urn 被拒绝,还需要 aa-exec 和已加载的 trinity 配置文件仅在 4GB RAM 和各种 4+ CPU 数量下测试过。其他 CPU/内存组合可能需要更多整理,和/或可能将写入重定向到无关内存。
以具有 passwd 条目的非特权用户身份运行它。Ubuntu 转换可能需要一段时间(例如 300+ 次尝试)。
python3 pppoeject_root_repro.py