DevSecOps之應(yīng)用安全測(cè)試工具及選型

快速了解DevSecOps:構(gòu)建安全軟件開(kāi)發(fā)的基石!

上篇文章,有同學(xué)私信想了解有哪些DevSecOps工具,這里整理出來(lái),供大家參考(PS: 非專(zhuān)業(yè)安全人士,僅從DevOps建設(shè)角度,給出自己見(jiàn)解)

軟件中的漏洞和弱點(diǎn)很常見(jiàn):84%的軟件漏洞都是利用應(yīng)用層的漏洞。軟件相關(guān)問(wèn)題的普遍性是使用應(yīng)用安全測(cè)試(AST)工具的主要?jiǎng)訖C(jī)。通過(guò)使用AST工具,企業(yè)可以在軟件開(kāi)發(fā)生命周期中快速地檢測(cè)潛在的安全問(wèn)題,提高應(yīng)用程序的可靠性和安全性,降低安全風(fēng)險(xiǎn)。


「隨著越來(lái)越多的應(yīng)用安全測(cè)試工具的出現(xiàn),信息技術(shù)(IT)領(lǐng)導(dǎo)、開(kāi)發(fā)人員和工程師可能會(huì)感到困惑——不知道哪些工具可以解決哪些問(wèn)題?!?/strong>

如上圖所示,從下往上,成熟度和實(shí)現(xiàn)難度依次增大。

靜態(tài)應(yīng)用程序安全測(cè)試

Static Application Security Testing (SAST),僅通過(guò)分析或者檢查應(yīng)用軟件源代碼或字節(jié)碼以發(fā)現(xiàn)應(yīng)用程序的安全性漏洞,側(cè)重檢查代碼安全,如C/C++緩沖區(qū)溢出、身份認(rèn)證與授權(quán)等, 避免產(chǎn)生可利用的弱點(diǎn)。

「SAST 工具主要用于 SDLC 的編碼、構(gòu)建和開(kāi)發(fā)階段?!?/strong>

動(dòng)態(tài)應(yīng)用程序安全測(cè)試

Dynamic Application Security Testing (DAST),通過(guò)運(yùn)行程序來(lái)檢查應(yīng)用軟件的安全性問(wèn)題,側(cè)重從系統(tǒng)外部接口來(lái)進(jìn)行針對(duì)性的測(cè)試,暴露應(yīng)用程序接口的安全性漏洞。

DAST 是一種自動(dòng)黑盒測(cè)試技術(shù),「測(cè)試這主要從外部進(jìn)行測(cè)試, ?它模仿黑客與您的 Web 應(yīng)用或 API 交互的方式」。它通過(guò)網(wǎng)絡(luò)連接和檢查應(yīng)用的客戶(hù)端渲染來(lái)測(cè)試應(yīng)用,就像滲透測(cè)試工具一樣。DAST 工具不需要訪問(wèn)您的源代碼或自定義來(lái)掃描堆棧。它們與您的網(wǎng)站交互,從而以較低的誤報(bào)率發(fā)現(xiàn)漏洞。

交互式應(yīng)用程序安全性測(cè)試

Interactive Application Security Testing (IAST),整合了SAST和DAST這兩種方法,可以發(fā)揮各自的優(yōu)勢(shì)、降低誤報(bào)率,發(fā)現(xiàn)更多安全漏洞,從而提高安全性測(cè)試效率。

交互式應(yīng)用安全測(cè)試就是通過(guò)「把安全工具的代理嵌入到應(yīng)用程序里面」,從而在測(cè)試應(yīng)用程序的時(shí)候,這個(gè)安全代碼能夠監(jiān)控到應(yīng)用系統(tǒng)的網(wǎng)絡(luò)內(nèi)容,堆棧等信息,從而嗅探出系統(tǒng)在動(dòng)態(tài)行為下的安全漏洞, 「內(nèi)容具體到發(fā)生漏洞的代碼行」

軟件構(gòu)成分析

Software Composition Analysis (SCA),專(zhuān)門(mén)用于分析開(kāi)發(fā)人員使用的各種源碼、模塊、框架和庫(kù),以識(shí)別和清點(diǎn)應(yīng)用系統(tǒng)(OSS)的組件及其構(gòu)成和依賴(lài)關(guān)系,并識(shí)別已知的安全漏洞或者潛在的許可證授權(quán)問(wèn)題,把這些風(fēng)險(xiǎn)排查在應(yīng)用系統(tǒng)投產(chǎn)之前,以加快確定優(yōu)先級(jí)和開(kāi)展補(bǔ)救工作。

此外,「它們還可無(wú)縫集成到 CI/CD 流程中」,從構(gòu)建集成直至生產(chǎn)前的發(fā)布,持續(xù)檢測(cè)新的開(kāi)源漏洞。「大白話,找出軟件里面的“科技與狠活”」

應(yīng)用程序安全測(cè)試編排

Application Security Testing Orchestration (ASTO),隨著數(shù)據(jù)中心規(guī)模的不斷增大,網(wǎng)絡(luò)以及安全服務(wù)數(shù)量也隨之不斷的增長(zhǎng),安全運(yùn)維更是難上加難。面對(duì)越來(lái)越復(fù)雜的網(wǎng)絡(luò)和安全場(chǎng)景,安全編排(Orchestration)工具應(yīng)運(yùn)而生,能夠安全自動(dòng)化和服務(wù)編排,如可以連接諸如Splunk、QRadar等安全數(shù)據(jù)分析工具,利用其提供的大量安全事件數(shù)據(jù),通過(guò)自動(dòng)化的腳本,采取一系列的方法進(jìn)行安全事件的響應(yīng)。

應(yīng)用程序漏洞關(guān)聯(lián)

ASTO 將軟件開(kāi)發(fā)生命周期內(nèi)的安全工具進(jìn)行整合,尤其在 DevSecOps中發(fā)揮舉足輕重的作用,而「AVC(Application Vulnerability Correlation,應(yīng)用程序漏洞關(guān)聯(lián))」工具是指工作流與流程管理工具,讓軟件開(kāi)發(fā)應(yīng)用漏洞測(cè)試和修復(fù)實(shí)現(xiàn)流線化。
這些工具將各種安全測(cè)試數(shù)據(jù)源(SAST、DAST、IAST、SCA 、滲透測(cè)試與代碼審核)融入到一個(gè)中央化的工具中,AVC 工具能夠?qū)踩毕菪纬?strong>「中心化數(shù)據(jù)」
,進(jìn)行分析,對(duì)補(bǔ)救方案進(jìn)行優(yōu)先級(jí)排序,實(shí)現(xiàn)應(yīng)用安全活動(dòng)的協(xié)作。

「上面5、6點(diǎn),屬于比較綜合的方案,大白話,從“安全”的視角,去看看研發(fā)活動(dòng)的產(chǎn)出 (代碼,制品,環(huán)境等等資產(chǎn))有沒(méi)有安全漏洞風(fēng)險(xiǎn),并且歸類(lèi)融合去重統(tǒng)一,實(shí)現(xiàn)思路上,有點(diǎn)像DevOps流水線,劍走偏鋒。」目前,國(guó)外類(lèi)似的解決方案有一些,國(guó)內(nèi)很少,我也在持續(xù)跟蹤研究中。

安全測(cè)試工具適用階段

如下圖所示

  • 「SAST適用于應(yīng)用程序開(kāi)發(fā)早期或集成/構(gòu)建階段,提供代碼級(jí)別的反饋;」
  • 「IAST可以在應(yīng)用程序的運(yùn)行時(shí)進(jìn)行安全測(cè)試,并提高漏洞的發(fā)現(xiàn)率;」
  • 「DAST適用于應(yīng)用程序發(fā)布前進(jìn)行黑盒測(cè)試;」
  • 「SCA可以檢測(cè)應(yīng)用程序依賴(lài)的第三方軟件組件中的漏洞?!?/strong>

綜合使用這些工具,可以在應(yīng)用程序的開(kāi)發(fā)、測(cè)試和部署階段及時(shí)發(fā)現(xiàn)和糾正潛在的安全漏洞。

如何選擇適合自己企業(yè)的安全工具

如下圖所示,根據(jù)研發(fā)活動(dòng)的過(guò)程,我對(duì)相關(guān)的安全工作做了領(lǐng)域和業(yè)務(wù)的劃分,部分工具可能會(huì)貫穿多個(gè)階段。

選型原則

  1. 你需要解決什么問(wèn)題?哪些階段是你關(guān)注的?
  2. 工具的成本,是否有資金支持采購(gòu)商業(yè)軟件?雖然開(kāi)源的安全工具很多,不過(guò)“安全”是個(gè)嚴(yán)肅且專(zhuān)業(yè)的領(lǐng)域,商業(yè)軟件還是有很多“硬核”實(shí)力
  3. 發(fā)現(xiàn)安全問(wèn)題了,你是否能解決修復(fù)?這決定了,你是否會(huì)使用這些工具,更重要的是背后的運(yùn)營(yíng)流程,否則工具只是工具
  4. 你所在的行業(yè)的要求是什么?政府和機(jī)構(gòu)的要求是什么?
  5. 選擇的安全工具是否能融入DevOps流水線?是否周邊生態(tài)插件豐富?是否支持二次開(kāi)發(fā)?
  6. 是否有專(zhuān)業(yè)的安全人士,能夠使用選中的工具,并駕馭?

個(gè)人看法

  • 從實(shí)踐難易程度和成本最低來(lái)看, “ 編碼階段“ 應(yīng)該是成本最低,工具最多(比如sonarqube 估計(jì)是下面圖中,你最熟悉的,爛大街的),離開(kāi)發(fā)人員最近的階段。
  • 從”安全“左移的角度,在”編碼階段“進(jìn)行實(shí)施安全活動(dòng),從DevOps角度,浪費(fèi)也是相對(duì)較少的。唯一不足,就是代碼階段的掃描,誤報(bào)率稍微高,見(jiàn)仁見(jiàn)智。
  • ”容器安全“,也是一個(gè)值得關(guān)注的,由于云原生普及,周邊生態(tài)豐富,可以選擇的余地會(huì)多些,對(duì)于”中小企業(yè)“來(lái)說(shuō),成本最低。
  • 如果你的組織不差錢(qián),直接商業(yè)工具,這個(gè)不用質(zhì)疑,你的甲方爸爸也不會(huì)差錢(qián),他要的是放心。

「最后,安全工具僅僅是個(gè)開(kāi)始,如何把工具融于流程,并且落地得到切實(shí)的執(zhí)行才是難點(diǎn)?!卑踩笆莻€(gè)即”嚴(yán)肅“,又”專(zhuān)業(yè)“,同時(shí)又容易”被忽略“的活動(dòng),任重而道遠(yuǎn)。」

PS: 下面圖目前是V1.0版本,后續(xù)會(huì)持續(xù)更新 (圖中標(biāo)記的工具,可以做些嘗試,開(kāi)源的;不差錢(qián)的,請(qǐng)直接商業(yè)工具,專(zhuān)業(yè)的人做專(zhuān)業(yè)的事情)

參考:

  • https://www.synopsys.com/zh-cn/glossary/what-is-devsecops.html
  • https://www.nist.gov/itl/ssd/software-quality-group/source-code-security-analyzers
  • https://sdtimes.com/security/a-guide-to-devsecops-tools/
  • 10 Types of Application Security Testing Tools: When and How to Use Them
  • https://www.synopsys.com/zh-cn/software-integrity/security-testing/static-analysis-sast.html
  • https://www.synopsys.com/software-integrity/security-testing/web-scanner.html
  • https://www.synopsys.com/zh-cn/software-integrity/security-testing/interactive-application-security-testing.html
  • https://www.synopsys.com/zh-cn/glossary/what-is-application-vulnerability-correlation.html

本文使用 文章同步助手 同步

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容