在過去的幾年里,應(yīng)用平臺(tái)和第三方庫中發(fā)現(xiàn)的漏洞引起了越來越多的關(guān)注,這給DevOps團(tuán)隊(duì)帶來了壓力,他們需要檢測(cè)和解決軟件開發(fā)生命周期(SDLC)中的漏洞。
以NVD(國(guó)家漏洞數(shù)據(jù)庫)為例,它跟蹤和記錄軟件供應(yīng)商發(fā)布和披露的所有重大漏洞。NVD發(fā)現(xiàn)在過去五年中發(fā)現(xiàn)的漏洞數(shù)量呈增長(zhǎng)趨勢(shì),僅在2021年就記錄了驚人的 20,136 個(gè)漏洞(與上一年相比增加了9.7%)。
同時(shí),CISA(網(wǎng)絡(luò)安全與基礎(chǔ)設(shè)施安全局)表示,在所有記錄的漏洞中,威脅行為者目前正在利用504。
那么,所有這些對(duì)開發(fā)人員意味著什么呢?
我們?nèi)绾芜M(jìn)一步提高SDLC的安全性呢?讓我們從基礎(chǔ)開始:
什么是SDLC?
開發(fā)團(tuán)隊(duì)采用一種SDLC形式來構(gòu)建他們的流程并獲得高質(zhì)量的結(jié)果。從這個(gè)意義上說,SDLC只不過是一個(gè)定義構(gòu)建應(yīng)用程序過程的框架。它跨越了應(yīng)用程序的整個(gè)生命周期。
自傳統(tǒng)瀑布模型以來,出現(xiàn)了不同的SDLC模型,其中更健壯的CI/CD和敏捷模型在當(dāng)今流行度最高。但他們的目標(biāo)往往是相似的:盡可能快地生產(chǎn)出高質(zhì)量、低成本的軟件。
安全 SDLC (SSDLC) 如何工作?
安全軟件開發(fā)生命周期 (SSDLC) 將安全組件引入生命周期,從而為開發(fā)人員提供了一個(gè)框架,以確保在軟件開發(fā)的每個(gè)階段都要考慮安全性,而不是事后再考慮。這種方法防止了稍后在生產(chǎn)環(huán)境中出現(xiàn)漏洞,從而減少了修復(fù)這些漏洞的成本。
安全軟件開發(fā)生命周期的例子定義了在每個(gè)開發(fā)階段幫助確保軟件安全的最低安全控制。每個(gè)階段都需要專門的 安全測(cè)試工具和方法,如(SAST、SCA、IAST和DAST等),并將繼續(xù)運(yùn)行每個(gè)軟件版本的所有階段。
提高 SDLC 安全性的實(shí)踐
安全的SDLC實(shí)踐旨在解決共享的安全問題,包括:
對(duì)反復(fù)出現(xiàn)的漏洞進(jìn)行補(bǔ)救,一旦軟件部署,就需要付出高昂的代價(jià)來補(bǔ)救
設(shè)計(jì)架構(gòu)中的安全問題
解決集成到更大系統(tǒng)中的組件內(nèi)的安全問題
一些提高SDLC安全性的實(shí)踐:
1、轉(zhuǎn)變心態(tài)
左移思維的目的是將傳統(tǒng)上在生命周期后期完成的安全實(shí)踐(如測(cè)試組件)引入開發(fā)的早期階段。換句話說,我們已經(jīng)從DevOps發(fā)展到DevOpsSec,再發(fā)展到DevSecOps——所有這些都是通過把“Sec”向左移動(dòng)實(shí)現(xiàn)的。
2、根據(jù)常識(shí)進(jìn)行威脅建模
威脅建模是在SDLC的最早階段研究系統(tǒng)設(shè)計(jì)、它們?nèi)绾芜\(yùn)行以及數(shù)據(jù)如何在所有系統(tǒng)組件內(nèi)部和之間流動(dòng)的過程,旨在識(shí)別所有可能的利用途徑。進(jìn)行威脅建?纱_保架構(gòu)設(shè)計(jì)和開發(fā)能夠解決所有已識(shí)別的安全漏洞。
但是威脅建模通常需要相當(dāng)長(zhǎng)的時(shí)間才能完成,因?yàn)樗枰斯泶_定所有可能的攻擊途徑。反過來,當(dāng) SDLC 的幾乎每個(gè)組件都是自動(dòng)化的并且期望每個(gè)階段都能快速完成時(shí),威脅建模可能會(huì)成為開發(fā)過程的瓶頸,新版本每?jī)傻剿闹芫蜁?huì)發(fā)布一次。因此,建議利用常識(shí)進(jìn)行威脅建模。
3、利用開源、開發(fā)人員優(yōu)先的工具
利用開源工具是降低成本同時(shí)確保安全性的一個(gè)簡(jiǎn)單方法。但開源工具也會(huì)有些局限性,因此考慮可以根據(jù)企業(yè)情況進(jìn)行定制化的工具更利于提高開發(fā)人員效率。
4、盡早檢查第三方組件中的漏洞
第三方組件是開發(fā)人員在無需自己開發(fā)整個(gè)功能的情況下將附加功能引入其應(yīng)用程序的快速簡(jiǎn)便的選擇。盡管這些組件可能很便宜,但它們確實(shí)是有代價(jià)的:可能會(huì)間接地將漏洞引入應(yīng)用程序。
因此,最好在安全開發(fā)評(píng)估中盡早檢查這些組件是否存在漏洞,換句話說:掃描一切!掃描代碼、配置、二進(jìn)制文件或代碼庫中的任何其他材料,以發(fā)現(xiàn)明顯可見和隱藏的問題。
5、掃描所有軟件層的錯(cuò)誤配置
當(dāng)今市場(chǎng)上可用的大多數(shù)安全錯(cuò)誤配置檢測(cè)工具往往側(cè)重于掃描軟件基礎(chǔ)設(shè)施中的錯(cuò)誤配置,但不涵蓋數(shù)據(jù)層和應(yīng)用程序框架層中存在的錯(cuò)誤配置。然而這一部分并不可忽略。
SDLC的安全性將取決于DevOps團(tuán)隊(duì)、出發(fā)點(diǎn)、技能和工具。