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