供應(yīng)鏈攻擊技術(shù)欺騙 GitHub 提交元數(shù)據(jù)
開(kāi)源軟件可幫助開(kāi)發(fā)人員更快地創(chuàng)建應(yīng)用程序,如果他們認(rèn)為第三方代碼來(lái)自可靠來(lái)源,他們中的許多人可能會(huì)跳過(guò)對(duì)第三方代碼的適當(dāng)審計(jì)。例如,他們可能會(huì)選擇積極維護(hù)的 GitHub 存儲(chǔ)庫(kù)或有信譽(yù)良好的個(gè)人作為貢獻(xiàn)者的存儲(chǔ)庫(kù)。
根據(jù) Checkmarx 的說(shuō)法,威脅參與者可以偽造一些與 GitHub 存儲(chǔ)庫(kù)相關(guān)的數(shù)據(jù),以增強(qiáng)他們的跟蹤記錄,并使它們更有可能被應(yīng)用程序開(kāi)發(fā)人員選中。
具體來(lái)說(shuō),研究人員發(fā)現(xiàn)有人可能會(huì)篡改提交元數(shù)據(jù),從而使存儲(chǔ)庫(kù)看起來(lái)比實(shí)際更舊,或者有信譽(yù)的貢獻(xiàn)者參與了其維護(hù)。
提交對(duì)于 Git 版本控制系統(tǒng)是必不可少的:它們記錄對(duì)文件所做的更改、這些更改是在何時(shí)進(jìn)行的,以及是誰(shuí)進(jìn)行的。每個(gè)提交都有一個(gè)唯一的 ID 或哈希。
然而,根據(jù) Checkmarx 的說(shuō)法,人們可以以這樣一種方式操縱與提交相關(guān)的時(shí)間戳,即 GitHub 上列出的時(shí)間戳可以早于用戶提交的創(chuàng)建以及更改所針對(duì)的存儲(chǔ)庫(kù)的創(chuàng)建。
虛假提交可以自動(dòng)生成并自動(dòng)添加到用戶的 GitHub 活動(dòng)圖中,這可能使惡意用戶看起來(lái)好像他們已經(jīng)在代碼托管平臺(tái)上活動(dòng)了很長(zhǎng)時(shí)間。
“由于活動(dòng)圖顯示了公共和私人存儲(chǔ)庫(kù)上的活動(dòng),因此不可能抹黑這些虛假提交,因此這種欺騙技術(shù)也很難檢測(cè)到,”Checkmarx 說(shuō)。
此外,研究人員發(fā)現(xiàn)提交者的身份可以被欺騙,將提交歸因于真實(shí)的 GitHub 帳戶,例如平臺(tái)上的頂級(jí)貢獻(xiàn)者。
為此,惡意用戶需要檢索目標(biāo)帳戶的電子郵件地址——如果開(kāi)發(fā)人員選擇啟用該功能,通常會(huì)隱藏該地址——并使用特定命令將 Git CLI 中的用戶名和電子郵件設(shè)置為欺騙用戶的用戶名和電子郵件. 雖然這增加了 GitHub 存儲(chǔ)庫(kù)的聲譽(yù),但被欺騙的用戶永遠(yuǎn)不會(huì)被告知他們的名字被使用。
“為了使他們的項(xiàng)目看起來(lái)可靠,攻擊者可以使用這種技術(shù)一次或多次,并用已知的可靠貢獻(xiàn)者填充他們的存儲(chǔ)庫(kù)的貢獻(xiàn)者部分,這反過(guò)來(lái)使項(xiàng)目看起來(lái)值得信賴,”Checkmarx 指出。
GitHub 用戶可以使用提交簽名驗(yàn)證功能對(duì)他們的提交進(jìn)行加密簽名,但未簽名的提交不會(huì)被標(biāo)記。
根據(jù) Checkmarx 的說(shuō)法,用戶可以啟用“警惕模式”,在該模式下顯示所有提交的驗(yàn)證狀態(tài),從而提高該功能的有效性。
“虛假元數(shù)據(jù)可能會(huì)誤導(dǎo)開(kāi)發(fā)人員使用他們故意不使用的代碼,并且可能包含惡意代碼。缺乏對(duì)提交者身份和提交時(shí)間戳的驗(yàn)證本身就是一個(gè)問(wèn)題。