軟件供應(yīng)鏈安全:基礎(chǔ)知識(shí)和四個(gè)關(guān)鍵最佳實(shí)踐

軟件供應(yīng)鏈安全旨在檢測(cè)、預(yù)防和緩解此類威脅及源于組織所用第三方組件的任何其他威脅。作為持續(xù)集成與持續(xù)交付(CI/CD)系列指南之一,本文將討論軟件供應(yīng)鏈攻擊和挫敗此類攻擊的最佳方式。

1.png

本文來自微信公眾號(hào)“數(shù)世咨詢”,作者/nana。

01

軟件供應(yīng)鏈安全是什么?

現(xiàn)代企業(yè)軟件通常由一些定制代碼和越來越多的第三方組件構(gòu)成,既有閉源也有開源。這些第三方組件自身也經(jīng)常有部分功能來自其他第三方組件。提供這些組件(及其依賴項(xiàng))的所有供應(yīng)商和存儲(chǔ)庫就構(gòu)成了軟件供應(yīng)鏈的主體。但不僅僅是代碼,軟件產(chǎn)品的供應(yīng)鏈還包括維持軟件運(yùn)行的所有人員、服務(wù)和基礎(chǔ)設(shè)施??偨Y(jié)一下就是:軟件供應(yīng)鏈通常是一張龐大而復(fù)雜的網(wǎng)絡(luò),其中聚集了各種代碼源、硬件和人員,共同制造、支持和交付更大的軟件產(chǎn)品。

采用第三方和開源軟件可以幫助組織節(jié)省時(shí)間和資金,解放內(nèi)部開發(fā)人員的雙手,讓他們得以去創(chuàng)造新穎的軟件而不是重新發(fā)明輪子,但這是有代價(jià)的。這些組件的創(chuàng)建和維護(hù)人員并非組織聘用的員工,可能不會(huì)遵循其采用的那套安全策略、實(shí)踐和質(zhì)量標(biāo)準(zhǔn)。這就帶來了固有的安全風(fēng)險(xiǎn),因?yàn)椴呗灾g的差異和不一致可能會(huì)形成被忽略掉的薄弱區(qū)域,容易遭到攻擊者利用。

攻擊者突破軟件供應(yīng)鏈安全防線的途徑有很多,比如:

•利用第三方組件的漏洞

•入侵第三方開發(fā)環(huán)境并注入惡意軟件

•創(chuàng)建惡意虛假組件

軟件供應(yīng)鏈安全旨在檢測(cè)、預(yù)防和緩解此類威脅及源于組織所用第三方組件的任何其他威脅。作為持續(xù)集成與持續(xù)交付(CI/CD)系列指南之一,本文將討論軟件供應(yīng)鏈攻擊和挫敗此類攻擊的最佳方式。

02

什么是軟件供應(yīng)鏈攻擊?

根據(jù)美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)的描述,如果攻擊者“滲透進(jìn)軟件供應(yīng)商的網(wǎng)絡(luò),并在軟件交付給客戶之前使用惡意代碼損害軟件,即視為發(fā)生了軟件供應(yīng)鏈攻擊。受損軟件后續(xù)會(huì)危害客戶的數(shù)據(jù)或系統(tǒng)。”換個(gè)說法:黑客入侵了你信任的供應(yīng)商并將惡意代碼注入到其產(chǎn)品中,然后這些產(chǎn)品最終會(huì)進(jìn)入到你的系統(tǒng)里,可能會(huì)導(dǎo)致黑客能夠訪問你的敏感數(shù)據(jù),或者破壞你的代碼從而染指你的客戶,讓你面臨勒索軟件攻擊或其他惡意活動(dòng)風(fēng)險(xiǎn)。受損供應(yīng)商軟件可能從一開始就被悄悄篡改了,或者是后來才被攻破,通過補(bǔ)丁或修復(fù)程序等更新進(jìn)行部署。這些攻擊可不是什么小事,可能造成嚴(yán)重?fù)p失,影響受損軟件的所有用戶,比如政府、關(guān)鍵基礎(chǔ)設(shè)施和私營產(chǎn)業(yè)軟件用戶。

攻擊者通常會(huì)找尋供應(yīng)鏈中防護(hù)較弱的環(huán)節(jié),利用這一環(huán)節(jié)在供應(yīng)鏈中向上或橫向移動(dòng),直至抵達(dá)其真正目標(biāo)。他們利用信任關(guān)系入侵采用初始受害者組件、產(chǎn)品或服務(wù)的組織,只需一次成功的漏洞利用即可滲透進(jìn)大量防護(hù)良好的組織。

軟件供應(yīng)鏈攻擊很特別,因?yàn)檫@種攻擊將重點(diǎn)從目標(biāo)組織的內(nèi)部防御轉(zhuǎn)移到其供應(yīng)商的內(nèi)部防御上。防護(hù)嚴(yán)密的組織可能不值得花費(fèi)時(shí)間和精力去直接攻擊。但如果該組織采用了安全措施薄弱的供應(yīng)商,攻擊者就可以對(duì)供應(yīng)商下手,入侵其網(wǎng)絡(luò)或開發(fā)過程。一旦得手,攻擊者就能以此為據(jù)點(diǎn),進(jìn)而滲透到原本防護(hù)良好的組織系統(tǒng)中。

03

MSP攻擊

托管服務(wù)提供商(MSP)是供應(yīng)鏈攻擊的常見目標(biāo)。組織會(huì)采用MSP外包技術(shù)崗位,包括與網(wǎng)絡(luò)和系統(tǒng)管理等高度敏感的工作有關(guān)的那些崗位。只要入侵MSP,攻擊者就能立即獲得其所有客戶的企業(yè)網(wǎng)絡(luò)的訪問權(quán)。這些類型的攻擊可用于策劃勒索軟件攻擊、銷售點(diǎn)入侵和商務(wù)電郵入侵(BEC)欺詐。近些年,此類攻擊急速增長,多個(gè)國家的政府網(wǎng)絡(luò)安全組織都認(rèn)為這一趨勢(shì)還會(huì)持續(xù)。2021年發(fā)布的一份報(bào)告估計(jì),對(duì)單個(gè)MSP或托管安全服務(wù)提供商(MSSP)進(jìn)行網(wǎng)絡(luò)攻擊可導(dǎo)致數(shù)百家企業(yè)產(chǎn)生高達(dá)800億美元的經(jīng)濟(jì)損失。

04

供應(yīng)鏈攻擊如何利用惡意軟件?

MSP攻擊利用的是特權(quán)訪問,而其他供應(yīng)鏈攻擊則入侵軟件供應(yīng)商的系統(tǒng)并植入惡意軟件。該惡意軟件隨后會(huì)傳播到供應(yīng)商的客戶處。災(zāi)難性的SolarWinds攻擊就使用了這種方法。這場著名的供應(yīng)鏈攻擊中,攻擊者將惡意軟件植入了SolarWinds簽名的軟件更新中,并將此看似無害的更新包分發(fā)給了其客戶。思科、SAP、英特爾、德勤、英偉達(dá)、富士通和樂天等大型跨國企業(yè)都遭遇了攻擊。該攻擊的影響非常深遠(yuǎn),甚至難以計(jì)算企業(yè)到底花了多少錢用于善后,但據(jù)估計(jì)高達(dá)1000億美元。

供應(yīng)鏈攻擊會(huì)用到的另一個(gè)惡意軟件來源是npm和rubygems等包注冊(cè)表的惡意軟件包,這倒不是什么新鮮招數(shù),但最近突然頗為流行。攻擊者依靠品牌劫持、誤植域名、依賴項(xiàng)劫持和依賴項(xiàng)混淆來誘騙疲憊或漫不經(jīng)心的開發(fā)人員,使其下載偽裝成可信開源軟件的惡意軟件。下載后,攻擊者就可以利用惡意包中的惡意軟件盜取用戶名和密碼等私密信息,用以在組織的基礎(chǔ)設(shè)施中橫向移動(dòng),并向外突破,染指組織的客戶和合作伙伴。

05

后續(xù)攻擊

通常,初始供應(yīng)鏈攻擊不過是攻擊者計(jì)劃的第一步。在初始入侵之后,攻擊者往往會(huì)嘗試橫向移動(dòng)和提權(quán),從而加深其對(duì)網(wǎng)絡(luò)的控制,獲得更多敏感系統(tǒng)的訪問權(quán)。隨后,或者與此同時(shí),攻擊者可能會(huì)盜取敏感數(shù)據(jù)、破壞運(yùn)營系統(tǒng),或者像勒索軟件攻擊一樣敲詐受害組織。

06

為什么傳統(tǒng)網(wǎng)絡(luò)安全措施不足以保護(hù)軟件供應(yīng)鏈安全?

供應(yīng)鏈攻擊可能需要幾個(gè)月才能成功,但往往很長一段時(shí)間內(nèi)都不會(huì)被發(fā)現(xiàn)。類似于高級(jí)持續(xù)性威脅(APT)攻擊,供應(yīng)鏈攻擊通常既具有針對(duì)性又高度復(fù)雜。

即便采用了卓越的傳統(tǒng)網(wǎng)絡(luò)安全防御措施,組織在面對(duì)供應(yīng)鏈攻擊的時(shí)候仍然可能十分脆弱。事實(shí)上,供應(yīng)鏈攻擊可能正在增多,因?yàn)楹芏嘟M織都加強(qiáng)了自身傳統(tǒng)安全措施,攻擊者已經(jīng)摘不到多少唾手可得的果實(shí)了。然而,盡管軟件成分分析(SCA)等一些安全解決方案會(huì)評(píng)估第三方軟件的風(fēng)險(xiǎn),大多數(shù)傳統(tǒng)網(wǎng)絡(luò)安全方法的隱式信任已經(jīng)包含在產(chǎn)品或服務(wù)中的元素。組織可能在采用先進(jìn)的防火墻和端點(diǎn)安全技術(shù),但這些技術(shù),或者該組織基礎(chǔ)設(shè)施中的其他部分,仍有可能被供應(yīng)鏈攻擊突破。

歐盟網(wǎng)絡(luò)安全局(ENISA)的一份報(bào)告顯示,上報(bào)的供應(yīng)鏈攻擊中大約66%使用了供應(yīng)商代碼來入侵供應(yīng)商的客戶。考慮到開源包注冊(cè)表中惡意軟件包的上升趨勢(shì),開源軟件是另一個(gè)風(fēng)險(xiǎn)甚大的領(lǐng)域。組織應(yīng)將重點(diǎn)放在所有要用的第三方軟件都未遭篡改上。

ENISA的另一重要發(fā)現(xiàn)是,所分析的供應(yīng)鏈攻擊中,超過半數(shù)供應(yīng)商要么不知道攻擊已經(jīng)發(fā)生,要么隱瞞了攻擊已發(fā)生的事實(shí)。但是,89%的受訪客戶組織確實(shí)知道其基礎(chǔ)設(shè)施遭到的攻擊是怎么發(fā)生的。這表明供應(yīng)商與其企業(yè)客戶之間在安全事件報(bào)告的成熟度方面存在差距。

07

軟件供應(yīng)鏈安全防護(hù)的四個(gè)最佳實(shí)踐

下列最佳實(shí)踐可幫助組織應(yīng)對(duì)下一場供應(yīng)鏈攻擊。

1快速響應(yīng)漏洞

快速識(shí)別并修復(fù)第三方組件中的漏洞應(yīng)成為防止供應(yīng)鏈攻擊的首要策略。雖然有些供應(yīng)鏈攻擊利用的是未知(零日)漏洞,但很多此類攻擊利用已知漏洞。組織應(yīng)當(dāng)生成軟件物料清單(SBOM)盤點(diǎn)其第三方軟件,識(shí)別存在已知漏洞的組件,并盡快應(yīng)用相關(guān)更新和補(bǔ)丁。

2維持供應(yīng)鏈深度可見

如果找不出來,那就算知道自己有啥東西也沒用。組織需要了解自家軟件產(chǎn)品組合在哪些地方用了組件,這些組件都是怎么接入系統(tǒng)和源代碼的。如果發(fā)現(xiàn)漏洞,開發(fā)人員需要知道多個(gè)軟件項(xiàng)目中用到該脆弱組件的確切位置,這樣才能有效修復(fù)或清除漏洞。

3標(biāo)記潛在脆弱組件

由于急著趕在截止日期前完成項(xiàng)目,開發(fā)人員會(huì)不斷找來可能含有漏洞的新軟件組件。組織最好左移供應(yīng)鏈安全,確保開發(fā)人員擁有所需的知識(shí)、支持和工具,避免在軟件開發(fā)生命周期早期選擇了脆弱或不安全的組件。

一旦發(fā)現(xiàn)潛在脆弱組件,應(yīng)當(dāng)標(biāo)記該組件,從而確保所有開發(fā)團(tuán)隊(duì)都注意到。只要使用正確的工具,就可以設(shè)置被標(biāo)記的組件或那些失敗的漏洞掃描,使之“中斷構(gòu)建過程”,自動(dòng)阻止這些組件被部署到產(chǎn)品中——持續(xù)集成/持續(xù)交付管道必備。

4持續(xù)監(jiān)測(cè)組件

現(xiàn)在安全的組件未來不一定仍然安全。新漏洞層出不窮,組件會(huì)迎來生命周期終止之時(shí),開源貢獻(xiàn)者也可能會(huì)拋棄項(xiàng)目,終結(jié)支持。以上任何一種情況下,你都必須能夠檢測(cè)組件風(fēng)險(xiǎn)狀況的變化,確定風(fēng)險(xiǎn)嚴(yán)重性的輕重緩急,并在必要時(shí)移除特定組件。

此外,還有一個(gè)重要因素需考慮:別忘了審查供應(yīng)商

在第三方軟件的問題上,跟產(chǎn)品經(jīng)理聊聊的機(jī)會(huì)可不常有,但如果要為公司進(jìn)行大筆采購,那就絕對(duì)應(yīng)該問問供應(yīng)商的安全實(shí)踐是怎樣的了。他們是如何維持產(chǎn)品安全且不遭篡改的?使用了哪些工具?怎么保持對(duì)自身供應(yīng)鏈的可見性?

THEEND

最新評(píng)論(評(píng)論僅代表用戶觀點(diǎn))

更多
暫無評(píng)論