HuggingFace transformers漏洞CVE-2026-4372
Transformers 是 Hugging Face 推出的一个开源 Python 深度学习库,主打开箱即用的预训练大模型,覆盖文本、图像、音频、多模态。
一、基本情况
Google 于 2017 年提出Transformer 架构,Transformers 库把这些模型统一封装、标准化接口,让普通开发者一行代码就能用大模型。

HuggingFace transformers 是开源 Python 机器学习库,用于自然语言处理和深度学习模型加载与推理,当前 AI 开发工业级标准工具。
栋科技漏洞库关注到 HuggingFace transformers 在 5.3.0 之前的版本远程代码执行漏洞,追踪为CVE-2026-4372,CVSS 3.0评分7.8。
二、漏洞分析
CVE-2026-4372漏洞是 HuggingFace transformers 库中的一个高危远程代码执行漏洞,漏洞由三个设计缺陷共同导致,危害极其严重。
huggingface/transformers库中通过`_attn_implementation_internal`配置注入实现任意远程代码执行(无需开启`trust_remote_code`)。
受影响版本中, PretrainedConfig.__init__ 在处理 config.json 中的额外参数时,
未过滤 _attn_implementation_internal 和 _experts_implementation_internal 等内部字段,
允许攻击者通过在 config.json 中嵌入指向恶意 HuggingFace Hub 仓库的字段,
使 transformers 在加载配置时下载并执行攻击者仓库中的任意 Python 代码,以受害者的操作系统权限执行。
修复版本中通过在 setattr 前添加字段白名单校验,
并将 attn_implementation 限定为只能加载 kernels-community 官方仓库的代码,切断了通过 config.json 注入恶意代码的路径。
攻击者可构造恶意的config.json文件,将`_attn_implementation_internal`字段设置为攻击者控制的HuggingFace Hub仓库ID。
当受害者使用标准 AutoModelForCausalLM.from_pretrained() API加载该模型时,
无需任何特殊标记、无需开启trust_remote_code=True、也无任何安全警告,
内核库会从攻击者仓库下载并以受害者完整的操作系统权限执行任意Python代码。
(一)根本原因
该漏洞由三个设计缺陷共同导致:
缺陷1 - 未过滤的配置反序列化(configuration_utils.py:264-267):
通用的`setattr`循环将config.json中的每个键直接作为属性赋值给配置对象,包括原本不允许用户设置的以下划线开头的内部属性:
# configuration_utils.py ~line 264
for key, value in kwargs.items():
try:
setattr(self, key, value)
这使得控制内核加载的私有属性 `_attn_implementation_internal` 可以被用户提供的JSON覆盖。
缺陷2 - 清理不充分(configuration_utils.py:711):
现有清理逻辑仅移除 attn_implementation(无前导下划线),而以下划线开头的内部变量_attn_implementation_internal从未被清理:
# configuration_utils.py ~line 711
config_dict["attn_implementation"] = kwargs.pop("attn_implementation", None)
# _attn_implementation_internal is NOT handled here
缺陷3 - 无沙箱内核执行(hub_kernels.py:333):
内核库接受任何匹配`^[^/:]+/[^/:]+$`格式的值(即任意所有者/仓库字符串)作为有效的内核仓库ID,
从HuggingFace Hub下载该仓库,并通过importlib导入,无沙箱、无签名验证、无用户确认:
# hub_kernels.py ~line 333
kernel = get_kernel(repo_id) # repo_id = "attacker/malicious-kernel"
# Downloads and imports arbitrary Python from HuggingFace Hub
(二)潜在风险
1、绕过所有现有安全机制:
`trust_remote_code=True`标记专为防止执行不受信任代码而设计,而此攻击向量完全规避该限制,因为内核加载不受该标记控制。
2、对受害者不可见:
config.json中的恶意字段看起来是标准的内部配置值,在远程代码下载执行前不会弹出任何警告、提示或日志。
3、利用标准且官方文档记载的使用方式:
`from_pretrained()`是官方推荐的模型加载方式,没有任何文档说明未开启`trust_remote_code=True`时该操作存在风险。
4、攻击面极大:
任何从HuggingFace Hub加载AI模型的机器学习工程师、CI/CD流水线或生产系统都可能受到影响。
(三)完整攻击链
攻击者注册免费 HuggingFace 账号,创建一个内核仓库(例如 attacker/malicious-kernel),其中包含带有恶意 init.py 的 Python 包。
攻击者创建一个模型仓库,其中的 config.json 通过 _attn_implementation_internal 注入其内核仓库 ID。
受害者运行 AutoModelForCausalLM.from_pretrained ("attacker/innocent-llama") —— 这是加载模型的标准方式。
configuration_utils.py 反序列化 config.json,
通过通用 setattr 循环将 _attn_implementation_internal = "attacker/malicious-kernel" 设置到配置对象中。
modeling_utils.py 通过 _attn_implementation 属性读取回该值,并传递给 _check_and_adjust_attn_implementation ()。
is_kernel ("attacker/malicious-kernel") 返回 True(符合格式匹配)。
get_kernel ("attacker/malicious-kernel") 从 HuggingFace Hub 下载攻击者的 Python 包并导入。
攻击者包中的任意代码以受害者的完整用户权限执行。实现远程代码执行。
三、POC概念验证
步骤 1 - 攻击者的内核仓库(attacker/malicious-kernel)
将以下内容作为 init.py 上传到 HuggingFace Hub 仓库:
管理员已设置登录后刷新可查看步骤 2 - 攻击者的模型仓库(attacker/innocent-llama)
将以下内容作为 config.json 上传,同时搭配有效的(或随机的).safetensors 权重文件与标准分词器文件:
管理员已设置登录后刷新可查看步骤 3 - 受害者触发代码(标准用法)
这是受害者必须运行的完整代码,也是官方文档记载的、加载 HuggingFace 模型的标准方式:
管理员已设置登录后刷新可查看执行后,/tmp/hf_rce_poc_proof.txt 会被写入受害者机器,用于确认:
管理员已设置登录后刷新可查看在实际攻击中,第二阶段的 curl 命令会将窃取的凭证发送到攻击者控制的服务器。受害者不会察觉到任何异常。
影响
任何在恶意模型上调用 AutoModelForCausalLM.from_pretrained()(或等效 Auto* 类)的个人或系统均存在漏洞。
攻击者以受害者权限执行代码后,可实现:
读取用户可访问的任意文件:
SSH 私钥(~/.ssh/id_rsa)、云服务凭证(~/.aws/credentials)、Kubernetes 配置(~/.kube/config)、.env 文件及数据库连接串。
通过出站 HTTP 静默窃取凭证至攻击者服务器 —— 受害者系统无任何日志记录。
安装持久化后门 —— 即使卸载模型仍可存活,重启后依然生效。
利用窃取凭证横向渗透企业内网 —— 访问受害者有权限的内部系统。
攻陷 CI/CD 流水线 —— 从 Hub 拉取模型的自动化 ML 评估、微调流水线被静默植入后门。
窃取研究 / 生产环境中的专有训练数据与模型权重。
完全控制服务器 —— 安装反弹 Shell、勒索软件或挖矿程序。
该漏洞在企业与科研环境中尤为危险:
机器学习流程通常会从 HuggingFace Hub 拉取并评估模型,而运行环境往往持有生产凭证与内网访问权限。
四、影响范围
huggingface/transformers < 5.3.0
五、修复建议
huggingface/transformers ≥ 5.3.0
六、参考链接
管理员已设置登录后刷新可查看