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()