python不安全的包和方法,计算机科学教授发布将Python不安全的pickle文件武器化的工具:希望引起所有人的注意!...

Evan Sultanik是Trail of Bits的计算机安全研究人员,还是美国德雷塞尔大学的兼职计算机科学教授。他拆解Python界广泛使用的pickle数据格式后发现,这种数据格式令人反感。

9a73c4c15035642f8900312ddb5ea00f.png

他并不是头一个这么做的人,他也承认这一点,在最近的一篇博文中特别指出: 几年前,计算机安全界开始渐渐讨厌pickling,这种二进制协议用于对Python对象结构进行序列化和反序列化。

连Python自己针对pickle模块的说明文档也承认未包括安全性。 文档开头这样写道: “警告: pickle模块不安全。 只能unpickle您信任的数据。 ”unpickling是反向操作,将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构。

不过众多开发人员仍在使用它,尤其是在Python机器学习社区。 Sultanik表示,原因不难理解,因为pickling内置在Python中,另一个原因是它可以节省内存、简化模型训练,并使训练后的机器学习模型易于移植。

除了是Python标准库的一部分外,pickling在NumPy和scikit-learn这两个Python库中也得到支持,这两种库经常用于面向AI的数据科学。

据Sultanik声称,机器学习从业人员偏爱共享预训练的pickled模型,而不是用来训练这些模型的数据和算法,pickled模型代表有价值的知识产权。 已经建立起PyTorch Hub之类的网站以促进模型分发,而一些机器学习库整合了从GitHub自动获取模型的API。

大概一个月前,在GitHub上的PyTorch代码库中,一个名为KOLANICH的开发人员开了一个问题单,直言不讳地指出了该问题: “pickle是一个可以用来隐藏后门的安全问题。 遗憾的是,许多项目仍在使用[pickling方法] torch.save和torch.load。 ”

参与讨论的其他开发人员回答已经看到了警告,在考虑该怎么做。

2db52c39d70aac6d009ab9b4136242df.png

为了促使pickle辩护者行动起来,Sultanik开发了一款名为Fickling的工具,以协助pickle文件的逆向工程、测试和武器化。他希望安全工程师们将该工具用于检查pickle文件,希望机器学习从业人员会用它来了解pickling的风险。

Sultanik还基于官方PyTorch教程开发了一个概念验证漏洞利用程序,可以将恶意代码注入到现有的PyTorch模型中。概念验证模型加载到PyTorch中后,会将当前目录中的所有文件泄露到远程服务器上。

Sultanik解释道:“对于微软的Azure ML之类的服务而言,这令人担忧,该服务支持在云实例中运行用户提供的模型。恶意的Fickled模型可能会导致拒绝服务,以及/或者在微软可能以为是专有环境的环境中实现远程代码执行。”

Sultanik表示,他已向PyTorch和PyTorch Hub的维护者表明了自己的担忧,并且显然被告知对方会考虑添加另外的警告。虽然他得知提交到PyTorch Hub的模型经过了“质量和实用性审查”,但他观察到,大家没有花精力去了解发布模型的人或去审核他们上传的代码。

Sultanik认为,考虑到供应链攻击已破坏了PyPI、npm、RubyGems及其他软件包注册中心中的代码软件包,要求用户自行确定代码是否靠得住再也不够了。

他下结论道:“对于大多数框架而言,远离pickling这种数据序列化协议相对简单直观,还可以轻松提高安全。”

参考资料:https://blog.trailofbits.com/2021/03/15/never-a-dill-moment-exploiting-machine-learning-pickle-files/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值