Picklescan库因未检测numpy.f2py.crackfortran.param_eval调用而存在远程代码执行漏洞

本文详细披露了Picklescan库中的一个关键安全漏洞,该漏洞源于其未能检测通过`numpy.f2py.crackfortran.param_eval`执行的恶意操作,导致依赖其进行安全检查的用户面临远程代码执行风险。

Picklescan 因调用 numpy.f2py.crackfortran.param_eval 时缺少检测而存在 RCE 漏洞 · GHSA-cffc-mxrf-mhh4

漏洞详情

: pip - picklescan

受影响版本: < 0.0.33

已修复版本: 0.0.33

描述

摘要 Picklescan 使用了 numpy.f2py.crackfortran.param_eval,这是一个用于执行远程 pickle 文件的 numpy 函数。

详情 攻击载荷按以下步骤执行:

  1. 首先,攻击者通过 reduce 方法调用 numpy.f2py.crackfortran.param_eval 函数来构造载荷。
  2. 然后,当受害者使用 Picklescan 库检查 pickle 文件是否安全,且该库未检测到任何危险函数时,他们决定在此恶意 pickle 文件上使用 pickle.load(),从而导致远程代码执行。

概念验证

1
2
3
4
class RCE:
    def __reduce__(self):
        from numpy.f2py.crackfortran import param_eval
        return (param_eval,("os.system('ls')",None,None,None))

影响

  • 任何依赖 picklescan 来检测 PyTorch 模型中恶意 pickle 文件的组织或个人。
  • 攻击者可以将恶意代码嵌入 pickle 文件中,这些代码在加载 pickle 文件时保持不被检测但会执行。
  • 攻击者可以通过 ML 模型、API 或保存的 Python 对象分发受感染的 pickle 文件。

报告者 清华大学 NISL 实验室 (https://netsec.ccert.edu.cn/about) 的 Pinji Chen (cpj24@mails.tsinghua.edu.cn), 以及 Guanheng Liu (coolwind326@gmail.com)。

参考

其他信息

发布时间: 2025年12月27日 最后更新: 2025年12月29日

严重程度: 中等

弱点

  • CWE-94: 代码生成的不当控制(‘代码注入’)
  • CWE-502: 不受信任数据的反序列化

GHSA ID: GHSA-cffc-mxrf-mhh4

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计