GitHub供應鏈攻擊事件:Coinbase遭襲,218個倉庫暴露,CI/CD密鑰泄露
此次供應鏈攻擊涉及GitHub Action "tj-actions/changed-files",最初是針對Coinbase的一個開源項目的高度定向攻擊,隨后演變?yōu)榉秶鼜V的威脅。
image
攻擊過程與影響
Palo Alto Networks Unit 42在一份報告中指出:“攻擊載荷主要針對其開源項目agentkit的公共CI/CD流程,可能是為了利用它進行進一步的攻擊。然而,攻擊者未能使用Coinbase的密鑰或發(fā)布軟件包?!?/p>
該事件于2025年3月14日曝光,當時發(fā)現(xiàn)"tj-actions/changed-files"被入侵,注入了泄露運行該工作流的倉庫中敏感密鑰的代碼。該漏洞被分配了CVE標識符CVE-2025-30066(CVSS評分:8.6)。
根據(jù)Endor Labs的估計,218個GitHub倉庫因這次供應鏈攻擊暴露了其密鑰,泄露的信息主要包括DockerHub、npm和亞馬遜云服務(wù)(AWS)的“幾十個”憑證,以及GitHub安裝訪問令牌。
安全研究員Henrik Plate表示:“考慮到成千上萬的倉庫依賴于這個GitHub Action,供應鏈攻擊的初始規(guī)模聽起來很可怕。然而,深入分析工作流、運行情況和泄露的密鑰后,發(fā)現(xiàn)實際影響比預期的要小:‘僅’218個倉庫泄露了密鑰,其中大多數(shù)是短期的GITHUB_TOKEN,一旦工作流運行完成就會過期?!?/p>
攻擊手段與后續(xù)發(fā)展
此后,另一個名為"reviewdog/action-setup"的GitHub Action的v1標簽也被入侵,該標簽通過"tj-actions/eslint-changed-files"作為依賴項被"tj-actions/changed-files"使用,其攻擊載荷與tj-actions事件類似。"reviewdog/action-setup"的漏洞被追蹤為CVE-2025-30154(CVSS評分:8.6)。
據(jù)稱,CVE-2025-30154的利用使未識別的威脅行為者獲得了與"tj-actions/changed-files"相關(guān)的個人訪問令牌(PAT),從而允許他們修改倉庫并推送惡意代碼,進而影響了所有依賴該Action的GitHub倉庫。
Unit 42的研究人員Omer Gil、Aviad Hahami、Asi Greenholts和Yaron Avital表示:“當執(zhí)行tj-actions/eslint-changed-files Action時,tj-actions/changed-files CI運行器的密鑰被泄露,攻擊者得以竊取運行器中使用的憑證,包括屬于tj-bot-actions GitHub用戶賬戶的個人訪問令牌(PAT)。”
目前懷疑攻擊者設(shè)法獲得了對reviewdog組織具有寫權(quán)限的令牌,以進行惡意修改。然而,該令牌的獲取方式目前仍不清楚。
此外,對"reviewdog/action-setup"的惡意提交據(jù)稱是通過首先分叉相應倉庫,提交更改,然后創(chuàng)建分叉拉取請求到原始倉庫,最終引入任意提交——這種情況被稱為“懸空提交”。
Palo Alto Networks的高級研究經(jīng)理Gil告訴The Hacker News:“攻擊者采取了多種技術(shù)手段來掩蓋其蹤跡,例如利用懸空提交、創(chuàng)建多個臨時GitHub用戶賬戶,以及在工作流日志中混淆其活動(尤其是在最初的Coinbase攻擊中)。這些發(fā)現(xiàn)表明,攻擊者技術(shù)高超,對CI/CD安全威脅和攻擊策略有深刻理解?!?/p>
Unit 42推測,分叉拉取請求背后的用戶賬戶"iLrmKCu86tjwp8"可能在攻擊者從注冊時提供的合法電子郵件地址切換到一次性(或匿名)電子郵件后從公眾視野中隱藏,這可能導致該用戶的所有交互和操作被隱藏。然而,GitHub在回應時既未確認也未否認這一假設(shè),但表示正在積極審查情況并采取必要措施。
GitHub發(fā)言人告訴The Hacker News:“目前沒有證據(jù)表明GitHub或其系統(tǒng)遭到入侵。所提及的項目是用戶維護的開源項目?!?/p>
“GitHub繼續(xù)根據(jù)GitHub的可接受使用政策審查并處理與倉庫內(nèi)容相關(guān)的用戶報告,包括惡意軟件和其他惡意攻擊。用戶應始終在更新到新版本之前審查GitHub Actions或他們代碼中使用的任何其他包。這一點在這里與所有其他使用第三方代碼的情況一樣?!?/p>
對tj-actions/changed-files的GitHub分叉的深入搜索發(fā)現(xiàn)了另外兩個賬戶"2ft2dKo28UazTZ"和"mmvojwip",這兩個賬戶此后已從平臺上刪除。這兩個賬戶還被發(fā)現(xiàn)創(chuàng)建了與Coinbase相關(guān)的倉庫的分叉,如onchainkit、agentkit和x402。
進一步檢查發(fā)現(xiàn),這些賬戶通過分叉拉取請求修改了agentkit倉庫中的"changelog.yml"文件,指向之前使用PAT發(fā)布的惡意版本的"tj-actions/changed-files"。
據(jù)信,攻擊者獲得了對agentkit倉庫具有寫權(quán)限的GitHub令牌——這反過來是由執(zhí)行tj-actions/changed-files GitHub Actions促成的——以便進行未經(jīng)授權(quán)的更改。
攻擊者的策略與動機
另一個值得強調(diào)的重要方面是兩種情況下使用的攻擊載荷的差異,表明攻擊者試圖保持低調(diào)。
Gil表示:“攻擊者在攻擊的不同階段使用了不同的攻擊載荷。例如,在大規(guī)模攻擊中,攻擊者轉(zhuǎn)儲了運行器的內(nèi)存,并將存儲為環(huán)境變量的密鑰打印到工作流的日志中,無論哪個工作流正在運行。然而,在針對Coinbase時,攻擊者專門獲取了GITHUB_TOKEN,并確保只有在倉庫屬于Coinbase時才會執(zhí)行攻擊載荷?!?/p>
目前尚不清楚此次攻擊的最終目標是什么,但Gil指出,“強烈”懷疑其意圖是經(jīng)濟利益,可能是試圖進行加密貨幣盜竊,考慮到對Coinbase的高度針對性。截至2025年3月19日,該加密貨幣交易所已修復了攻擊。
目前也不清楚是什么促使攻擊者改變策略,將最初的有針對性的攻擊轉(zhuǎn)變?yōu)榇笠?guī)模且不那么隱秘的行動。
Gil表示:“一種假設(shè)是,在意識到他們無法利用其令牌毒害Coinbase倉庫——并得知Coinbase已檢測并緩解了攻擊后——攻擊者擔心失去對tj-actions/changed-files Action的訪問權(quán)限。由于入侵此Action可能提供對許多其他項目的訪問權(quán)限,他們可能決定迅速采取行動。這可以解釋為什么他們在Coinbase緩解其暴露后僅20分鐘就發(fā)起了大規(guī)模攻擊,盡管檢測風險增加?!?/p>