軟件供應(yīng)鏈安全如此重要,但為什么難以解決?

軟件供應(yīng)鏈安全如今已經(jīng)成了一個(gè)世界性難題。從2021年底Apache Log4j“核彈級(jí)”風(fēng)險(xiǎn)爆發(fā),時(shí)至今日影響仍然存在,保障軟件供應(yīng)鏈安全已成為業(yè)界關(guān)注焦點(diǎn)。

本文來(lái)自微信公眾號(hào)“科技云報(bào)到”。

軟件供應(yīng)鏈安全如今已經(jīng)成了一個(gè)世界性難題。從2021年底Apache Log4j“核彈級(jí)”風(fēng)險(xiǎn)爆發(fā),時(shí)至今日影響仍然存在,保障軟件供應(yīng)鏈安全已成為業(yè)界關(guān)注焦點(diǎn)。

但近2年時(shí)間過(guò)去了,軟件供應(yīng)鏈安全問題似乎并沒有得以緩解,安全事件層出不窮,開源漏洞風(fēng)險(xiǎn)與日俱增。

Venafi對(duì)來(lái)自全球不同企業(yè)的1000位CIO調(diào)研顯示,其中82%的人表示他們的組織容易受到針對(duì)軟件供應(yīng)鏈的網(wǎng)絡(luò)攻擊。

奇安信《2023中國(guó)軟件供應(yīng)鏈安全分析報(bào)告》顯示,開源項(xiàng)目維護(hù)者對(duì)安全問題的重視度和修復(fù)積極性較低。

同時(shí),不活躍(超過(guò)一年未更新發(fā)布過(guò)版本)的開源軟件,一旦出現(xiàn)安全漏洞,難以得到及時(shí)修復(fù)。

為什么人人都知道軟件供應(yīng)鏈安全問題很重要,卻難以解決?

1.png

軟件供應(yīng)鏈安全

與開源息息相關(guān)

要搞清楚軟件供應(yīng)鏈安全的癥結(jié),先得厘清其涵義。

基于中國(guó)信通院的定義,軟件供應(yīng)鏈安全是指“軟件供應(yīng)鏈上軟件設(shè)計(jì)與開發(fā)的各個(gè)階段中來(lái)自本身的編碼過(guò)程、工具、設(shè)備或供應(yīng)鏈上游的代碼、模塊和服務(wù)的安全,以及軟件交付渠道及使用過(guò)程安全的總和。”

這里是把軟件供應(yīng)鏈安全分為了兩部分:一是軟件自身的供應(yīng)鏈安全,二是軟件供應(yīng)鏈交界面的安全管理。

軟件自身的供應(yīng)鏈,可以簡(jiǎn)單理解為應(yīng)用的代碼來(lái)源,應(yīng)用的代碼來(lái)源主要有兩個(gè)部分:一個(gè)是產(chǎn)品研發(fā)自己寫的代碼,另一個(gè)就是引入的第三方的開源組件代碼。針對(duì)這兩者的安全檢測(cè)也是我們常說(shuō)的開發(fā)安全。

軟件供應(yīng)鏈交接界面,針對(duì)的是開源軟件或者商業(yè)采購(gòu)第三方軟件。

這部分的供應(yīng)鏈安全管理,主要是在交付和使用過(guò)程中進(jìn)行相關(guān)的準(zhǔn)入檢測(cè),并形成標(biāo)準(zhǔn)化可溯源的軟件物料清單。

事實(shí)上,軟件供應(yīng)鏈的安全的重要性提升和開源的大趨勢(shì)是息息相關(guān)的。

軟件開源化的趨勢(shì)是一個(gè)累積的過(guò)程,十幾年的時(shí)間經(jīng)歷了一個(gè)量變到質(zhì)變的階段,現(xiàn)在全球的開發(fā)者都在依賴開源組件來(lái)做應(yīng)用的研發(fā),絕大多數(shù)現(xiàn)代代碼庫(kù)都包含開源組件。

但是開源的繁榮本身就建立在一系列自由許可協(xié)議和免責(zé)條款上——其中也包括風(fēng)險(xiǎn)免責(zé),“使用者風(fēng)險(xiǎn)自負(fù)”是開源社區(qū)的共識(shí)。

近年來(lái),開源軟件自身的安全狀況持續(xù)下滑,企業(yè)軟件開發(fā)中因使用開源軟件而引入安全風(fēng)險(xiǎn)的狀況更加糟糕,例如:危險(xiǎn)開源組件的使用、自研代碼缺陷漏洞引入、容器鏡像漏洞引入等,這些風(fēng)險(xiǎn)導(dǎo)致軟件系統(tǒng)的整體安全防護(hù)難度越來(lái)越大。

因此,開源軟件供應(yīng)鏈安全風(fēng)險(xiǎn)治理任重道遠(yuǎn)。

直面軟件供應(yīng)鏈

安全治理挑戰(zhàn)

盡管業(yè)界已經(jīng)普遍認(rèn)識(shí)到軟件供應(yīng)鏈安全的重要性,但治理起來(lái)依然面臨重重挑戰(zhàn)。

騰訊安全開發(fā)安全專家劉天勇表示,從技術(shù)角度看,軟件供應(yīng)鏈安全的治理的難點(diǎn)可以分成三部分:

一是檢測(cè)門檻高。

開源組件的來(lái)源復(fù)雜,依靠單一的技術(shù)手段難以做到全面覆蓋。

市面上常見的開源組件檢測(cè)技術(shù)是基于源代碼的SCA分析,但基于源碼的SCA難以覆蓋軟件供應(yīng)鏈交接界面的第三方軟件成品。

二是修復(fù)成本高。

在企業(yè)開始做開源組件的風(fēng)險(xiǎn)治理的時(shí)候,存量業(yè)務(wù)往往會(huì)發(fā)現(xiàn)大量的漏洞,但這些業(yè)務(wù)大多數(shù)處于上線運(yùn)營(yíng)的階段,修復(fù)的過(guò)程對(duì)研發(fā)資源是一個(gè)較大的消耗,同時(shí)對(duì)安全團(tuán)隊(duì)來(lái)說(shuō)也是較大的推動(dòng)阻力。

三是攻擊影響范圍廣。

第三方開源組件的使用,間接擴(kuò)大了軟件的受攻擊面,針對(duì)上游供應(yīng)鏈環(huán)節(jié)的漏洞挖掘和惡意利用,能夠快速覆蓋大量的下游軟件,同時(shí)相關(guān)的攻擊具有較高的隱蔽性,常用的安全檢測(cè)手段難以進(jìn)行全面的防御,目前軟件供應(yīng)鏈攻擊已經(jīng)成為攻防演練中非常常用的攻擊手段。

此外,供應(yīng)商對(duì)產(chǎn)品安全性的重視程度不足、開發(fā)人員安全開發(fā)能力有限等,導(dǎo)致第三方供應(yīng)商產(chǎn)品安全質(zhì)量參差不齊,也加大了軟件供應(yīng)鏈安全治理的難度。

那么,企業(yè)該如何應(yīng)對(duì)這些挑戰(zhàn)?在技術(shù)上是否有對(duì)應(yīng)的解決手段?

SCA和SBOM

當(dāng)前,SCA(Software Composition Analysis)是目前業(yè)界主要的解決開源組件風(fēng)險(xiǎn)檢測(cè)的手段。

SCA是一類工具的統(tǒng)稱,可以通過(guò)分析源代碼識(shí)別其中引用的開源組件信息(名稱、版本、校驗(yàn)值)、組件漏洞、開源協(xié)議等信息,從而幫助開發(fā)人員和安全人員快速對(duì)于企業(yè)代碼中的開源風(fēng)險(xiǎn)進(jìn)行識(shí)別。

隨著供應(yīng)鏈安全開始獲得更多關(guān)注,SCA工具內(nèi)置了對(duì)與跟蹤組件相關(guān)的漏洞和安全風(fēng)險(xiǎn)的更深入分析和管理,并成為企業(yè)生成SBOM和管理其開源使用的主要方法之一。

Linux基金會(huì)最近的一項(xiàng)調(diào)查發(fā)現(xiàn),SBOM的意識(shí)度很高,目前有47%的IT供應(yīng)商、服務(wù)提供商和受監(jiān)管的行業(yè)在使用SBOM,88%的受訪者預(yù)計(jì)將在2023年使用SBOM。

代碼掃描和滲透測(cè)試

保護(hù)軟件供應(yīng)鏈的核心是一個(gè)應(yīng)用程序安全問題,因此傳統(tǒng)的應(yīng)用程序安全代碼掃描工具將在這個(gè)解決方案堆棧中發(fā)揮重要作用。

靜態(tài)應(yīng)用程序安全測(cè)試(SAST)、動(dòng)態(tài)應(yīng)用程序安全測(cè)試(DAST)、交互式應(yīng)用程序安全測(cè)試(IAST)和運(yùn)行時(shí)應(yīng)用程序掃描保護(hù)(RASP)工具,以及明智地使用滲透測(cè)試,可以幫助企業(yè)測(cè)試他們自己的內(nèi)部代碼,并提供對(duì)第三方代碼的進(jìn)一步檢查,以作為應(yīng)對(duì)風(fēng)險(xiǎn)的后盾。

相比于SCA和SBOM產(chǎn)品依賴于已知的、先前發(fā)現(xiàn)的漏洞,徹底的應(yīng)用程序滲透評(píng)估可能會(huì)在檢查第三方庫(kù)和框架時(shí)識(shí)別出脆弱的代碼使用情況,而這些代碼以前可能在其他地方?jīng)]有報(bào)告過(guò)。

此外,共享機(jī)密掃描和管理也正在從一個(gè)獨(dú)立的工具類別快速轉(zhuǎn)變?yōu)橐粋€(gè)功能,該功能正在融入軟件供應(yīng)鏈安全工具的各個(gè)方面。

這是因?yàn)樵陂_發(fā)和實(shí)際環(huán)境中,針對(duì)嵌入在源代碼、配置文件和基礎(chǔ)設(shè)施代碼中的機(jī)密數(shù)據(jù)的網(wǎng)絡(luò)攻擊活動(dòng)仍然猖獗,因此迫切需要解決這個(gè)問題。

此外,依賴關(guān)系管理和分析、受信任的存儲(chǔ)庫(kù)和注冊(cè)中心、安全代碼簽名、CI/CD管道安全性、第三方風(fēng)險(xiǎn)管理平臺(tái)、IaC安全和CNAPP,都是軟件供應(yīng)鏈安全治理要重點(diǎn)關(guān)注的對(duì)象。

正如Gartner公司的高級(jí)主管兼應(yīng)用安全分析師Dale Gardner所說(shuō):“當(dāng)人們關(guān)注供應(yīng)鏈安全時(shí),他們關(guān)注的是使用SCA、SBOM等工具,這些都是解決方案中非常重要的部分,但它們實(shí)際上只是一種不全面的解決方案。”

軟件供應(yīng)鏈安全治理

并非純粹的技術(shù)問題

事實(shí)上,軟件供應(yīng)鏈安全問題是人、流程和知識(shí)的問題,而非純粹的技術(shù)問題。

在解決軟件研發(fā)過(guò)程的供應(yīng)鏈安全問題時(shí),需要貼合SDLC(軟件開發(fā)生命周期)考慮供應(yīng)鏈安全風(fēng)險(xiǎn)。

為此,Goolge提出了SLSA(Supply-chain Levels for Software Artifacts)框架,微軟提出了SCIM(Supply Chain Integrity Model)框架以及CNCF(云原生計(jì)算基金會(huì))的軟件供應(yīng)鏈最佳實(shí)踐,三種框架都強(qiáng)調(diào)對(duì)于源代碼、第三方依賴、構(gòu)建系統(tǒng)、制品、發(fā)布、部署的安全性。

以SLSA框架為例,SLSA是一個(gè)標(biāo)準(zhǔn)清單和控制框架,用于緩解軟件項(xiàng)目中的代碼和軟件包的供應(yīng)鏈風(fēng)險(xiǎn)。

SLSA框架從三個(gè)方面評(píng)估軟件供應(yīng)鏈的安全等級(jí),分別是源碼、構(gòu)建和依賴,并可劃分為4個(gè)級(jí)別:

Level 1:構(gòu)建過(guò)程是完全腳本化或自動(dòng)化,且能夠基于結(jié)果識(shí)別來(lái)源源碼;

Level 2:使用有身份認(rèn)證能力的版本控制和托管服務(wù),確保構(gòu)建來(lái)源是可信的;

Level 3:源碼和構(gòu)建平臺(tái)符合可審計(jì)標(biāo)準(zhǔn),且有成品完整性保證;

Level 4:所有變更均有雙人評(píng)審,且有封閉的、可重復(fù)的構(gòu)建過(guò)程。

以Level 4等級(jí)要求為例,在軟件構(gòu)建過(guò)程中企業(yè)需要實(shí)踐以下4點(diǎn):可驗(yàn)證的版本控制、雙人評(píng)審、安全的自動(dòng)化構(gòu)建流程/環(huán)境、可重復(fù)構(gòu)建的流程。

結(jié)語(yǔ)

軟件供應(yīng)鏈上每一個(gè)環(huán)節(jié)的安全問題,都有可能成為黑客攻擊的切入口。千里之堤毀于蟻穴,把住軟件供應(yīng)鏈每個(gè)關(guān)卡,莫讓小小漏洞成為洪水猛獸。

THEEND

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

更多
暫無(wú)評(píng)論