GitHub上數(shù)千個(gè)Go模塊存儲(chǔ)庫容易受到攻擊
專家警告說,GitHub上的數(shù)千個(gè)Go模塊存儲(chǔ)庫很容易受到稱為存儲(chǔ)庫劫持或repojacking的攻擊。在這次攻擊中,黑客濫用了開發(fā)人員更改其帳戶名稱或完全刪除帳戶的事實(shí)。他們通過創(chuàng)建帳戶和同名存儲(chǔ)庫,然后向其中添加惡意代碼來濫用它。因此,這使得他們能夠發(fā)起毀滅性的供應(yīng)鏈攻擊,因?yàn)殚_發(fā)人員可以集成該代碼,而不知道它是惡意模仿者。
根據(jù)VulnCheck網(wǎng)絡(luò)安全研究人員的一份新報(bào)告,有9,000多個(gè)存儲(chǔ)庫由于GitHub用戶名更改而容易受到重新劫持,還有6,000個(gè)存儲(chǔ)庫由于帳戶刪除而容易受到攻擊。它們總共托管至少800,000個(gè)Go模塊版本。
《黑客新聞》在分析警報(bào)時(shí)表示,用Go編寫的模塊“特別容易”受到重新劫持,因?yàn)樗鼈兪侨ブ行幕?,并發(fā)布到GitHub或BitBucket等版本控制平臺(tái)。
“然后任何人都可以指示Go模塊鏡像和pkg.go.dev緩存模塊的詳細(xì)信息,”VulnCheck首席技術(shù)官JacobBaines告訴該出版物。“攻擊者可以注冊(cè)新未使用的用戶名,模塊存儲(chǔ)庫,并將新模塊發(fā)布到proxy.golang.org和go.pkg.dev。”
GitHub已經(jīng)嘗試通過一項(xiàng)名為“流行存儲(chǔ)庫命名空間退休”的功能來解決這個(gè)問題。它可以防止用戶使用過去克隆超過100次的已退役命名空間的名稱創(chuàng)建存儲(chǔ)庫。然而,VulnCheck表示,該功能并沒有多大幫助,因?yàn)镚o模塊是由模塊鏡像緩存的,這意味著可能存在少于100個(gè)克隆的流行Go模塊,因此仍然容易受到重新劫持。
“不幸的是,緩解所有這些重新劫持是Go或GitHub必須承擔(dān)的事情,”貝恩斯說。“第三方無法合理注冊(cè)15,000個(gè)GitHub帳戶。在此之前,Go開發(fā)人員必須了解他們使用的模塊以及這些模塊源自的存儲(chǔ)庫的狀態(tài),這一點(diǎn)非常重要。”
標(biāo)簽: