本仓库包含针对 CVE-2026-31431 的概念验证(PoC)漏洞利用代码,这是一个高严重性的 Linux 内核本地权限提升漏洞,允许任何无特权的本地用户获得 root 访问权限。该漏洞被命名为“Copy Fail”,位于 algif_aead 模块中,可与 AF_ALG 套接字接口和 splice() 系统调用链式利用,从而对任何可读文件(例如 setuid 二进制文件 /usr/bin/su)的页缓存执行受控的 4 字节写入。
该漏洞影响自 2017 年以来发布的几乎所有 Linux 内核,包括所有主流发行版(Ubuntu、Debian、RHEL、SUSE、Amazon Linux 等)。该漏洞于 2026 年 4 月 29 日公开披露。上游已提交修复(提交 a664bf3d603d),但许多厂商仍在发布已修补内核的过程中。在获得已修复的内核之前,强烈建议禁用 algif_aead 内核模块作为临时缓解措施。
⚠ 重要提示: 本材料仅供教育和授权安全研究之用。请勿将其用于您不拥有的系统,或未经明确许可使用。
本仓库包含两个 PoC 实现,从不同角度演示漏洞利用。
copy-fail-poc-short.py — 极简版,接近原始版本一个精简版本,与最初发布的 Python 漏洞利用代码非常接近。它使用单字母变量名,省略注释或常量,使其极为紧凑(732 字节)。该变体:
/usr/bin/su 和一个原始 AF_ALG AEAD 套接字。os.splice 从目标文件零拷贝传输相应的 4 字节块。/usr/bin/su 以进入 root shell。copy-fail-poc.py — 全面重构版,内容详尽一个完全重写、文档完善的版本,遵循 Python 最佳实践。该变体:
send_data_over_crypto_socket())隔离核心逻辑。此版本非常适合希望深入了解该漏洞或改编代码以进行进一步研究的人员。
从高层来看,该漏洞利用:
setuid 二进制文件(/usr/bin/su)。AF_ALG AEAD 套接字,并使用触发逻辑缺陷所需的参数进行配置。splice() 机制。algif_aead 模块中的缺陷,内核错误地将 4 字节攻击者控制的数据写入目标二进制文件的页缓存。/usr/bin/su 的内存页缓存实际上在运行时修补了该二进制文件,允许无特权用户执行返回 root shell 的修补版本。该漏洞利用极为可靠(100% 成功率),且不需要任何竞态窗口或针对特定内核的偏移量。
a664bf3d603d(git.kernel.org)