MohamedKarrab/Copy-Fail-CVE-2026-31431
GitHub: MohamedKarrab/Copy-Fail-CVE-2026-31431
Linux 内核 CVE-2026-31431 本地提权漏洞的概念验证复现工具,通过滥用 AF_ALG AEAD 实现中的散集/聚集边界缺陷篡改 setuid-root 二进制文件的内核页缓存,实现非特权用户到 root 的权限提升。
Stars: 0 | Forks: 0
# Copy-Fail-CVE-2026-31431
Linux 内核漏洞 **CVE-2026-31431**(又称 *Copy Fail*)的**概念验证漏洞复现**。
致谢:[Copy Fail](https://copy.fail/)
## 受影响的系统
* Linux 内核版本 **4.14 及更新版本**
* **从 2017 年到补丁部署期间**发布的大多数主要发行版(Ubuntu, Debian, Fedora, RHEL...)
## 与原始漏洞利用的区别
#### 未精简且可读的代码
* 原始漏洞利用代码非常紧凑
* 此版本已完全展开
#### 备份和恢复二进制文件
* 创建**目标二进制文件的备份(例如 `/usr/bin/su`)**
* 通过哈希值验证完整性
* 执行后恢复原始状态(如果成功)
## 概念验证
``` git clone https://github.com/MohamedKarrab/Copy-Fail-CVE-2026-31431.git cd Copy-Fail-CVE-2026-31431 # 默认针对 /usr/bin/su python fail.py # 或任何 setuid-root (passwd, mount, chsh, sudo, pkexec...) python fail.py /usr/bin/passwd ``` # 警告 如果漏洞利用失败,目标二进制文件可能无法恢复到其原始状态。可以通过以下方式修复: - 直接**重启**设备。重启会清除页缓存(该漏洞利用不会修改磁盘上的二进制文件)。 - 或者,从受信任的软件包中恢复干净的 `/usr/bin/su`(或选定的二进制文件)。 **Debian / Ubuntu:** ``` sudo apt-get install --reinstall util-linux ``` **Fedora / RHEL:** ``` sudo dnf reinstall util-linux ``` **Arch:** ``` sudo pacman -S util-linux ``` ## 技术概述 该漏洞利用滥用 AF_ALG AEAD 实现,将任意 4 字节的数据块写入 `/usr/bin/su`(一个 setuid-root 二进制文件)的内核页缓存中。 - 使用非特权 AF_ALG socket + 精心构造的 `sendmsg/splice` 对,将数据注入 AES-CBC-HMAC 处理过程 - 利用散集/聚集边界 Bug,使解密后的 AAD 字节落入缓存的二进制文件中 - 在不触及磁盘的情况下,破坏 `/usr/bin/su` 内存中的 `.text` 节 最后,执行 `/usr/bin/su` 会加载被篡改的页缓存,由于 setuid 机制,注入的代码将以 root 权限运行。 ## 缓解措施 - 更新到已修补的内核版本 - 阻止 AF_ALG socket 的创建: ``` echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf rmmod algif_aead 2>/dev/null ``` ## 免责声明 - 本代码仅供**教育和测试目的**使用。 - 仅在**您拥有或已获得明确授权**进行测试的系统上使用。 - 对任何误用或造成的损害,我**概不负责**。 ## 参考资料 - [NVD - CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431) - [Copy Fail: 732 Bytes to Root](https://xint.io/blog/copy-fail-linux-distributions)
``` git clone https://github.com/MohamedKarrab/Copy-Fail-CVE-2026-31431.git cd Copy-Fail-CVE-2026-31431 # 默认针对 /usr/bin/su python fail.py # 或任何 setuid-root (passwd, mount, chsh, sudo, pkexec...) python fail.py /usr/bin/passwd ``` # 警告 如果漏洞利用失败,目标二进制文件可能无法恢复到其原始状态。可以通过以下方式修复: - 直接**重启**设备。重启会清除页缓存(该漏洞利用不会修改磁盘上的二进制文件)。 - 或者,从受信任的软件包中恢复干净的 `/usr/bin/su`(或选定的二进制文件)。 **Debian / Ubuntu:** ``` sudo apt-get install --reinstall util-linux ``` **Fedora / RHEL:** ``` sudo dnf reinstall util-linux ``` **Arch:** ``` sudo pacman -S util-linux ``` ## 技术概述 该漏洞利用滥用 AF_ALG AEAD 实现,将任意 4 字节的数据块写入 `/usr/bin/su`(一个 setuid-root 二进制文件)的内核页缓存中。 - 使用非特权 AF_ALG socket + 精心构造的 `sendmsg/splice` 对,将数据注入 AES-CBC-HMAC 处理过程 - 利用散集/聚集边界 Bug,使解密后的 AAD 字节落入缓存的二进制文件中 - 在不触及磁盘的情况下,破坏 `/usr/bin/su` 内存中的 `.text` 节 最后,执行 `/usr/bin/su` 会加载被篡改的页缓存,由于 setuid 机制,注入的代码将以 root 权限运行。 ## 缓解措施 - 更新到已修补的内核版本 - 阻止 AF_ALG socket 的创建: ``` echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf rmmod algif_aead 2>/dev/null ``` ## 免责声明 - 本代码仅供**教育和测试目的**使用。 - 仅在**您拥有或已获得明确授权**进行测试的系统上使用。 - 对任何误用或造成的损害,我**概不负责**。 ## 参考资料 - [NVD - CVE-2026-31431](https://nvd.nist.gov/vuln/detail/CVE-2026-31431) - [Copy Fail: 732 Bytes to Root](https://xint.io/blog/copy-fail-linux-distributions)
标签:0day挖掘, AEAD, AES-CBC-HMAC, AF_ALG, Copy Fail, CVE-2026-31431, Debian, Exploit, Fedora, Linux漏洞, LPE, Page Cache, PoC, RHEL, sendmsg, setuid, splice, Web报告查看器, 二进制利用, 内核安全, 内核漏洞, 利用代码, 子域名枚举, 安全测试, 安全渗透, 提权, 攻击性安全, 数据展示, 暴力破解, 本地提权, 概念验证, 漏洞复现, 系统安全, 红队, 网络安全, 逆向工具, 隐私保护, 页面缓存