小心!你下载的机器学习工具包可能是病毒:CuPy被黑客掉包

量子位

发布时间: 03-0814:00万象大会年度获奖创作者,量子位官方帐号,财经领域创作者

晓查 发自 凹非寺 量子位 报道 | 公众号 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

举报/反馈