惡意 Go 包利用模塊鏡像緩存實現持久遠程訪問
網絡安全研究人員近日發現了一起針對Go生態系統的軟件供應鏈攻擊,攻擊者通過一個惡意包,能夠在受感染的系統中實現遠程訪問。
惡意包的偽裝與傳播
根據Socket的分析,這個名為github.com/boltdb-go/bolt的惡意包是對合法BoltDB數據庫模塊(github.com/boltdb/bolt)的“拼寫錯誤劫持”(typosquat)。惡意版本(1.3.1)于2021年11月發布到GitHub,隨后被Go Module Mirror服務無限期緩存。
安全研究員Kirill Boychenko在分析中指出:“一旦安裝,這個被植入后門的包會授予攻擊者對受感染系統的遠程訪問權限,使其能夠執行任意命令。”Socket表示,這是惡意行為者濫用Go Module Mirror無限期緩存模塊功能的最早案例之一,目的是誘使用戶下載惡意包。
攻擊者的欺騙手段
為了掩蓋惡意行為,攻擊者隨后修改了源代碼庫中的Git標簽,將其重定向到良性版本。這種欺騙手段確保了手動審查GitHub倉庫時不會發現任何惡意內容,而緩存機制則意味著使用Go CLI安裝該包的開發者會繼續下載被植入后門的版本。
Boychenko解釋道:“一旦模塊版本被緩存,它就可以通過Go Module Proxy訪問,即使原始源代碼后來被修改。雖然這種設計對合法用例有益,但攻擊者利用它來持續分發惡意代碼,盡管倉庫后續發生了變化。”
安全建議與相關案例
Boychenko提醒道:“不可變模塊既提供了安全優勢,也可能成為濫用的途徑。開發者和安全團隊應監控那些利用緩存模塊版本來逃避檢測的攻擊。”
與此同時,Cycode詳細披露了三個惡意npm包——serve-static-corell、openssl-node和next-refresh-token。這些包包含混淆代碼,用于收集系統元數據并執行遠程服務器(“8.152.163[.]60”)在受感染主機上發出的任意命令。
通過以上分析可以看出,軟件供應鏈攻擊正變得越來越復雜,開發者和安全團隊需要更加警惕,尤其是在使用第三方依賴時,應加強審查和監控,以防止類似攻擊的發生。