CVE-2026-31224Snorkel库在v0.10.0及之前的版本中存在严重的不安全反序列化漏洞。该漏洞位于MultitaskClassifier类的load()方法中,由于使用了不安全的torch.load()函数加载模型权重且未设置weights_only=True参数,导致存在反序列化缺陷。攻击者可利用此漏洞诱导受害者加载恶意模型文件,从而在受害者系统上执行任意代码,造成严重的安全风险。
该漏洞的根本原因是Python的Pickle模块在反序列化过程中存在的不安全性。Snorkel库的MultitaskClassifier类在实现load()方法时,直接调用了PyTorch的torch.load()函数来恢复模型权重。由于torch.load()默认使用Pickle进行序列化操作,且Snorkel未指定weights_only=True参数,使得反序列化过程不受限制。攻击者可利用Pickle的__reduce__魔术方法构造一个恶意的序列化对象,该对象在被加载时会触发回调函数执行任意系统命令。在攻击场景中,攻击者首先制作一个包含恶意Payload的伪造模型文件,并将其分发或上传至受害者可访问的位置。当受害者使用存在漏洞的Snorkel库版本调用MultitaskClassifier.load()加载该文件时,恶意代码即会在反序列化阶段自动执行,导致服务器被远程控制。