根据Trail of Bits,这种攻击方法将用于打包和分发机器学习(ML)模型的无处不在的格式武器化,以破坏模型本身,给组织的下游客户带来严重的供应链风险。
安全研究员Boyan Milanov说:“Sleepy Pickle是一种隐秘而新颖的攻击技术,它针对的是ML模型本身,而不是底层系统。”。
虽然pickle是PyTorch等ML库广泛使用的序列化格式,但它可以通过加载pickle文件(即在反序列化过程中)来执行任意代码执行攻击。
Hugging Face在其文档中指出:“我们建议依赖签名提交从您信任的用户和组织加载模型,和/或使用from_tf=True自动转换机制从[TensorFlow]或Jax格式加载模型。”
Sleepy Pickle的工作原理是使用Fickling等开源工具将有效负载插入到Pickle文件中,然后使用四种技术之一将其交付给目标主机,如中间对抗性(AitM)攻击、网络钓鱼、供应链泄露或利用系统弱点。
Milanov说:“当文件在受害者的系统上被反序列化时,有效载荷会被执行,并在将其返回给用户之前修改所包含的模型,以插入后门、控制输出或篡改处理后的数据。”换句话说,注入到包含序列化ML模型的pickle文件中的有效载荷可能会被滥用,通过篡改模型权重或篡改模型处理的输入和输出数据来改变模型行为。
在假设的攻击场景中,该方法可用于生成有害的输出或错误信息,这些输出或错误消息可能会对用户安全造成灾难性后果(例如,饮用漂白剂来治疗流感),在满足某些条件时窃取用户数据,并通过生成带有指向网络钓鱼页面链接的新闻文章摘要来间接攻击用户。
Trail of Bits表示,Sleepy Pickle可以被威胁行为者武器化,以逃避检测的方式在ML系统上保持秘密访问,因为在Python过程中加载Pickle文件时,该模型会受到损害。这也比直接将恶意模型上传到Hugging Face更有效,因为它可以动态修改模型行为或输出,而不必引诱目标下载并运行它们。
Milanov说:“使用Sleepy Pickle,攻击者可以创建不是ML模型的泡菜文件,但如果一起加载,仍然可以破坏本地模型。”。“因此,攻击面要广得多,因为对目标组织供应链中任何泡菜文件的控制都足以攻击他们的模型。”
“Sleepy Pickle证明,高级模型级攻击可以通过底层软件组件和最终应用程序之间的连接,利用较低级别的供应链弱点。”
原文始发于微信公众号(道玄网安驿站):针对机器学习模型的新技术:Sleepy Pickle
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论