近日,GitHub披露了一起開(kāi)源軟件供應(yīng)鏈攻擊事件。GitHub上的大量NetBeans代碼庫(kù)被惡意軟件章魚(yú)掃描器(Octopus Scanner)感染成為傳染點(diǎn),章魚(yú)掃描器是專(zhuān)門(mén)為感染NetBeans項(xiàng)目而設(shè)計(jì)的后門(mén)。
根據(jù)Github公布的信息,章魚(yú)掃描器影響了26個(gè)開(kāi)源項(xiàng)目。
章魚(yú)掃描器直接感染了Github上的開(kāi)發(fā)工具,性質(zhì)要比常見(jiàn)的將GitHub平臺(tái)作為惡意軟件C2服務(wù)器嚴(yán)重得多。
危險(xiǎn)的章魚(yú)
GitHub于3月9日收到一名獨(dú)立安全研究人員的漏洞警告,稱(chēng)GitHub托管的一組代碼庫(kù)正在積極提供惡意軟件服務(wù)。
隨后的調(diào)查證實(shí),章魚(yú)掃描器惡意軟件能夠?qū)etBeans項(xiàng)目文件進(jìn)行分類(lèi),然后將有效惡意負(fù)載嵌入GitHub項(xiàng)目文件并創(chuàng)建JAR文件。
受影響的GitHub代碼庫(kù)所有者很可能完全意識(shí)不到惡意活動(dòng)的存在,并且清理惡意軟件也是一個(gè)挑戰(zhàn),因?yàn)閮H僅阻止或禁止項(xiàng)目維護(hù)(者)并不是一個(gè)好選擇。
GitHub安全實(shí)驗(yàn)室正在研究如何從受感染的存儲(chǔ)庫(kù)中正確刪除惡意軟件,而不必關(guān)閉用戶(hù)帳戶(hù)。
GitHub安全專(zhuān)家 Alvaro Mu?oz在一篇文章(https://securitylab.github.com/research/octopus-scanner-malware-open-source-supply-chain)中給出了詳細(xì)技術(shù)分析,介紹GitHub安全團(tuán)隊(duì)如何克服困難剔除章魚(yú)掃描器。
但是,關(guān)于此次攻擊的許多問(wèn)題仍然存在,尤其是為什么惡意軟件作者針對(duì)NetBeans構(gòu)建過(guò)程(一種相對(duì)不流行的Java IDE)進(jìn)行攻擊。
如果惡意軟件開(kāi)發(fā)人員花時(shí)間專(zhuān)門(mén)針對(duì)NetBeans實(shí)施此惡意軟件,則意味著它可能是針對(duì)性攻擊,或者他們可能也針對(duì)諸如Make,MsBuild,Gradle等開(kāi)發(fā)系統(tǒng)實(shí)施了該惡意軟件。盡管在分析時(shí)惡意軟件C2服務(wù)器似乎并未處于活動(dòng)狀態(tài),但受影響的存儲(chǔ)庫(kù)仍對(duì)GitHub用戶(hù)構(gòu)成了風(fēng)險(xiǎn),他們可能會(huì)克隆和構(gòu)建這些項(xiàng)目。
開(kāi)源軟件安全專(zhuān)家Sonatype的CTO Brian Fox評(píng)論說(shuō),章魚(yú)掃描器如此危險(xiǎn)的原因是它感染了開(kāi)發(fā)人員工具,這些工具隨后感染了他們正在從事的所有項(xiàng)目,從而影響了他們的團(tuán)隊(duì)或開(kāi)源用戶(hù)社區(qū)。
章魚(yú)掃描器惡意軟件證實(shí)了分析代碼中二進(jìn)制文件的重要性,而不僅僅依靠清單。章魚(yú)掃描器如此危險(xiǎn)的原因在于它具有感染項(xiàng)目中其他JAR文件的能力,因此開(kāi)發(fā)人員最終使用“有毒”代碼并將其分發(fā)給他們的團(tuán)隊(duì)或開(kāi)放源代碼用戶(hù)社區(qū)。我們已經(jīng)觀測(cè)到20多次針對(duì)開(kāi)源項(xiàng)目的一次性惡意代碼注入嘗試,但章魚(yú)掃描器是一種新的攻擊形式。這種攻擊感染了開(kāi)發(fā)人員工具,這些工具隨后感染了他們正在從事的所有項(xiàng)目。
供應(yīng)鏈攻擊
GitHub Daily Security Lab的負(fù)責(zé)人Nico Waisman解釋說(shuō):
章魚(yú)掃描程序的目標(biāo)是將后門(mén)插入NetBeans構(gòu)建的人工制品中,以便攻擊者隨后可以將這些資源用作攻擊的一部分。命令和控制服務(wù)器。
Waisman補(bǔ)充說(shuō):
沒(méi)有證據(jù)表明26個(gè)開(kāi)源項(xiàng)目實(shí)際上是惡意軟件的攻擊目標(biāo)。該惡意軟件的主要目標(biāo)是感染開(kāi)發(fā)人員的計(jì)算機(jī)并通過(guò)NetBeans項(xiàng)目傳播。由于開(kāi)發(fā)人員受到感染,他們無(wú)意中將后門(mén)代碼上傳到了自己的存儲(chǔ)庫(kù)。
軟件依賴(lài)關(guān)系無(wú)處不在,因此使用數(shù)百甚至數(shù)千個(gè)開(kāi)源依賴(lài)關(guān)系成為項(xiàng)目的正常現(xiàn)象。Waisman警告說(shuō),攻擊者正在利用開(kāi)源軟件的這種依賴(lài)性進(jìn)行攻擊。
Waisman說(shuō):
盡管開(kāi)源對(duì)開(kāi)發(fā)人員來(lái)說(shuō)很容易,但這也意味著對(duì)攻擊者來(lái)說(shuō)很容易。攻擊者正在尋求供應(yīng)鏈突破口,因?yàn)楣?yīng)鏈攻擊的影響范圍更大。突破一點(diǎn)就能夠訪問(wèn)多個(gè)目標(biāo)。
威斯曼總結(jié)說(shuō),盡管像這樣的供應(yīng)鏈攻擊令人恐懼,但它們?nèi)匀缓苌僖?jiàn)。
Waisman指出:
供應(yīng)鏈安全的主要問(wèn)題是未修補(bǔ)的軟件。對(duì)于攻擊者而言,在依賴(lài)中利用未修補(bǔ)的已知漏洞要比在代碼中插入新漏洞要容易得多。
對(duì)于開(kāi)發(fā)人員而言,主要的挑戰(zhàn)是了解項(xiàng)目的依賴(lài)關(guān)系,以及何時(shí)需要對(duì)其進(jìn)行修補(bǔ)。在GitHub上,Dependency Graph可幫助您了解項(xiàng)目的依賴(lài)關(guān)系。