HuggingFace Transformers漏洞CVE-2025-6921
HuggingFace是自然语言处理(NLP)工具集和平台,基于深度学习模型,为研究人员和工程师提供高效、易用且可重复的NLP解决方案。
HuggingFace旨在提供各种NLP解决方案,如预训练模型、任务化的微调、对话系统、翻译、语言生成等等,包含各种流行的预训练模型。
一、基本情况
HuggingFace平台使用流行的框架如PyTorch和TensorFlow进行实现,平台中的预训练模型可以直接使用,也可以在具体任务中进行微调。
HuggingFace Transformers库是自然语言处理领域广泛使用的开源工具,提供丰富预训练模型和API,支持PyTorch、TensorFlow等框架。
HuggingFace Transformers是一个开源的预训练模型库,主要集成了BERT、GPT等2万+预训练模型,支持PyTorch/TensorFlow框架调用。
栋科技漏洞库关注到Huggingface Transformers库受影响版本的正则表达式拒绝服务漏洞,被追踪为CVE-2025-6921,CVSS 3.0评分5.3。
二、漏洞分析
CVE-2025-6921漏洞是Huggingface的transformers库版本低于4.53.0时,AdamWeightDecay优化器正则表达式拒绝服务(ReDoS)漏洞。
攻击者控制 include_in_weight_decay 或 exclude_from_weight_decay 列表中的模式,通过提供一个恶意的正则表达式导致灾难性的回溯。
漏洞存在于 AdamWeightDecay 类的 _do_use_weight_decay 方法中,该方法遍历用户 regex 模式,使用 re.search 将其与参数名称匹配。
具体来说,该方法在处理include_in_weight_decay和exclude_from_weight_decay列表中的用户控制正则表达式时产生。
当优化器处理具有匹配名称的模型参数时,re.search 调用会挂起,导致灾难性的回溯,占用 100% 的 CPU 核心,从而有效造成拒绝服务。
因此,攻击者可以控制传递给`re.compile()`或`saxutils.escape()`方法的模式,导致恶意正则表达式消耗大量CPU资源,从而造成拒绝服务。
1、调用re.search(r, param_name)没有保护 against恶意正则表达式,这些表达式可能导致指数级的匹配时间。

2、create_optimizer 函数作为将这些恶意模式传递给优化器的入口点。

清除 PoC 以再现漏洞 为了再现漏洞,我们将定义一个恶意的正则表达式模式,该模式旨在导致灾难性的回溯。
然后,我们将使用此模式调用 create_optimizer 函数,并模拟对一个名称会触发 ReDoS 条件的变量应用梯度。
三、POC概念验证
1、创建一个 Python 脚本 (poc_redos.py)
此脚本将使用恶意正则表达式设置优化器,然后尝试将梯度应用于变量,这将触发易受攻击的 _do_use_weight_decay 方法。

2、创建 hf_optimizer.py 文件 将用户提示中提供的整个代码块复制并粘贴到同一目录中名为 hf_optimizer.py 的文件中。


当脚本卡住时,如果你查看系统的活动监视器(在 Linux 上是 top 或 htop,在 Windows 上是任务管理器),
你会看到 Python 进程正在消耗一个 CPU 核心的 100%。
你将需要手动终止脚本(例如,使用 Ctrl+C)。
实际场景中机器学习项目允许用户通过配置文件(如,JSON,YAML)或命令行参数指定配置参数,包括优化器设置(权重衰减排除)。
攻击者可以向训练脚本或推理API提供恶意配置。
当使用此恶意配置构建模型和优化器时,训练或推理过程在尝试计算与匹配参数名的权重衰减时将立即挂起。
这会占用一个完整的 CPU 核心,停止机器学习任务,并可能导致服务(如模型训练平台或 ML 动力的 API)无响应,阻止合法用户使用。
四、影响范围
Huggingface transformers <= 4.53.0
五、修复建议
Huggingface transformers > 4.53.0
六、参考链接
