事件概述
2026年8月2日MITRE与NVD同步收录由Protect AI(前huntr.dev)报告的CVE-2026-9856,命名空间为huggingface/transformers。HuggingFace Transformers是当前大模型微调与推理部署的事实标准组件之一,本次缺陷位于save_pretrained()方法内,直接影响开发者本地保存预训练模型与处理器的流程,导致任意文件覆盖。漏洞修复版本为5.10.0,公开PoC仓库三天内在GitHub出现,被rdintel与Sonatype列入Actively exploited列表。
技术细节
漏洞根因为CWE-22路径遍历,触发点是PreTrainedTokenizerBase与ProcessorMixin的save_pretrained()实现。两者在序列化来自tokenizer_config.json的chat_template字典时,直接把字典键名当作文件名拼接进保存目录,没有规范化路径分隔符或校验../段。攻击者只需在HuggingFace Hub仓库中放置精心构造的tokenizer_config.json,把chat_template键设为../../malicious之类的相对路径字符串;用户拉取该仓库并执行processor.save_pretrained()或tokenizer.save_pretrained()时,键值会被写入用户运行时账户有权限的任意位置。受影响继承自ProcessorMixin的处理器至少包括Idefics、Florence、Gemma、Phi与Qwen-VL,目前引用5.10.0版本的eaaaf8494dd5386634ae37d1d122212fdc315be5提交完成修复。
影响评估
NVD基础评分CVSS 3.07.1(High),向量AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L,列为网络可达但需用户交互。EPSS当前为0.295%。现实威胁场景包括:研究员/工程师盲目拉取CSDN/GitHub/HuggingFace教程示例仓库并保存模型时,~/.bashrc被写入挖矿命令、企业NAS目录的.env被改写泄露API Key、CI流水线沙箱下的~/.ssh/authorized_keys被植入持久SSH密钥进入构建缓存区。Sonatype与rdintel均披露PoC仓库已公开,模板扫描器与SIEM规则也已生成,处于攻击容易复制且无需认证的成熟利用窗口。
修复建议
- 升级transformers至5.10.0或更新版本,运行pip show transformers确认版本,构建镜像层中固化升级而非依赖运行时pip install。
- 对团队/生产环境:禁止从不可信Hub仓库拉取tokenizer/processor,必要时使用allow-list或私有Hub代理;自建仓库时校验tokenizer_config.json中chat_template键名仅含常见字符集。
- 短期沙箱:在临时容器中先试运行save_pretrained并diff出文件清单,确认无路径外写入再进入主环境;CI中加入对~/.ssh、~/.bashrc、.env等敏感路径的写权限审计。
- 应急排查:检索最近30天内团队机上~/.bashrc、~/.zshrc、~/.ssh/authorized_keys、~/.aws/credentials等敏感文件mtime异常。
AI/ML团队的最佳实践升级
本次漏洞揭示了一个长期被忽视的供应链攻击面:开发者本地保存模型/分词器的动作本身就是一个写文件系统的高权限操作。以往社区更多关注pytorch_model.bin反序列化与pickle投毒,对save_pretrained()写入路径的检查几乎是空白。建议所有大模型团队把transformers升级与Hub访问治理同步纳入MLOps治理框架:在内部Model Registry上对外部Hub仓库加签名校验、对私有仓库使用访问令牌并审计下载、对模型权重与配置文件分开签名(权重hash、配置hash与signature分别校验),并对save_pretrained执行前后的文件系统状态做diff审计。rdintel列出的PoC仓库(researcher/exploit-poc)已被GitHub Security Advisory引用,建议直接拉入内部红队复现库,验证现有检测规则是否覆盖tokenizer_config.json中含../键名的特征。
对国内开源大模型生态的影响
国内Qwen-VL、Gemma、Phi的中文/中文增强版本普遍基于HuggingFace Transformers加载流程,本次受影响名单明确列出Qwen-VL。建议所有使用国产开源模型做本地微调、推理服务的团队立即升级transformers至5.10.0,并核对ModelScope、Wisemodel、OpenCSG等国内镜像仓库上是否同步推送了修复版本。另外,本次漏洞还提醒社区注意:把tokenizer/processor下载流程接入CI时一定要把save_pretrained写入目录挂载到一次性临时文件系统,避免污染构建缓存区;在MaaS API场景下要把用户上传模型调用save_pretrained的接口限制为只读沙箱,从源头切断恶意配置文件进入服务器文件系统的可能。