小心!你下载的机器学习工具包可能是病毒:CuPy被掉包,官方一天后才发现

晓查发自凹非寺 

量子位报道公众号 QbitAI

小心!你通过 pip 安装的机器学习工具包,有可能是恶意软件。如果你最近下载了 NumPy 的 CUDA 加速包 CuPy,那么你要注意了:cupy-cuda112 这款软件包,前几天被黑客悄悄换成了一个“恶意软件”。

不过还个好消息,冒牌的软件包已经被删除了。除此之外,PyPI 最近还删除了 3653 个恶意软件包。

整个事件的过程是这样的:

官方名称被抢注

2 月 26 日凌晨 5 点,Cupy 官方团队计划在这一天发布用于 CUDA 11.2 的 CuPy 工具包,因此准备在 PyPI 中注册 cupy-cuda112 这个名称。

然而,他们发现,有人居然在前一天晚上把这个软件包抢注了,而且抢注的黑客还上传了一个无效的版本 v2.2.2。

此时,CuPy 已经是 v8.4.0 了,而官方计划发布的是 v8.5.0 和 v9.0.0b3 两个版本。

CuPy 团队迅速向 PyPI 团队提交移除 cupy-cuda112 的请求,然后在 Twitter 和 GitHub 的 issue 页向所有程序员发布公告:我们的软件被掉包了。

PyPI 的处理也算迅速,到了中午 11 点, 假冒的 cupy-cuda112 软件包终于被下架。

直到 3 月 2 日,CuPy 团队才发布了正版 cupy-cuda112 软件包,攻击事件总算告一段落。

善意的提醒

黑客为何要上传 v2.2.2 版,令人匪夷所思。

因为这一版本号和当前 CuPy 版本差距也太大了。编译代码进行版本查询,很容易就发现猫腻。黑客显然并不想瞒天过海。

这位黑客极有可能正在进行一项安全测试。

黑客名叫“RemindSupplyChainRisks”,很明显他是为了引起大家对恶意软件风险的重视。

在这个软件包注释中,他甚至直接写道:“我这样做的目的是使所有人都关注软件供应链攻击,因为风险太大了。”

所以说,这根本就是一个带着善意提醒的“恶意软件”。但是,如果真的有人利用这个漏洞来攻击别人呢,真是让人细思极恐。

假冒软件包还会向一个 IP 地址发送 GET 请求,告诉黑客有哪些人被攻击了。

这不禁让人想起,一个月前类似的事件。

当时安全研究员 Alex Birsan 发现,采用掉包同名软件的手法,可以攻破苹果、微软、特斯拉等公司的内部网络。

因为这些科技都有自己的私有 PyPI 或 Node.js 软件包,只要上传与之同名的恶意软件,那么程序员们使用 pip、npm 安装命令就可能中毒。

Brisan 说,这种攻击方式的成功率简直让人吃惊,他也因此获得了多家公司的漏洞赏金。

根据 PEP 841 规范,项目维护者有保留软件包索引的权利,恶意软件抢注名称将被视为无效而被删除。

但是规范终究只是规范,缺乏安全审查的包管理工具风险依然存在。

参考链接:

[1] https://www.theregister.com/2021/03/02/python_pypi_purges/

[2] https://github.com/cupy/cupy/issues/4787

本文链接

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注