小心!你下載的機(jī)器學(xué)習(xí)工具包可能是病毒:CuPy被掉包,官方一天后才發(fā)現(xiàn)
真是有驚無險(xiǎn)
曉查 發(fā)自 凹非寺?量子位 報(bào)道 | 公眾號 QbitAI
小心!你通過pip安裝的機(jī)器學(xué)習(xí)工具包,有可能是惡意軟件。
如果你最近下載了NumPy的CUDA加速包CuPy,那么你要注意了:
cupy-cuda112這款軟件包,前幾天被黑客悄悄換成了一個(gè)“惡意軟件”。

不過還個(gè)好消息,冒牌的軟件包已經(jīng)被刪除了。除此之外,PyPI最近還刪除了3653個(gè)惡意軟件包。
整個(gè)事件的過程是這樣的:
官方名稱被搶注
2月26日凌晨5點(diǎn),Cupy官方團(tuán)隊(duì)計(jì)劃在這一天發(fā)布用于CUDA 11.2的CuPy工具包,因此準(zhǔn)備在PyPI中注冊cupy-cuda112這個(gè)名稱。
然而,他們發(fā)現(xiàn),有人居然在前一天晚上把這個(gè)軟件包搶注了,而且搶注的黑客還上傳了一個(gè)無效的版本v2.2.2。
此時(shí),CuPy已經(jīng)是v8.4.0了,而官方計(jì)劃發(fā)布的是v8.5.0和v9.0.0b3兩個(gè)版本。

CuPy團(tuán)隊(duì)迅速向PyPI團(tuán)隊(duì)提交移除cupy-cuda112的請求,然后在Twitter和GitHub的issue頁向所有程序員發(fā)布公告:我們的軟件被掉包了。
PyPI的處理也算迅速,到了中午11點(diǎn), 假冒的cupy-cuda112軟件包終于被下架。
直到3月2日,CuPy團(tuán)隊(duì)才發(fā)布了正版cupy-cuda112軟件包,攻擊事件總算告一段落。
善意的提醒
黑客為何要上傳v2.2.2版,令人匪夷所思。
因?yàn)檫@一版本號和當(dāng)前CuPy版本差距也太大了。編譯代碼進(jìn)行版本查詢,很容易就發(fā)現(xiàn)貓膩。黑客顯然并不想瞞天過海。
這位黑客極有可能正在進(jìn)行一項(xiàng)安全測試。
黑客名叫“RemindSupplyChainRisks”,很明顯他是為了引起大家對惡意軟件風(fēng)險(xiǎn)的重視。

在這個(gè)軟件包注釋中,他甚至直接寫道:“我這樣做的目的是使所有人都關(guān)注軟件供應(yīng)鏈攻擊,因?yàn)轱L(fēng)險(xiǎn)太大了。”
所以說,這根本就是一個(gè)帶著善意提醒的“惡意軟件”。但是,如果真的有人利用這個(gè)漏洞來攻擊別人呢,真是讓人細(xì)思極恐。
假冒軟件包還會向一個(gè)IP地址發(fā)送GET請求,告訴黑客有哪些人被攻擊了。
這不禁讓人想起,一個(gè)月前類似的事件。
當(dāng)時(shí)安全研究員Alex Birsan發(fā)現(xiàn),采用掉包同名軟件的手法,可以攻破蘋果、微軟、特斯拉等公司的內(nèi)部網(wǎng)絡(luò)。
因?yàn)檫@些科技都有自己的私有PyPI或Node.js軟件包,只要上傳與之同名的惡意軟件,那么程序員們使用pip、npm安裝命令就可能中毒。

Brisan說,這種攻擊方式的成功率簡直讓人吃驚,他也因此獲得了多家公司的漏洞賞金。
根據(jù)PEP 841規(guī)范,項(xiàng)目維護(hù)者有保留軟件包索引的權(quán)利,惡意軟件搶注名稱將被視為無效而被刪除。
但是規(guī)范終究只是規(guī)范,缺乏安全審查的包管理工具風(fēng)險(xiǎn)依然存在。
參考鏈接: [1]?https://www.theregister.com/2021/03/02/python_pypi_purges/ [2]?https://github.com/cupy/cupy/issues/4787
版權(quán)所有,未經(jīng)授權(quán)不得以任何形式轉(zhuǎn)載及使用,違者必究。