近年来,开发者们在开放源代码组件库中愈发成为网络攻击的目标,黑客利用假冒软件包进行供应链攻击的手段不断升级,最近甚至扩展到了伪造的人工智能(AI)框架和被污染的机器学习(ML)模型。近期,一项研究揭示了黑客通过上传伪装成阿里云 AI 实验室开发工具包的恶意软件包,成功实施了这一攻击。
研究人员在 Python Package Index(PyPI)上发现了三个恶意软件包,它们假冒了阿里云 AI 实验室的 SDK,实际上并没有任何合法功能。这些恶意包利用存储在 Pickle 格式中的恶意 ML 模型,从用户的环境中窃取信息,并将其发送到攻击者控制的服务器。
图源备注:图片由AI生成,图片授权服务商Midjourney
黑客之所以选择隐藏在 ML 模型中的恶意代码,可能是因为当前的安全工具刚刚开始支持检测 ML 文件格式中的恶意行为,传统上这些文件被视为共享数据的媒介,而非分发可执行代码的方式。
Pickle 是 Python 的一个官方模块,用于对象序列化,常用于存储与 PyTorch 库相关的 ML 模型。随着 PyTorch 在 AI 开发者中的广泛应用,Pickle 格式也愈发流行。然而,黑客已经利用这一格式在 Hugging Face 等平台上托管了被污染的模型。虽然 Hugging Face 采取了开源工具 Picklescan 来检测潜在危险,但研究人员指出,依然存在绕过检测的可能。
此次攻击的三个恶意包分别为 aliyun-ai-labs-snippets-sdk、ai-labs-snippets-sdk 和 aliyun-ai-labs-sdk,合计被下载了1600次,尽管它们上线不到一天便被发现并下架。开发者的计算机通常包含多种凭据、API 令牌和其他服务访问密钥,因此一旦被攻陷,攻击者可轻易实现横向移动,进一步侵入系统。
这些恶意 SDK 通过__init__.py 脚本加载恶意的 PyTorch 模型,这些模型执行了经过 base64编码的代码,旨在窃取用户的登录信息、网络地址以及机器所属组织的名称等。值得注意的是,这些恶意代码的主要目标可能是中国的开发者,因为阿里云 SDK 更吸引使用该服务的本地开发者。然而,这一手法同样可以针对任何开发者,只需通过不同的诱饵。
这一攻击揭示了机器学习模型文件格式的安全风险仍处于初级阶段,当前的安全工具在检测恶意 ML 模型方面远未完善。