yanxinwu946/CVE-2026-46331

GitHub: yanxinwu946/CVE-2026-46331

针对 Linux 内核 act_pedit 模块页缓存损坏漏洞(CVE-2026-46331)的本地提权利用代码,支持多种主流 Linux 发行版。

Stars: 4 | Forks: 0

# PACKET_EDIT_MEME - CVE-2026-46331 net/sched `act_pedit` 部分 COW 页缓存损坏(问题提交 899ee91156e5, 存在于 v5.18 .. 修复于 v7.1-rc7)。`packet_edit_meme.c` 将其转化为 无特权本地 root:一个 userns CAP_NET_ADMIN 子进程用 `setgid(0)+setuid(0)+execve("/bin/sh")` shellcode 覆盖了 setuid-root 二进制文件的缓存 ELF 元数据。 ``` make ./packet_edit_meme ./packet_edit_meme --ubuntu # AppArmor-gated Ubuntu: aa-exec bypass first ``` ## 目标 | 发行版 | 内核 | 标志 | 结果 | |---------------------|-------------------|------------|--------| | RHEL 10.0 | 6.12.0 | (无) | ROOT | | Debian 13 trixie | 6.12.90+deb13.1 | (无) | ROOT | | Ubuntu 24.04.4 | 6.17.0-22 | `--ubuntu` | ROOT | | Alpine edge | 7.0.10-0-stable | (无) | ROOT | ## Alpine PIE 修复 Alpine Linux (musl) 编译的 PIE 可执行文件中,可执行文件的 PT_LOAD 段从文件偏移量 ≥ `0x1000` 处开始 —— 超出了 pedit TCP 头部 511 字节的偏移量 限制。ELF 头和程序头占据第一个 只读 PT_LOAD(文件偏移量 0)。此适配的 exploit: 1. **使页 0 可执行**,方法是在文件偏移量 `0xB4`(phdr[2] + 4)处的第一个 PT_LOAD 的 `p_flags` 字段中添加 `PF_X`。 2. **拆分 shellcode** 以避免损坏关键的 LOAD 程序头: - `e_entry` → `0x28`(内核在 exec 时不会检查的 `e_shoff` 字段 )。 - 文件偏移量 `0x28` 处的 **跳板**:一个 5 字节的 `jmp 0x1C8`。 - 文件偏移量 `0x1C8` 处的 **Shellcode**,覆盖内核在 exec 期间忽略的 PT_NOTE 程序头。 3. **以 `/bin/mount` 为目标**(或非 `nosuid` 文件系统上任何全局可读的 setuid-root 二进制文件)—— Alpine 的 `/bin/su` (-> `/bin/bbsuid`) 具有 `---s--x--x` 权限,无特权用户无法打开它。 ## Ubuntu AppArmor 限制 Ubuntu 通过两个 sysctl 拒绝无限制的无特权 userns: ``` kernel.apparmor_restrict_unprivileged_userns # denies unconfined userns creation kernel.apparmor_restrict_unprivileged_unconfined # forces unconfined change_profile to STACK, # so an aa-exec permissive profile cannot # shed the userns restriction ``` `--ubuntu` 通过 `aa-exec -p {trinity,chrome,flatpak}`(包含 `userns,` 规则的配置文件 )重新执行。 | Ubuntu | userns | 无限制 | aa-exec 绕过 | |------------------|--------|------------|----------------| | 24.04.4 | 1 | 0 | 有效 | | 26.04 | 1 | 1 | 已关闭 | ## 构建依赖 一个静态的 `x86_64-linux-gnu` 交叉编译器: ``` # Debian / Ubuntu apt install gcc-x86-64-linux-gnu # Alpine apk add gcc musl-dev ```
标签:CSV导出, Web报告查看器, 内核漏洞, 安全渗透, 客户端加密, 本地提权