Share
## https://sploitus.com/exploit?id=68646F3A-4C45-56B3-AFC4-D1513DEFAA64
# CVE-2024-48063: PyTorch RemoteModule 反序列化远程代码执行漏洞
## 漏洞概述
CVE-2024-48063 是一个影响 PyTorch 2.4.1 及更早版本的安全漏洞,可能导致反序列化远程代码执行(Remote Code Execution, RCE)。该漏洞存在于 PyTorch 的 RemoteModule 中,当处理恶意序列化的数据时,可能导致攻击者远程执行任意代码。
## 技术细节
**受影响版本**
- 所有 PyTorch <= 2.4.1 的版本
**漏洞类型**
- 反序列化远程代码执行(Deserialization RCE)
**严重级别**
- 高
### 漏洞原理
漏洞主要源于 RemoteModule 处理序列化数据时缺乏充分的输入验证。在没有严格的安全检查的情况下,恶意数据可以通过反序列化过程注入并执行代码,进而被利用以控制系统。
### 漏洞利用方法
攻击者可以利用恶意构造的序列化数据,通过 RemoteModule 反序列化功能发送到易受攻击的 PyTorch 实例上。如果没有安全保护机制,PyTorch 会在反序列化时执行这些恶意代码,导致远程代码执行。
## 修复建议
### 临时解决方案
- 避免使用不受信任的 RemoteModule 序列化数据
- 等待并及时更新到官方修复的版本(发布后)
- 实施输入验证和序列化数据的安全检查
### 安全最佳实践
- 在生产环境中仅使用经过安全验证的 PyTorch 版本
- 定期检查并更新所有依赖项
- 建立安全的序列化/反序列化策略,确保数据来源可信
## 相关资源
- [NIST 漏洞追踪状态](https://nvd.nist.gov/):此漏洞已被 NIST 确认并记录
- [安全公告](https://pytorch.org/security/):公告将持续更新
- 技术支持:可通过 PyTorch 官方渠道获取
### PyTorch 中的 `rpc.remote` 使用简介
在 PyTorch 的分布式环境中,`rpc.remote` 函数用于调用远程函数。它可以在指定的节点上异步执行函数,并立即返回一个远程引用(RRef),供你稍后访问远程计算的结果。
#### 使用 `rpc.remote` 的基本步骤
1. **初始化 RPC**:使用 RPC 前,先用 `rpc.init_rpc` 初始化 RPC 框架。
2. **调用 `rpc.remote`**:
- 指定目标节点的名称或 ID。
- 传入要调用的函数及参数。
- 该函数异步执行,返回一个 RRef 对象。
3. **处理返回值**:通过 RRef 可以获取远程计算结果,但要注意,RRef 是远程对象的引用,不是直接的数据。
#### 示例代码
以下是使用 `rpc.remote` 的简单示例:
```python
import torch
import torch.distributed.rpc as rpc
# 初始化 RPC
rpc.init_rpc("worker0", rank=0, world_size=2)
# 定义一个加法函数
def add_tensors(tensor1, tensor2):
return tensor1 + tensor2
# 使用 rpc.remote 调用远程函数
rref_result = rpc.remote("worker1", add_tensors, args=(torch.ones(2), torch.ones(2) * 2))
# 获取结果
result = rref_result.to_here() # 阻塞直到结果可用
print(result) # 输出: tensor([3., 3.])
# 关闭 RPC
rpc.shutdown()