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