security: bump outdated lower-bound dependencies in dependency_versions_table.py

该问题发生在对 Transformers 主分支执行安全审计时,发现 `src/transformers/dependency_versions_table.py` 中多个核心依赖的下限版本过低,存在已知安全漏洞。优先排查上述依赖项在当前项目环境中的实际安装版本,并更新 `dependency_ve

快速结论:该问题发生在对 Transformers 主分支执行安全审计时,发现 `src/transformers/dependency_versions_table.py` 中多个核心依赖的下限版本过低,存在已知安全漏洞。优先排查上述依赖项在当前项目环境中的实际安装版本,并更新 `dependency_versions_table.py` 中的最小值定义。

适用环境:Transformers 主分支(main branch);Linux 平台;Python 3.10 及以上版本。涉及依赖包括 gitpython、pyyaml、pillow、torch、urllib3、sagemaker、nltk、jinja2。

最快修复方案:暂无确认的一步修复方案。Issue 中的提议方案(已确认方向但尚未合并验证):直接编辑 `dependency_versions_table.py`,将问题依赖的下限版本更新为安全版本,然后运行 `python utils/check_repo.py –update-dep-versions` 同步配置,最后运行核心测试套件确认兼容性。

注意事项:该解决方案未经官方合并验证。更新 torch 下限至 2.13.0 可能要求用户使用更高版本的 PyTorch,可能影响与现有代码或自定义脚本的兼容性;sagemaker 从 2.x 升到 3.x 属于大版本变更,可能引发 API 兼容性问题。修改仅仅是下限约束,不一定强制升级,但需在安装或构建时评估影响。

问题场景

在开发或使用 Hugging Face Transformers 主分支时,通过安全审计工具(如 pip-audit)检查 `src/transformers/dependency_versions_table.py` 中定义的依赖最小版本,发现多个核心依赖包存在已知 CVE 或安全公告,影响依赖声明文件的安全性和合规性。此问题更多属于仓库依赖声明治理,而非直接运行模型时产生的运行时错误。

报错原文

security: bump outdated lower-bound dependencies in dependency_versions_table.py

- gitpython (3.1.19 → Fix: >=3.1.58): Affected by command injection advisories (GHSA-9rj7-rf2p-w77r)
- pyyaml (5.1 → Fix: >=5.4): Vulnerable to arbitrary code execution during unsafe loading (PYSEC-2020-176)
- pillow (10.0.1 → Fix: >=12.3.0): Multiple buffer overflow advisories (PYSEC-2026-2253)
- torch (2.5 → Fix: >=2.13.0): Multiple C++ kernel vulnerabilities (CVE-2025-2148)
- urllib3 (2.0.0 → Fix: >=2.7.0): Request smuggling and header leakage (PYSEC-2026-1995)
- sagemaker (2.31.0 → Fix: >=3.4.0): GHSA-5r2p-pjr8-7fh7
- nltk (3.8.1 → Fix: >=3.10.0): PYSEC-2026-3584
- jinja2 (3.1.0 → Fix: >=3.1.6): Template injection (PYSEC-2026-1471)

原因分析

根本原因是 `src/transformers/dependency_versions_table.py` 中定义的各依赖下限版本号早于安全漏洞披露时间。随着上游依赖发布安全修复版本,旧的下限值不再满足最低安全基线。可能原因包括:

1. 依赖版本约束长期未随上游安全更新同步维护;

2. 安全审计仅检查声明文件中数值,未考虑用户实际安装的版本,通过提高下限可引导安装更安全的版本,但不能直接修补已安装的低版本;

3. 个别依赖的修复版本跨度较大(如 sagemaker 2.x → 3.x、pillow 10.x → 12.x),可能是维护策略保守或等待兼容性验证。

环境排查

  • 确认当前 transformers 所在环境为 Linux,Python 版本为 3.10 及以上。
  • 执行 `pip list` 检查 GitPython、PyYAML、Pillow、torch、urllib3、sagemaker、nltk、Jinja2 的实际安装版本。
  • 运行 `pip-audit` 验证本地环境中是否存在上述安全公告对应的实际漏洞版本。
  • 关注 `src/transformers/dependency_versions_table.py` 中 `dep_version` 相关字典项,确认各项当前的数值。

解决步骤

  1. 打开 `src/transformers/dependency_versions_table.py`,定位 GitPython、PyYAML、Pillow、torch、urllib3、sagemaker、nltk、Jinja2 对应的版本下限定义。
  2. 分别修改下限值为 Issue 中列出的安全修复版本:GitPython >=3.1.58、PyYAML >=5.4、Pillow >=12.3.0、torch >=2.13.0、urllib3 >=2.7.0、sagemaker >=3.4.0、nltk >=3.10.0、Jinja2 >=3.1.6。
  3. 运行 python utils/check_repo.py --update-dep-versions,使 `setup.py` 和各类环境配置文件中的依赖约束同步更新。
  4. 运行核心测试套件(如 `pytest tests/` 中的关键测试)确认没有因版本下限提升导致测试失败。
  5. 如涉及自定义训练或推理脚本,检查是否与 PyTorch 2.13.0 或 sagemaker 3.x 存在不兼容行为,必要时适配代码。

验证方法

确认问题已解决的方法包括:修改后 `dependency_versions_table.py` 中各项依赖下限不低于 Issue 列出的安全版本;执行 `python utils/check_repo.py –update-dep-versions` 能无报错完成同步;运行 `pip-audit` 不再显示与这些依赖下限相关的安全公告;核心测试套件全部通过。

参考来源

huggingface/transformers #47930

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 18301

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注