NVIDIA Merlin漏洞允许攻击者以root权限执行远程代码

NVIDIA Merlin漏洞允许攻击者以root权限执行远程代码

NVIDIA的Merlin Transformers4Rec库中存在一个严重漏洞(CVE-2025-23298),攻击者无需身份验证,即可通过模型检查点加载器中的不安全反序列化实现具有root权限的远程代码执行(RCE)。

这一发现凸显了机器学习/人工智能框架依赖Python的pickle序列化所固有的持续安全风险。

NVIDIA Merlin漏洞

趋势科技的零日计划(ZDI)指出,该漏洞存在于load_model_trainer_states_from_checkpoint函数中,该函数使用PyTorch的torch.load()时未设置安全参数。在底层,torch.load()利用了Python的pickle模块,这使得任意对象可以被反序列化。

攻击者可以在特制的检查点文件中嵌入恶意代码,当加载不可信的pickle数据时,这些代码就会被触发执行。在存在漏洞的实现中,cloudpickle会直接加载模型类:

NVIDIA Merlin漏洞允许攻击者以root权限执行远程代码

这种方法使攻击者能够完全控制反序列化过程。通过定义自定义的__reduce__方法,恶意检查点可以在加载时执行任意系统命令,例如调用os.system()来获取并执行远程脚本。

攻击面非常广泛:机器学习从业者通常通过公共代码库或云存储分享预训练检查点。生产环境中的机器学习管道通常以提升的权限运行,这意味着一次成功的漏洞利用不仅会危及模型宿主,还可能升级为根级别的访问权限。

为了证明这一缺陷,研究人员制作了一个恶意检查点:

NVIDIA Merlin漏洞允许攻击者以root权限执行远程代码

通过易受攻击的函数加载此检查点会在恢复任何模型权重之前触发嵌入的shell命令,从而在机器学习服务的环境下立即导致远程代码执行。

NVIDIA在PR #802中解决了该问题,用一个自定义的load()函数替代了原始的pickle调用,该自定义函数会对白名单中的认可类进行校验。

serialization.py中经过修补的加载器会执行输入验证,同时建议开发人员在torch.load()中使用weights_only=True,以避免不可信对象的反序列化。

NVIDIA Merlin漏洞允许攻击者以root权限执行远程代码

开发者绝不能对不可信的数据使用pickle,并且应将反序列化限制在已知的安全类中。

替代格式(如Safetensors或ONNX)提供了更安全的模型持久化方式。组织应强制对模型文件进行加密签名,对反序列化过程进行沙箱处理,并将机器学习管道纳入常规安全审计。

风险因素 详情
受影响产品 NVIDIA Merlin Transformers4Rec ≤ v1.5.0
影响 以root权限执行远程代码
漏洞利用前提条件 攻击者提供的模型检查点通过torch.load()加载
CVSS 3.1评分 9.8(严重)

更广泛的社区必须倡导“安全优先”的设计原则,并彻底弃用基于pickle的机制。

在对pickle的依赖被消除之前,类似的漏洞仍将存在。保持警惕、进行严格的输入验证以及秉持零信任心态,对于保护生产环境中的机器学习系统免受供应链和远程代码执行威胁至关重要。

版权声明·<<<---红客联盟--->>>·免责声明
1. 本版块文章内容及资料部分来源于网络,不代表本站观点,不对其真实性负责,也不构成任何建议。
2. 部分内容由网友自主投稿、编辑整理上传,本站仅提供交流平台,不为该类内容的版权负责。
3. 本版块提供的信息仅作参考,不保证信息的准确性、有效性、及时性和完整性。
4. 若您发现本版块有侵犯您知识产权的内容,请及时与我们联系,我们会尽快修改或删除。
5. 使用者违规、不可抗力(如黑客攻击)或第三方擅自转载引发的争议,联盟不承担责任。
6. 联盟可修订本声明,官网发布即生效,继续使用视为接受新条款。
联系我们:admin@chnhonker.com
安全威胁

BMC固件漏洞允许攻击者绕过签名验证功能

2025-9-29 17:36:34

安全威胁

思科IOS和XE漏洞允许远程攻击者绕过身份验证并访问敏感数据

2025-9-29 22:56:35

搜索