abhishekhargan/CVE-2026-31431
GitHub: abhishekhargan/CVE-2026-31431
该项目是一个 Linux 内核本地提权漏洞(CVE-2026-31431)的概念验证利用代码,通过滥用 AF_ALG 加密接口与 splice 系统调用的交互缺陷,实现从普通用户到 root 权限的提升。
Stars: 0 | Forks: 0
# CVE-2026-31431: "Copy Fail" - Linux 内核本地提权漏洞
## 📢 免责声明
**本仓库严格用于教育和网络安全研究目的。** 对该漏洞利用代码的分析旨在理解其底层漏洞原理,促进补丁程序的开发以及制定防御策略。请勿将此用于您未拥有或未获得明确授权进行测试的系统。
## 📝 概述
“**Copy Fail**”是在 **Linux 内核** 中发现的一个严重的本地提权(LPE)漏洞。它允许无特权用户通过利用内核在处理文件系统与异步密码学 API(`AF_ALG`)之间内存操作时的缺陷来获取 `root` 权限。
## ⚙️ 工作原理(技术深入解析)
提供的 Python 漏洞利用程序结合了一些鲜为人知的 Linux 系统调用和接口,在内核内存中实现任意越界(OOB)写入,随后将其转化为磁盘上的任意文件写入。
以下是攻击链的逐步分解说明:
### 1. `AF_ALG` 接口初始化
```
a=s.socket(38, 5, 0)
a.bind(("aead","authencesn(hmac(sha256),cbc(aes))"))
```
该脚本创建了一个 `AF_ALG` 套接字(协议族 38)。此接口允许用户空间应用程序将加密操作卸载到内核中。它专门请求了一个结合了 HMAC-SHA256 和 CBC-AES 的 AEAD(带有相关数据的认证加密)密码链。
### 2. 通过 `setsockopt` 造成状态混淆
```
v(h,1,d('0800010000000010'+'0'*64))
v(h,5,None,4)
```
该脚本使用 `setsockopt` 来操纵套接字的内部状态。其中的十六进制 payload 和 `None` 参数经过精心构造,旨在触发内核加密 API 缓冲区管理中的边界条件或整数溢出。这会在内核内部“安全地”使复制操作失败,从而使套接字处于不一致的易受攻击状态。
### 3. 使用 `splice()` 进行零拷贝数据传输
```
n=g.splice; n(f,w,o,offset_src=0); n(r,u.fileno(),o)
```
这是该漏洞利用的核心。`splice()` 完全在内核空间中的文件描述符之间直接移动数据,而不是将数据读取到用户空间然后再写回。
该脚本打开了 `/usr/bin/su`(一个 SUID root 二进制文件),并尝试将数据从其中拼接(splice)到配置错误的 `AF_ALG` 套接字中。由于套接字的状态在第 2 步中已被破坏,内核的边界检查在此零拷贝操作期间失效。
### 4. Payload 注入循环
```
e=zlib.decompress(d("78da..."))
while i
标签:AF_ALG, Copy Fail, CVE-2026-31431, EDR绕过, Hpfeeds, LPE, OOB Write, PoC, setsockopt, splice, Web报告查看器, 代码安全, 任意文件写入, 内存安全, 内核漏洞, 安全渗透, 底层安全, 异步加密API, 情报收集, 提权Exploit, 数据展示, 整数溢出, 暴力破解, 本地提权, 漏洞分析, 漏洞枚举, 漏洞研究, 系统调用, 红队, 缓冲区溢出, 网络安全, 越界写入, 路径探测, 逆向工具, 隐私保护, 零拷贝, 高交互蜜罐