GitHub上數(shù)以百萬(wàn)計(jì)的企業(yè)軟件存儲(chǔ)庫(kù)容易受到劫持,這是一種相對(duì)簡(jiǎn)單的軟件供應(yīng)鏈攻擊,攻擊者會(huì)將某個(gè)特定存儲(chǔ)庫(kù)的項(xiàng)目重定向到一個(gè)惡意的存儲(chǔ)庫(kù)。
Aqua Security的研究人員在本周的一份報(bào)告中說(shuō),這個(gè)問(wèn)題與GitHub如何處理依賴關(guān)系有關(guān),當(dāng)GitHub用戶或組織更改項(xiàng)目名稱或?qū)⑵渌袡?quán)轉(zhuǎn)讓給另一個(gè)實(shí)體時(shí),容易受到重新劫持。
改名的風(fēng)險(xiǎn)
為了避免破壞代碼的依賴性,GitHub在原 repo 名稱和新名稱之間建立了一個(gè)鏈接,因此所有依賴原 repo 的項(xiàng)目都會(huì)自動(dòng)重定向到新更名的項(xiàng)目。然而,如果一個(gè)組織未能充分保護(hù)舊的用戶名,攻擊者可以簡(jiǎn)單地重新使用它來(lái)創(chuàng)建一個(gè)原始倉(cāng)庫(kù)的木馬版本,這樣任何依賴該存儲(chǔ)庫(kù)的項(xiàng)目將重新開(kāi)始從該存儲(chǔ)庫(kù)下載。
Aqua公司的研究人員在本周的博客中說(shuō):當(dāng)版本庫(kù)所有者改變他們的用戶名時(shí),對(duì)于任何從舊版本庫(kù)下載依賴項(xiàng)的人來(lái)說(shuō),在舊名稱和新名稱之間會(huì)產(chǎn)生一個(gè)鏈接。然而,任何人都有可能創(chuàng)建舊的用戶名并破壞這個(gè)鏈接。
普遍性問(wèn)題
Aqua發(fā)現(xiàn)了兩個(gè)問(wèn)題:一是,GitHub上有數(shù)百萬(wàn)個(gè)這樣的軟件庫(kù),包括屬于谷歌和Lyft等公司的軟件庫(kù);二是,攻擊者很容易找到這些軟件庫(kù)以及劫持它們的工具。其中一個(gè)工具是GHTorrent,這個(gè)工具對(duì)GitHub上的所有公共事件(如提交和請(qǐng)求)進(jìn)行了幾乎完整的記錄。攻擊者可以使用GHTorrent來(lái)獲取組織之前使用的GitHub倉(cāng)庫(kù)的名稱。然后他們可以用這個(gè)舊用戶名注冊(cè)存儲(chǔ)庫(kù),并向任何使用該存儲(chǔ)庫(kù)的項(xiàng)目傳輸惡意軟件。
任何直接引用GitHub存儲(chǔ)庫(kù)的項(xiàng)目,如果存儲(chǔ)庫(kù)的所有者改變或刪除了他們存儲(chǔ)庫(kù)的用戶名,就會(huì)受到攻擊。
因此,組織不應(yīng)假定他們的舊名稱不會(huì)被披露,而是要在GitHub上認(rèn)領(lǐng)并保留他們的舊用戶名。同時(shí)企業(yè)可以通過(guò)掃描他們的代碼、存儲(chǔ)庫(kù)和關(guān)聯(lián)性的GitHub鏈接來(lái)減輕他們面臨的劫持威脅。
參考鏈接:https://www.darkreading.com/application-security/millions-of-repos-on-github-are-potentially-vulnerable-to-hijacking