RepoJacking 攻擊影響數(shù)百萬(wàn) GitHub 庫(kù)。
數(shù)百萬(wàn) GitHub 庫(kù)受到依賴(lài)庫(kù)劫持攻擊 "RepoJacking" 的影響,可以幫助攻擊者首先供應(yīng)鏈攻擊,影響數(shù)百萬(wàn)用戶。
(資料圖片)
RepoJacking 攻擊
GitHub 上用戶名和庫(kù)名是經(jīng)常變化的。如果企業(yè)被受到或合并,名字就會(huì)發(fā)生變化。名字發(fā)生變化后,就會(huì)創(chuàng)建重定向來(lái)避免破壞項(xiàng)目依賴(lài)。但如果有用戶注冊(cè)了原來(lái)的用戶名或庫(kù)名,重定向就無(wú)效了。
RepoJacking 攻擊是指惡意用戶注冊(cè)一個(gè) GitHub 用戶名,并創(chuàng)建一個(gè)該組織過(guò)去使用的庫(kù),然后修改其名。通過(guò) RepoJacking 攻擊,攻擊者可以依賴(lài)被攻擊項(xiàng)目的依賴(lài)來(lái)從攻擊者控制的庫(kù)中取回依賴(lài)和代碼,其中可能包含惡意軟件。攻擊案例
AquaSec 安全研究團(tuán)隊(duì) Nautilus 分析了 125 萬(wàn) GitHub 庫(kù),發(fā)現(xiàn)其中 2.95% 可能受到 RepoJacking 攻擊的影響。GitHub 庫(kù)總數(shù)超過(guò) 3 億,按照 2.95% 的比例,超過(guò) 900 萬(wàn)項(xiàng)目受到該攻擊的影響。
在 Google 的庫(kù)例子中,"Mathsteps" 項(xiàng)目指向?qū)儆?Socratic 的 GitHub 庫(kù)。Socratic 是谷歌收購(gòu)的一家公司。攻擊者可以克隆庫(kù)來(lái)破壞重定向,用戶根據(jù) readme 文件指示會(huì)從惡意庫(kù)中下載惡意代碼。由于 readme 文件中包含 npm install 依賴(lài)命令,攻擊者的代碼可以在受害者設(shè)備上實(shí)現(xiàn)任意代碼執(zhí)行。
圖 谷歌 readme 文件中的命令在 Lyft 的例子中,攻擊者可以自動(dòng)執(zhí)行。研究人員在該公司的庫(kù)中發(fā)現(xiàn)一個(gè)安裝腳本,可以從另一個(gè)庫(kù)中取回一個(gè) zip 壓縮文件,因此也受到 RepoJacking 攻擊的影響。
攻擊者首先注冊(cè)一個(gè)新的用戶名和使用正確名的庫(kù)(YesGraph 和 Dominus),然后可以注入代碼到任意執(zhí)行 Lyft 的 "install.sh" 腳本。
圖 指向外部庫(kù)的 Lyft 腳本總結(jié)
GitHub 已經(jīng)意識(shí)到 RepoJacking 攻擊的可能性并實(shí)現(xiàn)了一些防護(hù)措施。但 AquaSec 稱(chēng)這些防護(hù)措施還不夠充分,易被繞過(guò)。比如,GitHub 只對(duì)那些比較流行的項(xiàng)目進(jìn)行保護(hù)。GitHub 會(huì)對(duì)克隆數(shù)超過(guò) 100 的項(xiàng)目修改名時(shí)進(jìn)行保護(hù)。
RepoJacking 的風(fēng)險(xiǎn)是非常廣泛的,也難以修復(fù),會(huì)對(duì)企業(yè)和用戶帶來(lái)嚴(yán)重的風(fēng)險(xiǎn)。項(xiàng)目所有者應(yīng)當(dāng)盡可能最小化從外部庫(kù)提取資源。
完整技術(shù)細(xì)節(jié)參見(jiàn):https://blog.aquasec.com/github-dataset-research-reveals-millions-potentially-vulnerable-to-repojacking
關(guān)鍵詞: