AlexanderGumeniuk/CVE-2025-32434
GitHub: AlexanderGumeniuk/CVE-2025-32434
该项目是 CVE-2025-32434 的概念验证代码,演示了 PyTorch torch.load() 函数中即使启用 weights_only=True 仍可被绕过实现远程代码执行的安全漏洞。
Stars: 1 | Forks: 0
# CVE-2025-32434:PyTorch RCE 漏洞 - PoC
## 什么是 CVE-2025-32434?
**CVE-2025-32434** 是 PyTorch 中的一个严重的远程代码执行 (RCE) 漏洞,PyTorch 是一个广泛用于深度学习和神经网络的 Python 库。
### 核心问题
该漏洞存在于 `torch.load()` 函数中,即使使用了被认为是安全的 `weights_only=True` 参数也是如此。`weights_only=True` 选项旨在通过限制仅加载模型参数来防止代码执行。然而,研究人员找到了绕过此保护的方法。
### 受影响版本
| 状态 | 版本 |
|--------|---------|
| **存在漏洞** | PyTorch 2.5.1 及所有更早版本 |
| **已修复** | PyTorch 2.6.0 及更高版本 |
### 严重程度
- **CVSS 评分**:**10 分满分中的 9.8 分**(严重)
- **发现者**:Ji'an Zhou(在 Black Hat USA 2025 上公布)
- **影响**:当加载恶意模型时,未经身份验证的攻击者可以执行任意代码
- **用户交互**:无需
### 技术影响
未经身份验证的攻击者可以创建一个恶意模型文件,当受害者加载该文件时,它会执行任意代码。该攻击无需用户交互,并可能导致系统被完全攻破。该漏洞利用了 PyTorch 使用 Python 的 `pickle` 序列化的方式,允许攻击者将恶意代码嵌入到模型文件中。
### 危险性
此漏洞尤其危险,因为许多开发者依赖 `weights_only=True` 作为一种安全措施,但此漏洞证明即使是“安全”选项也不足以防范风险。
## PoC 的工作原理
提供的 `full.py` 脚本演示了如何创建一个恶意的 PyTorch 模型,该模型在被加载时会向文件系统写入内容。
### 攻击流程
1. **Payload 创建**:脚本生成一个包含反向 shell payload 的 cron 条目
2. **ASCII 转换**:将 payload 字符串转换为 ASCII 码列表
3. **内存映射**:使用 `torch.from_file()` 创建一个指向目标 cron 文件的内存映射 tensor
4. **数据写入**:将 ASCII 值复制到内存映射区域,从而有效地写入该文件
5. **模型序列化**:将此操作保存为 TorchScript 模型
6. **执行**:在加载并执行时,模型会将 payload 写入目标文件
### 代码示例
```
# 内存映射文件写入
t = torch.from_file("/etc/cron.d/rev",
shared=True,
size=len(asciis),
dtype=torch.uint8)
msg = torch.tensor(asciis, dtype=torch.uint8)
t.copy_(msg) # Writes to /etc/cron.d/rev
```
# CVE-2025-32434 PoC - 用户指南
## 如何使用此概念验证
本指南提供了有关如何使用 CVE-2025-32434 概念验证 (PoC) 脚本的分步说明。
## 前置条件
在开始之前,请确保您具备:
- 已安装 **PyTorch 2.5.1 或更早版本**(存在漏洞的版本)
### 安装 PyTorch
```
# 安装 PyTorch(用于测试的漏洞版本)
pip install torch==2.5.1
```
# 或者安装最新版本(用于测试修复情况)
```
pip install torch
```
标签:Maven, PyTorch, 凭据扫描, 漏洞验证, 编程工具, 远程代码执行, 逆向工具