热门Python库存在元数据投毒攻击漏洞
创始人
2026-01-16 04:00:38
0次

Hugging Face模型中使用的热门AI和机器学习Python库存在漏洞,这些库的下载量达到数千万次。该漏洞允许远程攻击者在元数据中隐藏恶意代码,当加载包含被投毒元数据的文件时,恶意代码会自动执行。

受影响的开源库包括NeMo、Uni2TS和FlexTok,分别由英伟达、Salesforce以及苹果与瑞士联邦理工学院视觉智能与学习实验室(EPFL VILAB)联合开发。

这三个库都使用了Hydra,这是Meta维护的另一个Python库,通常用作机器学习项目的配置管理工具。具体来说,漏洞涉及Hydra的instantiate函数。

Palo Alto Networks的Unit 42团队发现了这些安全漏洞并报告给库的维护者,维护者随后发布了安全警告、修复补丁,其中两个案例还分配了CVE编号。虽然威胁猎人表示目前尚未发现这些漏洞被实际利用,但"攻击者有充分的机会利用它们"。

Unit 42恶意软件研究工程师Curtis Carmony在周二的分析中写道:"开发者通常会创建自己的最先进模型变体,采用不同的微调和量化方法,通常来自与知名机构无关的研究人员。攻击者只需要创建现有热门模型的修改版本,声称具有真实或虚假的优势,然后添加恶意元数据。"

此外,Hugging Face不像处理其他文件那样容易访问元数据内容,也不会将使用safetensors或NeMo文件格式的文件标记为潜在不安全。

Hugging Face上的模型使用超过100种不同的Python库,其中近50种使用Hydra。Carmony写道:"虽然这些格式本身可能是安全的,但处理它们的代码存在非常大的攻击面。"

Hydra漏洞分析

如前所述,这些漏洞与NeMo、Uni2TS和FlexTok使用hydra.utils.instantiate函数从模型元数据加载配置的方式有关,这允许远程代码执行(RCE)。

这些库的创建者或维护者似乎忽略了instantiate函数不仅接受要实例化的类名,还接受任何可调用对象的名称并向其传递提供的参数这一事实。

通过利用这一点,攻击者可以使用内置Python函数(如eval和os.system)更容易地实现RCE。

Meta已更新Hydra文档,警告使用instantiate时可能发生RCE,并敦促用户添加阻止列表机制,在调用前将_target_值与危险函数列表进行比较。但是,阻止列表机制尚未在Hydra发布版本中提供。

NeMo库漏洞

NeMo是英伟达于2019年创建的基于PyTorch的框架。其.nemo和.qnemo文件扩展名是包含model_config.YAML文件的TAR文件,分别存储模型元数据以及.pt文件或.safetensors文件。

问题在于,在NeMo文件调用hydra.utils.instantiate API之前,元数据没有经过清理,这允许攻击者加载具有恶意制作元数据的.nemo文件,触发漏洞并实现RCE或篡改数据。

英伟达发布了CVE-2025-23304来跟踪这个高严重性错误,并在NeMo 2.3.2版本中发布了修复。

NeMo还与Hugging Face集成,攻击者可以在模型下载后通过相同的代码路径利用此漏洞。

根据Unit 42的数据,Hugging Face上有超过700个来自各种开发者的模型采用NeMo文件格式。

Uni2TS库漏洞

Uni2TS是Salesforce创建的PyTorch库,用于其时间序列分析的Morai基础模型以及在Hugging Face上发布的一系列模型。

该库专门使用.safetensors文件,这是Hugging Face创建的用于存储张量的安全格式,与pickle相对,pickle在加载过程中允许任意代码执行。

使用这些库的Salesforce模型在Hugging Face上有数十万次下载,其他用户也发布了这些模型的多个改编版本。

Salesforce于7月31日发布了CVE-2026-22584并部署了修复。

FlexTok库漏洞

去年早些时候,苹果和EPFL VILAB创建了FlexTok,这是一个基于Python的框架,使AI/机器学习模型能够处理图像。

与uni2TS一样,FlexTok仅使用safetensors文件,它扩展了PyTorchModelHubMixin,可以从.safetensors文件加载配置和元数据。解码元数据后,FlexTok将其传递给hydra.utils.instantiate,这会触发漏洞。

截至2026年1月,除了EPFL VILAB发布的模型外,Hugging Face上似乎没有其他模型使用ml-flextok库,这些模型总计有数万次下载。

苹果和EPFL VILAB通过使用YAML解析配置修复了这些安全问题。维护者还添加了可以调用Hydra的instantiate函数的类的允许列表,并更新文档以说明应该只加载来自可信来源的模型。

Q&A

Q1:这次发现的Python库漏洞具体是什么问题?

A:漏洞存在于NeMo、Uni2TS和FlexTok这三个热门AI库中,它们都使用Hydra库的instantiate函数。问题在于该函数不仅接受类名,还接受任何可调用对象,攻击者可以利用这一点在模型元数据中隐藏恶意代码,当文件被加载时代码会自动执行。

Q2:Hugging Face平台上有多少模型受到影响?

A:根据Unit 42的统计,Hugging Face上超过700个模型使用NeMo文件格式,使用Salesforce相关库的模型有数十万次下载,FlexTok相关模型有数万次下载。平台上使用的超过100种Python库中,近50种使用了存在漏洞的Hydra库。

Q3:这些漏洞现在修复了吗?

A:是的,相关厂商已经发布了修复。英伟达在NeMo 2.3.2版本中修复并发布了CVE-2025-23304,Salesforce在7月31日发布了CVE-2026-22584修复,苹果和EPFL VILAB通过使用YAML解析和添加允许列表机制修复了FlexTok的问题。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...