0xFuffM3/CVE-2026-31635-DirtyDecrypt
GitHub: 0xFuffM3/CVE-2026-31635-DirtyDecrypt
针对 Linux 内核 RxRPC 模块 CVE-2026-31635 本地提权漏洞的 PoC 利用代码与安全研究文档仓库。
Stars: 3 | Forks: 0
# CVE-2026-31635 · DirtyDecrypt
[](LICENSE)
[](https://www.kernel.org)
[](https://en.wikipedia.org/wiki/Privilege_escalation)
[]
## 目录
- [概述](#overview)
- [快速开始](#quick-start)
- [验证您的系统](#verify-your-system)
- [漏洞利用摘要](#exploit-summary)
- [受影响的系统](#affected-systems)
- [如何使用此仓库](#how-to-use-this-repository)
- [缓解措施](#mitigation)
- [常见问题解答](#faq)
- [仓库结构](#repository-layout)
- [参考资料](#references)
## 概述
本仓库包含 **CVE-2026-31635** 的研究资料和漏洞概念验证,这是一个存在于 Linux 内核 `net/rxrpc/rxgk.c` 中的本地提权漏洞。
该漏洞发生在 RxRPC 使用 AES-CBC 就地(in-place)解密数据包时,未事先确保数据包数据是私有的。如果数据包是由页缓存页面构建的,内核可能会直接解密到共享的文件映射内存中。
| 属性 | 详情 |
|---|---|
| **CVE** | CVE-2026-31635 |
| **组件** | `net/rxrpc/rxgk.c` — `rxgk_decrypt_skb()` |
| **根本原因** | 解密前缺少 `skb_cow_data()` 检查 |
| **影响** | 本地提权至 root |
| **受影响的内核** | 6.10 – 6.13 |
| **修复版本** | 6.13.2 · 6.12.10 · 6.6.75 |
## 快速开始
选择符合您目标的路径:
1. **验证漏洞**
- 检查内核版本和 `CONFIG_RXGK`
- 使用 `./dirtydecrypt --check`
2. **构建漏洞利用程序**
- `cd exploit`
- `make`
3. **阅读技术研究**
- 从 `docs/vulnerability-analysis.md` 开始
- 查看 `docs/patch-analysis.md` 和 `docs/exploit-development.md`
## 验证您的系统
运行以下检查以确定您的环境是否在受影响范围内:
```
uname -r
zgrep CONFIG_RXGK /proc/config.gz 2>/dev/null || grep CONFIG_RXGK /boot/config-$(uname -r)
```
如果内核版本在 `6.10–6.13` 范围内且启用了 `CONFIG_RXGK`,则系统可能存在漏洞。
然后使用漏洞利用程序的 PoC 验证模式:
```
cd exploit
./dirtydecrypt --check
```
## 漏洞利用摘要
该漏洞利用程序使用格式错误的 RxRPC 数据包,迫使内核将数据解密到共享的页缓存页面中。
步骤:
1. 从 setuid 二进制文件或其他敏感文件中选择一个可读的目标页面。
2. 使用受控的 AES 密钥创建 RxRPC 解密上下文。
3. 构建一个双片段 SKB,其中第一个片段映射到目标页面,第二个片段包含密文。
4. 在内核中调用 `rxgk_decrypt_skb()`。
5. 内核将明文写入目标页缓存条目,而不是私有缓冲区。
6. 执行被修改的二进制文件以获取 root 权限。
该漏洞利用在 `exploit/dirtydecrypt.c` 中进行了演示。
## 受影响的系统
### 已知的易受攻击范围
- Linux 内核 `6.10` 到 `6.13`
- `CONFIG_RXGK=m` 或 `CONFIG_RXGK=y`
### 发行版指南
- **Fedora 40, 41** — 原版内核在修补之前易受攻击
- **Ubuntu 24.10** — 默认 6.11 内核易受攻击
- **Debian unstable (Sid)** — 更新前的 6.12+ 内核易受攻击
- **Arch Linux** — 6.13.2 之前易受攻击
- **SUSE Linux Enterprise 15 SP7** — 修补之前的较旧 6.10 构建版本易受攻击
### 不受影响
- **RHEL 9** — 较旧的内核没有 `rxgk`
- **AWS Linux 2** — 较旧的内核系列
- **Android** — 典型的 Android 分支不受影响
- **GCE Container-Optimized OS** — 默认禁用 `CONFIG_RXGK`
## 如何使用此仓库
### 构建漏洞利用程序
```
git clone https://github.com/0xFuffM3/CVE-2026-31635-DirtyDecrypt.git
cd exploit
make
```
获取完全静态的二进制文件:
```
make static
```
### 安全运行漏洞利用程序
```
./dirtydecrypt --check
```
使用示例:
```
./dirtydecrypt -f /usr/bin/sudo -o /tmp/sudo_patched
./dirtydecrypt -p shellcode/payload.bin
```
### 推荐阅读顺序
1. `docs/vulnerability-analysis.md`
2. `docs/exploit-development.md`
3. `docs/patch-analysis.md`
4. `docs/affected-kernels.md`
## 缓解措施
### 立即措施
如果不需要 RxRPC,请将其禁用:
```
sudo rmmod rxrpc
sudo modprobe -r rxgk
echo "blacklist rxrpc" | sudo tee /etc/modprobe.d/blacklist-rxrpc.conf
```
### 永久措施
升级到已修补的内核版本:
- `6.13.2`
- `6.12.10`
- `6.6.75`
### 检测
审计相关的 socket 创建和密钥操作:
```
sudo auditctl -a always,exit -F arch=b64 -S socket -F a0=28 -k rxrpc_sock
```
## 常见问题解答
**问:此漏洞利用可以修改磁盘上的文件吗?**
答:不可以。该漏洞仅破坏页缓存内容;除非随后刷新该页面,否则磁盘上的底层文件保持不变。
**问:6.13 之后的内核是否存在此漏洞?**
答:不存在,补丁已向后移植,并且在 6.13.2 之后的内核中已修复了易受攻击的代码路径。
**问:测试此漏洞的最安全方法是什么?**
答:使用具有原版易受攻击内核和一次性用户账户的隔离 VM。
**问:我在哪里可以找到漏洞利用源码?**
答:请参阅 `exploit/dirtydecrypt.c` 和 `exploit/README.md`。
## 仓库结构
```
CVE-2026-31635-DirtyDecrypt/
├── README.md
├── LICENSE
├── DISCLAIMER.md
├── CHANGELOG.md
├── exploit/
│ ├── README.md
│ ├── dirtydecrypt.c
│ ├── Makefile
│ └── shellcode/
│ └── payload.asm
└── docs/
├── vulnerability-analysis.md
├── exploit-development.md
├── affected-kernels.md
├── patch-analysis.md
└── references.md
```
## 参考资料
- [Linux 内核补丁 — 提交 `a2567217`](https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a2567217)
- [NVD — CVE-2026-31635](https://nvd.nist.gov/vuln/detail/CVE-2026-31635)
- [`docs/references.md`](docs/references.md)
## 许可证
MIT — 见 [LICENSE](LICENSE)。
本仓库仅用于教育和授权的安全研究目的。
标签:安全渗透, 客户端加密, 自动回退