安全測試工具推薦
從策略層面來講,安全測試工具可以融入 DevOps 工作流之內,并從本質上構成一套 DevSecOps 模型,借此在提高生產效率的同時最大程度降低軟件開發(fā)成本。此類工具使您可以在整個軟件開發(fā)生命周期(SDLC)以及軟件交付之后的運行及維護階段內,對包括潛在漏洞在內的各類問題進行測試與修復。啟用 DevSecOps 模型將確保開發(fā)人員擁有安全的開發(fā)與交付周期,而不致因“強行塞入安全性”而影響 SDLC 并拖累生產效率。
在之前的文章中,我們曾經討論過微服務為何易受攻擊,以及如何將 DevSecOps 模型視為持續(xù)保障安全實踐的明智方法。

DevSecOps 范式本身一直在不斷發(fā)展,而且隨著獨特安全工具的出現,組織現在已經可以對軟件開發(fā)及交付內的不同階段進行分別測試與保護。DevSecOps 安全工具通常被分為靜態(tài)應用程序安全測試(SAST)與動態(tài)應用程序安全測試(DAST)兩種基本思路。在今天的文章中,我們主要討論最常用的安全工具及方法。
SAST 模型提供包含多種形式的源代碼分析、二進制分析以及白盒測試技術。乍看之下,SAST 工具似乎主要負責在代碼被推送至生產環(huán)境之前,對應用程序的源代碼進行安全漏洞檢查。SAST 源代碼分析主要關注靜態(tài)代碼中是否存在易受攻擊的缺陷,例如競爭條件、輸入驗證、數字錯誤等。另一方面,二進制分析則強調對已構建及編譯完成的代碼進行缺陷測試。我們需要同時使用多種 SAST 工具,有些僅負責測試源代碼、有些測試已編譯代碼,有些則同時對這兩類代碼做出測試。
以下是幾款知名度較高的 SAST 工具:
LGTM 是一套開源代碼平臺,可通過變體分析檢查代碼中的常見漏洞與披露(CVE),同時支持幾乎所有主要編程語言,包括 C/C++、Go、Java、JavaScript/TypeScript、C# 以及 Python 等。LGTM 首先使用 CodeQL 技術識別問題、解決問題,并掃描類似的代碼模式以避免出現進一步威脅。憑借多種 repo 系統提供的開源項目,LGTM 得以高效執(zhí)行自動代碼審查,借此識別源代碼中的公開內容。
作為一套開源平臺,LGTM 還充分運用安全專家的知識,即使用數據科學與語義代碼搜索等技術編寫出可檢測現有及新代碼漏洞查詢的自動化方案。
SonarQube 是最著名的靜態(tài)代碼分析工具之一,旨在清理并保護 DevOps 工作流及代碼。通過對代碼質量的持續(xù)分析,SonarQube 會定期檢查以檢測出 bug 及安全問題。SonarQube 宣稱可以掃描使用 27 種編程語言編寫的代碼,包括 Java、Python、C#、C/C++、Swift、PHP、COBOL 以及 JavaScript 等,因此其非常適合擁有不同編程背景或者需要在多個平臺上運行應用程序的團隊。更重要的是,SonarQube 可以在 GitHub、Azure DevOps 忣 BitBucket 等 repo 中直接分析您的代碼,并在代碼審查期間提供即時反饋。
SonarQube 社區(qū)版是開源自由軟件,也被普遍視為入門級 CI/CD 安全 DevOps 的完美選項。另一方面,其開發(fā)者、企業(yè)以及數據中心版則更為復雜精妙,適用于規(guī)模更大的部署場景。
Reshift 的核心目標是在不影響開發(fā)速度的前提下發(fā)現安全問題,這也使其成為推廣 DevSecOps 模型的重要選項之一。Reshift 與集成開發(fā)環(huán)境(IDE)相融合,因此非常適合識別漏洞并實時加以修復。作為一大核心功能,Reshift 允許用戶在代碼審查、編譯時以及持續(xù)集成的過程中不斷保護應用程序安全。Reshift 被眾多技術專家視為完美的輕量化 DevOps 安全測試解決方案,適用于中小型企業(yè)、以及希望將安全保障整合至軟件開發(fā)生命周期當中的各類初創(chuàng)軟件公司。
Inside 是根據 OWASP Top 10 設計的另一款開源 SAST 工具,用于簡化各類編程語言的安全自動化流程,適用于.NET 框架、JavaScript(Node.js)、Java(Android 與 Maven)、Swift 以及 C# 等。Insider 源代碼分析工具是一款社區(qū)驅動型方案,通過在源代碼層級掃描漏洞以支持敏捷且高效的軟件開發(fā)方法。
借助 Inside Application Security,您可以通過自由、集成的 GitHub 操作直接在 GitHub 目錄上保護代碼,讓整個安全保障體系變得易于實施。
DAST 工具也被稱為黑盒測試或漏洞掃描工具。這些工具將從局外人的角度測試應用程序,而不僅限于其并不熟悉的源代碼本體。DAST 工具會模擬攻擊向量的行為,在運行時測試應用程序以發(fā)現潛在的安全漏洞。這些工具無需人工干預即可運行,因此建立起一整套自動化測試流程。DAST 工具能夠適應的漏洞相當廣泛,包括內存破壞、跨站點請求偽造、遠程文件包含、緩沖區(qū)溢出以及拒絕服務等。
下面,我們將一起了解幾款重要的商業(yè)及開源 DAST 工具。
CrashtestSecurity 是一款漏洞評估工具,具有高級爬網功能,可無縫集成至開發(fā)管道以檢測應用程序內的漏洞。CrashtestSecurity 將行業(yè)標準的高級掃描功能與用戶友好型界面相結合,供您輕松進行安全測試。Crashtest 還能夠對基于 JavaScript 的應用程序進行單頁分析以識別漏洞模式,并采用基于文檔的應用程序編程接口(API)掃描建立起一套全面的安全平面。
開源 Web 應用安全計劃(OWASP)推出的 Zed Attack Proxy(ZAP)是一款免費的開源滲透測試工具,專門用于測試 Web 應用程序。ZAP 將充當“中間人”攻擊載體,以模擬方式對測試者瀏覽器與網絡應用程序之間的通信加以攔截。ZAP 可以被安裝在所有主要操作系統以及 Docker 之上,用戶亦可選用 ZAP 市場中的各類附加組件進一步增強安全測試功能。

Node Package Manager(NPM)Audit 平臺提供龐大且不斷增長的工具注冊表,并在全球范圍內托管著數量龐大的共享 JavaScript 軟件包。憑借著對平臺及各類軟件包的廣泛支持,如果大家希望保護由遠程分布式團隊支持的 DevOps 管道,那么最好的配套選項無疑就是 NPM。NPM CLI 可用于配置軟件包、審查實時應用程序源代碼,同時訪問 repo 以改善功能。這套解決方案能夠自動識別并管理依賴項中的沖突,幫助您實時修復安全漏洞。
Arachni 是一款基于 Ruby 框架的免費高性能測試工具。其發(fā)行版中包含多個可移植軟件包,您可以立即進行部署以評估應用程序安全性。您可以根據需求將其部署為 Ruby 庫、CLI 掃描器、WebUI 或者分布式系統。通過 REST API,Arachni 能夠輕松與大多數現代平臺相集成,借此提供豐富的漏洞分析檢查功能,同時由此獲得最高水平的彈性、準確性與可靠性支持。Arachni 可以掃描 NoSQL 注入、代碼注入、XSS 以及文件包含變體等漏洞,并為基于 JavaScript 框架的 Web 應用程序提供其他跟蹤優(yōu)化。這一切,使得 Arachni 成為具有多種功能且高度自動化的分布式滲透測試平臺。
將安全測試整合至 DevOps 當中,要求我們找到一種不僅能夠保護管道安全、同時亦可跨多個業(yè)務層級實現擴展的強大方法。有了正確的安全測試工具,我們對源代碼及編譯后代碼的自動分析將成為 SDLC 中的一大基本要素,幫助開發(fā)團隊高效處理各類漏洞。正確的工具將幫助我們在實現協作、管理管道以及推進測試自動化的同時,不致于犧牲掉系統性能、時間以及其他成本資源。更重要的是,將安全測試集成至 DevOps 之內還能夠顯著減少修復工作所涉及的編碼量,由此降低軟件開發(fā)成本。
原文鏈接
https://dzone.com/articles/an-overview-of-security-testing-tools-in-devops
