CVE-2026-31221PyTorch-Lightning 2.6.0及更早版本中存在不安全的反序列化漏洞(CWE-502)。该漏洞位于模型检查点加载机制中,具体涉及`LightningModule.load_from_checkpoint()`方法。该方法在内部调用`torch.load()`时未设置安全限制参数`weights_only=True`,导致默认允许通过Pickle模块反序列化任意Python对象。远程攻击者可通过诱导用户加载恶意构造的检查点文件来利用此漏洞,从而在受害者系统上执行任意代码。
该漏洞源于PyTorch-Lightning框架在实现模型检查点加载功能时未遵循最小权限原则。具体而言,`LightningModule.load_from_checkpoint`方法在底层调用了PyTorch的`torch.load`函数。在PyTorch中,`torch.load`默认使用Python的`pickle`模块进行对象序列化与反序列化。Pickle机制已知是不安全的,因为它在反序列化数据时会自动执行对象中定义的`__reduce__`方法。攻击者可以构造一个包含恶意Python类(例如在`__reduce__`中定义执行系统命令的代码)的`.ckpt`文件。当受害者在受影响版本的PyTorch-Lightning环境中调用`load_from_checkpoint`加载此文件时,由于未启用`weights_only=True`限制,恶意代码会被解析并立即执行。尽管CVSS向量将攻击向量标记为本地(AV:L),但该漏洞常被利用于供应链攻击或社会工程学攻击,诱导用户下载并加载恶意的机器学习模型文件,从而在用户机器上实现远程代码执行的效果。