HiddenLayer的研究人员披露了Keras 3深度学习框架中一个严重的任意代码执行漏洞(CVE-2025-49655,CVSS 9.8),该漏洞影响Keras 3.11.0至3.11.2版本的Torch后端。漏洞源于TorchModuleWrapper类中的不安全反序列化,攻击者可能仅通过加载恶意模型文件即可执行任意系统命令——即使启用了Keras的“安全模式”。
根据HiddenLayer的报告:“TorchModuleWrapper类中存在任意代码执行漏洞,原因是其在from_config方法中使用了torch.load() 。”
核心问题在于该方法调用了:
torch.load(buffer, weights_only=False)
其中weights_only标志被显式设置为False。此参数指示PyTorch回退到Python的pickle模块进行反序列化——这是一种已知的不安全机制,在对象加载过程中可能执行任意Python函数。
研究人员解释:“由于pickle已知不安全,且在反序列化过程中可执行任意代码,恶意构造的模型文件可能允许攻击者执行任意命令。”
HiddenLayer通过构造一个简单的 payload 类演示了漏洞利用,该类滥用Python的__reduce__
方法,在反序列化时调用os.system()
。
概念验证:从配置到代码执行
概念验证(PoC)包括通过base64编码恶意对象,将其嵌入TorchModuleWrapper配置,然后调用from_config()
触发反序列化链。执行后,系统会运行任意shell命令,证明完全的本地代码执行能力。
安全模式失效与模型文件武器化
HiddenLayer的研究警告,该漏洞的影响不仅限于开发阶段的误用。攻击者可将合法Keras模型文件(.keras)武器化以隐藏载荷。
“攻击者可将相同的恶意载荷嵌入模型配置,因此任何加载该模型的用户,即使在‘安全’模式下,也会触发漏洞利用。”
通过在模型的config.json 中插入序列化的恶意对象,受害者加载模型时载荷会自动执行——即使启用了旨在限制加载期间不安全操作的safe_mode=True
。
受影响版本与范围
HiddenLayer确认Keras 3.11.0至3.11.2版本存在漏洞。该问题影响使用PyTorch作为后端的系统(KERAS_BACKEND=”torch”),而使用JAX、TensorFlow或OpenVINO的配置不受影响。
由于Keras广泛用于研究、学术和生产环境的机器学习管道,此漏洞对机器学习供应链安全构成高影响威胁。HiddenLayer将其归类为CVSS 9.8严重级漏洞,并指出:“任何加载此恶意模型的用户都会在不知情的情况下在其机器上执行任意命令。”
发表评论
您还未登录,请先登录。
登录