网络安全研究人员在 Hugging Face 上发现了两个恶意机器学习(ML)模型,这些模型利用一种不同寻常的 “损坏” 的 pickle 文件技术来逃避检测。
“从上述 PyTorch 存档中提取的 pickle 文件在文件开头就显示出恶意的 Python 内容,”ReversingLabs 研究员卡罗・赞基(Karlo Zanki)在与《黑客新闻》分享的一份报告中说道,“在这两个案例中,恶意负载是一种典型的可感知平台的反向 shell,它会连接到一个硬编码的 IP 地址。”
这种方法被称为 nullifAI,因为它明显试图绕过现有的用以识别恶意模型的防护措施。以下是相关的 Hugging Face 代码库:
1.glockr1/ballr7
2.who-r-u0000/0000000000000000000000000000000000000
据信,这些模型更多是概念验证(PoC),而非实际的供应链攻击场景。
pickle 序列化格式常用于分发机器学习模型,但人们反复发现它存在安全风险,因为一旦加载并反序列化,它就提供了执行任意代码的途径。
这家网络安全公司检测到的两个模型以 PyTorch 格式存储,其实就是压缩的 pickle 文件。虽然 PyTorch 默认使用 ZIP 格式进行压缩,但已发现被识别的模型是使用 7z 格式压缩的。
因此,这种行为使得这些模型能够躲过检测,避免被 Picklescan 标记为恶意文件,Picklescan 是 Hugging Face 用于检测可疑 pickle 文件的工具。
赞基说:“关于这个 pickle 文件,有趣的一点是,对象序列化(pickle 文件的目的)在恶意负载执行后不久就中断了,导致对象反编译失败。”
进一步分析表明,由于 Picklescan 与反序列化实际工作方式之间的差异,这种损坏的 pickle 文件仍可部分反序列化,尽管该工具会抛出错误消息,但恶意代码仍会被执行。此后,这个开源工具已更新以修复此漏洞。
赞基指出:“这种行为的解释是,对象反序列化是按顺序对 pickle 文件执行的。”
“pickle 操作码在遇到时就会执行,直到所有操作码执行完毕或遇到损坏的指令。在发现的模型案例中,由于恶意负载被插入到 pickle 流的开头,Hugging Face 现有的安全扫描工具不会将模型的执行检测为不安全。”
发表评论
您还未登录,请先登录。
登录