首頁 > 科技

Python官方軟體包儲存庫成惡意軟體大本營?

2021-06-28 13:19:51

整理 | Carol

相信下載並使用開源軟體包一定是每個開發者的必備技能,畢竟站在巨人的肩膀上看風景才能看得最遠,然而,你使用的開原始碼一定是安全的嗎?

近日,一名安全研究人員發現,很多在Python官方軟體包儲存庫(PyPI)上下載了大約5,000次的軟體竟然是假冒軟體!同時這些假冒軟體包還暗含祕密程式碼,能在被感染機器上安裝加密軟體。

打錯一個字母,私人計算機竟一不小心稱為」礦機「?

來自安全公司Sonatype的研究員Ax Sharma報告說,在PyPI儲存庫中,可用的惡意軟體包氾濫。這些惡意軟體包的名稱通常模仿了那些已經可用的、合法的、而且被廣泛使用的軟體包的名稱。

因此當用戶不小心輸入錯誤名稱,例如將合法且流行的包matplotlib的名稱輸入為「mplatlib」或「maratlib」而不是時,就成功落入了所謂typosquatting attacks(域名搶注攻擊)的圈套。

Sharma發現了六個會偷偷在使用者計算機上安裝加密挖礦軟體的軟體包,這些軟體不僅會使用受害者被感染的計算機來挖礦,還會將挖礦所得祕密存入攻擊者的錢包。所有這六個軟體都是由PyPI使用者名nedog123的人釋出的,最早的釋出時間是今年4月份。包名稱和下載號分別是:

  • maratlib:2,371

  • maratlib1:379

  • matplatlib-plus:913

  • mllearnlib:305

  • mplatlib:318

  • learninglib:626

(現已搜尋不到以上軟體包)

這些包的名稱與許多被廣泛使用的軟體包相似但又不完全一樣,使用者很容易被」忽悠「。包中的惡意程式碼藏在每個包的setup.py檔案中,這些程式碼會導致受感染的計算機使用ubqminer或T-Rex加密礦工來挖掘數字貨幣並將其存入以下地址:0x510aec7f266557b7de753231820571b13eb31b57。

垃圾軟體氾濫,擦亮眼睛最重要

PyPI,全稱是:Python Package Index,它是Python官方的第三方庫的倉庫,所有人都可以下載第三方庫或上傳自己開發的庫到PyPI。因此在PyPI上利用垃圾軟體包發起攻擊的事件屢見不鮮。

五月份就有報道稱,有黑客通過釋出垃圾軟體包發起洪水攻擊,這些軟體包的名稱多采用來自BT種子或者其他線上盜版內容的電影名稱命名,甚至名稱中還包含年份、線上、免費等字樣。例如「watch-army-of-the-dead-2021-full-online-movie-free-hd-quality」。

經調查得知,這些軟體包不完全是垃圾軟體,為了進一步迷惑使用者,它們會從合法Python軟體包中竊取的功能程式碼和作者資訊。例如研究者一個名為"watch-army-of-the-dead-2021-full-on-line-movie-free-hd-quality"的垃圾郵件包就包含了作者資訊以及來自"jedi- language-server"PyPI包的一些程式碼。

PyPI經常被濫用的事實眾所周知,其中最慘痛的教訓發生在2016年,有一名大學生欺騙了17,000名程式設計師運行他釋出的粗略指令碼。

這項令人大開眼界的研究是由漢堡大學學生Nikolai Philipp Tschacher進行的,他為了寫畢業論文,在PyPI跟眾多程式設計師開了一個大玩笑,他使用了「域名搶注」攻擊的變體,首先在PyPI、RubyGems和NPM(分別是Python、Ruby和JavaScript程式語言的開發人員的社群網站)上確定了214個下載最廣泛的包。然後,他將他的程式碼上傳到這些站點,併為它們提供了與214個軟體包非常相似的名稱。

Tschacher的攻擊並非惡意的,他的指令碼也會為計算機提供一個警告,通知開發人員他們可能無意中安裝了錯誤的軟體包。但在此之前,該程式碼向大學計算機發送了一個Web請求,以便他可以跟蹤他的冒牌程式碼被執行了多少次以及是否獲得了管理許可權。

由於Tschacher的行為是依賴於混淆,而不是徹頭徹尾的欺騙,來誘使人們安裝他的冒牌軟體,因此目前尚不清楚該實驗是否違反了道德甚至法律界限。儘管如此,Tschacher的實驗所傳授的教訓還是值得我們思考的。

其實這些攻擊是很低階的,同時也是很簡單的,開原始碼本身就存在風險,因此建議各位開發者在下載並使用開原始碼時,謹慎地對程式碼進行甄別,尤其是你的計算機資源非常重要且私密程度很高時,更要多加防範。


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