譯者 | 劉濤
審校 | 重樓
在當(dāng)今快速發(fā)展的網(wǎng)絡(luò)環(huán)境中,維護(hù)Web應(yīng)用程序的安全更加必要。由于漏洞的出現(xiàn)速度比以往任何時(shí)候都要快,將動(dòng)態(tài)應(yīng)用程序安全測(cè)試(DAST)集成到持續(xù)集成/持續(xù)部署(CI/CD)管道中成為改變游戲規(guī)則的因素,幫助您在早期階段即考慮安全因素,盡早發(fā)現(xiàn)和解決安全漏洞,而不是等到它們嚴(yán)重影響用戶后再采取措施。
本文解釋了將 DAST集成到 CI/CD管道中的重要性和好處,探索了這種方法如何能夠顯著提升應(yīng)用程序的安全性、降低成本并加快上市時(shí)間。
我們還將指導(dǎo)您選擇正確的 DAST工具和策略的過程,以嵌入到您的管道中,并提供一個(gè)集成到 Jenkins的實(shí)用教程。
1、什么是 DAST?
動(dòng)態(tài)應(yīng)用程序安全測(cè)試(DAST)是一種安全測(cè)試方法,它在運(yùn)行時(shí)分析應(yīng)用程序以識(shí)別潛在的漏洞和安全風(fēng)險(xiǎn)。這與靜態(tài)應(yīng)用程序安全測(cè)試(SAST)不同,后者僅僅檢查應(yīng)用程序的源代碼而不去執(zhí)行它。
DAST的主要目標(biāo)是從攻擊者的角度模擬對(duì) Web應(yīng)用程序和 API的攻擊。這種方法幫助 DAST發(fā)現(xiàn)諸如 SQL注入、 XSS和不安全的文件上傳等漏洞(要了解更多有關(guān)這些漏洞的信息,請(qǐng)參閱相關(guān)的 OWASP備忘錄)。在開發(fā)過程的早期識(shí)別這些威脅,可以使組織在它們發(fā)展成為嚴(yán)重的問題之前修復(fù)它們。
2、DAST集成到CI/CD管道中的優(yōu)勢(shì)
將 DAST集成到您的 CI/CD管道中有很多好處,如提高安全性、節(jié)約成本、加快市場(chǎng)推廣速度等。
增強(qiáng)的安全態(tài)勢(shì)
DAST工具旨在通過模擬真實(shí)世界的攻擊來識(shí)別 Web應(yīng)用程序中的漏洞。通過將這些工具集成到您的 CI/CD管道中,您可以確保每個(gè)組件在投入生產(chǎn)之前能夠自動(dòng)測(cè)試潛在的安全性問題。這種積極主動(dòng)的方法有助于及早發(fā)現(xiàn)潛在的漏洞,允許在對(duì)應(yīng)用程序或組織構(gòu)成威脅之前解決這些漏洞。
提前投放市場(chǎng)
與手工測(cè)試和部署之后在進(jìn)行測(cè)試相比,在開發(fā)過程中使用 DAST可以使開發(fā)人員更快地找到和修復(fù)安全漏洞。通過將自動(dòng)掃描作為 CI/CD過程的一部分,開發(fā)人員可以立即獲取其代碼更改對(duì)應(yīng)用程序安全性影響的反饋。這樣,他們就可以快速地解決任何被識(shí)別出的問題,而不會(huì)推遲發(fā)布計(jì)劃,也不會(huì)降低質(zhì)量。
影響市場(chǎng)發(fā)布的 DAST其他方面包括:
提高協(xié)作能力:自動(dòng) DAST掃描提供有關(guān)檢測(cè)到的漏洞及修復(fù)建議的詳細(xì)報(bào)告。這些見解可以促進(jìn)開發(fā)團(tuán)隊(duì)和安全專家之間更好地溝通,避免可能造成軟件交付延遲的誤解。
更少的錯(cuò)誤標(biāo)記(false positive):一些高級(jí)的 DAST解決方案使用機(jī)器學(xué)習(xí)算法來最小化掃描的錯(cuò)誤標(biāo)記結(jié)果。這可以確保開發(fā)人員花費(fèi)時(shí)間來解決真正的安全問題,而不是尋找錯(cuò)誤警報(bào)。
更少的成本
將 DAST集成到 CI/CD管道中,可以為您的組織節(jié)省大量成本。通過在開發(fā)過程的早期識(shí)別和修復(fù)漏洞,可以減少代價(jià)高昂的數(shù)據(jù)損毀可能性。此外,自動(dòng)化安全測(cè)試降低了與傳統(tǒng)安全測(cè)試方法相關(guān)的人工成本。
DAST降低成本的其他措施包括:
降低修復(fù)費(fèi)用:在開發(fā)期間修補(bǔ)漏洞的費(fèi)用遠(yuǎn)遠(yuǎn)低于在開發(fā)之后修補(bǔ)的費(fèi)用。通過自動(dòng) DAST掃描,及早發(fā)現(xiàn)問題,可以讓企業(yè)避免花費(fèi)昂貴的后期補(bǔ)丁,并避免可能出現(xiàn)的停機(jī)情況。
減少監(jiān)管罰金:在整個(gè)開發(fā)流程中保證應(yīng)用程序的安全有助于組織遵循諸如 GDPR, HIPAA和PCI-DSS等行業(yè)法規(guī)。違規(guī)可能會(huì)導(dǎo)致巨額罰款和名譽(yù)受損;在 CI/CD管道上集成 DAST可以通過不斷地監(jiān)控潛在的違規(guī)行為來降低這些風(fēng)險(xiǎn)。
3、將 DAST集成到 CI/CD管道的策略
選擇正確的工具
尋找能提供與CI/CD管道整合的工具。選擇一個(gè) DAST工具,它要符合應(yīng)用程序棧、技術(shù)選擇以及開發(fā)方式。確保它既支持在用的Web應(yīng)用程序框架,也支持像容器、API以及微服務(wù)這樣的現(xiàn)代范式。
盡早將 DAST合并到開發(fā)過程中
為了最大限度地利用 DAST集成的好處,可以在開發(fā)過程的早期就開始合并它,例如在代碼審查或開發(fā)新功能的時(shí)候。通過盡早開始,開發(fā)人員可以立即解決安全漏洞,而不是將修復(fù)推遲到測(cè)試的后期。
建立基線掃描
基線掃描是使用一組預(yù)定義的規(guī)則或策略對(duì)應(yīng)用程序的安全性進(jìn)行的初步評(píng)估。使用所選的 DAST工具創(chuàng)建基線掃描,設(shè)置一個(gè)起始點(diǎn),用于測(cè)量隨時(shí)間變化的改進(jìn)效果?;趯?duì)應(yīng)用程序代碼庫(kù)或者基礎(chǔ)設(shè)施配置的變更,定期更新這個(gè)基線掃描。
安排定期掃描
可以安排定期掃描,也可以安排在 CI/CD管道的關(guān)鍵階段掃描。這些掃描中發(fā)現(xiàn)的任何問題都應(yīng)該反饋到開發(fā)和測(cè)試階段,允許開發(fā)人員和測(cè)試人員立即加以解決:
- 每日掃描:將每日掃描安排在非高峰時(shí)間,以避免可能對(duì)終端用戶的體驗(yàn)造成的干擾。
- 每周掃描:每周執(zhí)行更全面的掃描,以發(fā)現(xiàn)在每日掃描期間可能出現(xiàn)的遺漏。
- 按需掃描:應(yīng)用程序發(fā)生重大更改時(shí)觸發(fā)按需掃描,例如部署新功能或更新關(guān)鍵組件。
分析結(jié)果并確定優(yōu)先處理順序
DAST工具通常會(huì)生成大量數(shù)據(jù)。必須根據(jù)這些結(jié)果的嚴(yán)重性、可利用性和潛在影響,對(duì)其進(jìn)行分析和排序。使用風(fēng)險(xiǎn)評(píng)分系統(tǒng),如 CVSS (常見的漏洞評(píng)分系統(tǒng)),根據(jù)其威脅等級(jí)對(duì)已識(shí)別的漏洞進(jìn)行排名。這樣可以幫助團(tuán)隊(duì)集中精力在首先解決優(yōu)先級(jí)高的問題上。
創(chuàng)建反饋循環(huán)
在開發(fā)人員和安全團(tuán)隊(duì)之間建立反饋循環(huán),以持續(xù)改進(jìn)代碼質(zhì)量和安全狀態(tài)。通過顯示 DAST結(jié)果的共享儀表板或?qū)⒕瘓?bào)集成到 Slack或 Microsoft Team等通信平臺(tái)上來鼓勵(lì)協(xié)作。
為了快速修復(fù)已識(shí)別的漏洞,需要確保DAST工具為開發(fā)人員提供操作指南,并為他們提供解決每個(gè)問題的明確步驟。這樣他們自己就能夠有效地解決問題,而不需要額外的安全專家。
4、教程:將 DAST集成到 Jenkins
本教程將指導(dǎo)您完成將動(dòng)態(tài)應(yīng)用程序安全測(cè)試(DAST)集成到 Jenkins(一款開源的CI/CD工具)CI/CD管道中的步驟。這樣您就可以在構(gòu)建和部署階段自動(dòng)掃描應(yīng)用程序的安全漏洞。
步驟1:安裝并配置 DAST工具
首先,選擇一個(gè)適合您需求的 DAST工具。在本教程中,我們將使用OWASP Zed Attack Proxy,一個(gè)開放源碼的 Web應(yīng)用程序掃描器。從官方網(wǎng)站下載并安裝 ZAP。
步驟2:建立Jenkins環(huán)境
如果您還沒有建立 Jenkins環(huán)境,請(qǐng)參考官方的 Jenkins安裝指南。成功設(shè)置 Jenkins后,登錄到您的賬戶,進(jìn)入“Manage Jenkins”下的“Manage Plugins”。在可用插件列表中搜索“OWASP ZAP”并安裝它。
步驟3:在 Jenkins中創(chuàng)建新的管道項(xiàng)目
- 轉(zhuǎn)到 Jenkins實(shí)例的主儀表板。
- 從左側(cè)菜單中選擇“New Item”創(chuàng)建新的管道作業(yè)。
- 給你的新項(xiàng)目起一個(gè)合適的名字(例如'DAST_Pipeline'),并選擇' Pipeline'作為類型,然后單擊' OK'。
- 在新創(chuàng)建的項(xiàng)目頁(yè)的管道配置部分,向下滾動(dòng)以查找“定義”。從 SCM或“Pipeline script”中選擇“Pipeline script”并提供您的管道代碼。此代碼將包括運(yùn)行 ZAP所需的步驟。
步驟4:為 DAST集成配置管道腳本
在這一步中,需要修改Jenkins文件或管道腳本,將 ZAP集成到組件過程中。下面是一個(gè)簡(jiǎn)單的 Jenkins文件示例,其中包括運(yùn)行 ZAP:
將" http://your-web-application-url"替換為指向 Web應(yīng)用程序的鏈接,將"YOUR_ZAP_API_KEY"替換為從 OWASP Zed Attack Proxy (ZAP)獲得的 API密鑰。
步驟5:在Jenkins中運(yùn)行管道項(xiàng)目
配置完所有參數(shù)后,保存更改并單擊“立即構(gòu)建”啟動(dòng)新組件。您應(yīng)該看到兩個(gè)階段運(yùn)行中—一個(gè)用于構(gòu)建應(yīng)用程序,另一個(gè)用于使用 OWASP Zed Attack Proxy (ZAP)運(yùn)行 DAST。
完成后,在左側(cè)菜單的“生成歷史記錄”下轉(zhuǎn)到“控制臺(tái)輸出”。檢查在掃描期間是否檢測(cè)到任何安全漏洞。
5、結(jié)論
將 DAST工具集成到 DevOps流程中,對(duì)于維護(hù)安全和確保在開發(fā)周期的早期階段發(fā)現(xiàn)漏洞至關(guān)重要。通過實(shí)施DAST,您可以在潛在威脅升級(jí)為重大安全問題之前識(shí)別它們,最終節(jié)省時(shí)間和資源。
通過將 DAST工具集成到您的 CI/CD管道中,您可以在開發(fā)過程的早期檢測(cè)漏洞,節(jié)省時(shí)間和資源,并防止以后出現(xiàn)重大問題。它確保應(yīng)用程序在部署到生產(chǎn)環(huán)境之前是安全的。最后,它將幫助您遵守安全法規(guī)和標(biāo)準(zhǔn)。
在實(shí)施DAST工具時(shí),需要考慮幾個(gè)因素。首先,選擇與您的開發(fā)環(huán)境和編程語言兼容的DAST工具。其次,確保該工具可以集成到您的管道中,而不會(huì)造成延遲或中斷。最后,建立清晰的流程來分析和處理DAST識(shí)別出的漏洞,以確保被發(fā)現(xiàn)的問題能夠被組織中的開發(fā)人員和測(cè)試人員及時(shí)修正。
——譯者介紹——
劉濤,51CTO社區(qū)編輯,某大型央企系統(tǒng)上線檢測(cè)管控負(fù)責(zé)人。
原文鏈接:https://hackernoon.com/integrating-dast-into-your-cicd-pipeline-benefits-and-implementation