首頁 > 科技

只是pip安裝輸錯字母,你就可能中了挖礦病毒

2021-06-24 19:31:15

曉查 發自 凹非寺 量子位 報道 | 公眾號 QbitAI

用PyPI包管理工具安裝python軟體很方便,但你今後要三思而後行了。

當輸入這樣一句命令後:

pip install openvc

你也許並未發現異常,仔細一看可能才會察覺自己剛剛手抖,把opencv輸錯了。

但此時安裝命令已經開始運行了,因為openvc其實也是一個真實存在的軟體包,不過卻是個惡意軟體包。

圖片

最近,安全公司Sonatype發現,很多惡意軟體都偽裝成常見的PyPI包,往往只差幾個字母。

隨著加密貨幣的火爆,黑客們開始把挖礦軟體植入其中。如果使用者手打pip安裝命令手滑一下,自己的電腦就可能變成「礦機」。

PyPI裡的挖礦軟體

常用的繪圖工具包matplotlib首當其衝。PyPI今年有多個與之類似的惡意軟體包,如mplatlibmaratlib(記住這個軟體包名稱)等等。

這類「李鬼」共有7種之多,都是一個叫做nedog123的使用者上傳到PyPI。其中像maratlib還是今年4月份釋出的。

圖片

這一組惡意軟體以「maratlib」為核心,其他軟體都是把它作為依賴項,比如「learninglib」就是這種情況:

圖片

這程式碼還算是比較「直白」的,有些惡意軟體將依賴項稍微隱藏了一下,比如「mplatlib」:

圖片

它把依賴項偽裝成「LKEK」,從第47行程式碼可以看出LKEK就是maratlib。

接著Sonatype的安全工程師又對maratlib 1.0安裝包進行了分析,發現它已經偽裝得很深了,使用一般工具已經很難分析這些程式碼裡到底藏了什麼。

圖片

他只好把版本倒回0.6,這個版本的maratlib沒有對程式碼做偽裝,它會從GitHub下載和運行Bash指令碼程式碼:

圖片

但服務bash指令碼的網址拋出404錯誤,說明這個地址已經被GitHub刪除,或者被黑客nedog123廢棄不用。

經過更深的挖掘,這名安全工程師發現,黑客將程式碼遷移到了「Marat Nedogimov」和「maratoff」使用者名下。

圖片

這個aza2.sh指令碼會下載一個名為「Ubqminer」的挖礦軟體,而上圖中那一長串字元就是黑客的數字錢包地址。

至此,案件已經告破。好訊息是,PyPI已經刪除了這些惡意軟體包。

但是,據Sonatype公司統計,這7個李鬼軟體已經總共被下載超過5000次

惡意PyPI包防不勝防

這次發現的maratlib,可能只是PyPI惡意軟體包的冰山一角。PyPI包管理工具的問題一直為使用者所詬病。

今年2月,有人將CUDA加速包CuPy換成了惡意軟體。還有一位白帽黑客發現,只要向公共庫上傳PyPI軟體包,就能輕易替換掉私有化的同名軟體包,大大增加了科技公司中毒風險。

圖片

早在2016年,就有人用相似名稱的方法釋出PyPI惡意軟體包,騙過了1.7萬名程式設計師,導致這個惡意程式被運行了4.5萬次,甚至連美國軍方都中招了。

使用pip請謹慎

那麼,我們如何預防被安裝惡意的PyPI軟體包?

你以為只要認真檢查安裝命令就行了?No!

由於PyPI絕大部分軟體包都是第三方編寫和維護的,這體現了開源的優勢,但也埋下了稽核不嚴的危險種子。

如今,很多軟體都需要安裝依賴項,個人不可能一一檢查,甚至大公司也做不到。有時候一個軟體裡寫了上百個依賴項,根本沒法審查程式碼。

最好的辦法就是監控setup.py的行為,在安裝不太放心的軟體包時,可以在容器中通過pip安裝包,同時收集系統呼叫和網路流量,來分析其是否有惡意行為。

最後再提醒一下大家,不僅pip命令有風險,使用npm、gem等軟體包安裝命令也可能中毒,一定要對來源不明的軟體包仔細核查。

參考連結:[1]https://blog.sonatype.com/sonatype-catches-new-pypi-cryptomining-malware-via-automated-detection[2]https://arstechnica.com/gadgets/2021/06/counterfeit-pypi-packages-with-5000-downloads-installed-cryptominers/[3]https://www.freebuf.com/articles/web/254820.html[4]https://github.com/rsc-dev/pypi_malware


IT145.com E-mail:sddin#qq.com