
作者 | Sudip Sengupta
策劃 | 田曉旭
在今天的文章中,我們将共同探讨 DevOps 領域中應用最為廣泛的安全工具與方法。
從政策層面來講,安全測試工具可以融入 DevOps 工作流之内,并從本質上構成一套 DevSecOps 模型,借此在提高生産效率的同時最大程度降低軟體開發成本。此類工具使您可以在整個軟體開發生命周期(SDLC)以及軟體傳遞之後的運作及維護階段内,對包括潛在漏洞在内的各類問題進行測試與修複。啟用 DevSecOps 模型将確定開發人員擁有安全的開發與傳遞周期,而不緻因“強行塞入安全性”而影響 SDLC 并拖累生産效率。
在之前的文章中,我們曾經讨論過微服務為何易受攻擊,以及如何将 DevSecOps 模型視為持續保障安全實踐的明智方法。
DevSecOps 範式本身一直在不斷發展,而且随着獨特安全工具的出現,組織現在已經可以對軟體開發及傳遞内的不同階段進行分别測試與保護。DevSecOps 安全工具通常被分為靜态應用程式安全測試(SAST)與動态應用程式安全測試(DAST)兩種基本思路。在今天的文章中,我們主要讨論最常用的安全工具及方法。
1 靜态應用程式安全測試(SAST)
SAST 模型提供包含多種形式的源代碼分析、二進制分析以及白盒測試技術。乍看之下,SAST 工具似乎主要負責在代碼被推送至生産環境之前,對應用程式的源代碼進行安全漏洞檢查。SAST 源代碼分析主要關注靜态代碼中是否存在易受攻擊的缺陷,例如競争條件、輸入驗證、數字錯誤等。另一方面,二進制分析則強調對已建構及編譯完成的代碼進行缺陷測試。我們需要同時使用多種 SAST 工具,有些僅負責測試源代碼、有些測試已編譯代碼,有些則同時對這兩類代碼做出測試。
以下是幾款知名度較高的 SAST 工具:
LGTM.com
LGTM 是一套開源代碼平台,可通過變體分析檢查代碼中的常見漏洞與披露(CVE),同時支援幾乎所有主要程式設計語言,包括 C/C++、Go、Java、JavaScript/TypeScript、C# 以及 Python 等。LGTM 首先使用 CodeQL 技術識别問題、解決問題,并掃描類似的代碼模式以避免出現進一步威脅。憑借多種 repo 系統提供的開源項目,LGTM 得以高效執行自動代碼審查,借此識别源代碼中的公開内容。
作為一套開源平台,LGTM 還充分運用安全專家的知識,即使用資料科學與語義代碼搜尋等技術編寫出可檢測現有及新代碼漏洞查詢的自動化方案。
SonarQube
SonarQube 是最著名的靜态代碼分析工具之一,旨在清理并保護 DevOps 工作流及代碼。通過對代碼品質的持續分析,SonarQube 會定期檢查以檢測出 bug 及安全問題。SonarQube 宣稱可以掃描使用 27 種程式設計語言編寫的代碼,包括 Java、Python、C#、C/C++、Swift、PHP、COBOL 以及 JavaScript 等,是以其非常适合擁有不同程式設計背景或者需要在多個平台上運作應用程式的團隊。更重要的是,SonarQube 可以在 GitHub、Azure DevOps 忣 BitBucket 等 repo 中直接分析您的代碼,并在代碼審查期間提供即時回報。
SonarQube 社群版是開源自由軟體,也被普遍視為入門級 CI/CD 安全 DevOps 的完美選項。另一方面,其開發者、企業以及資料中心版則更為複雜精妙,适用于規模更大的部署場景。
Reshift
Reshift 的核心目标是在不影響開發速度的前提下發現安全問題,這也使其成為推廣 DevSecOps 模型的重要選項之一。Reshift 與內建開發環境(IDE)相融合,是以非常适合識别漏洞并實時加以修複。作為一大核心功能,Reshift 允許使用者在代碼審查、編譯時以及持續內建的過程中不斷保護應用程式安全。Reshift 被衆多技術專家視為完美的輕量化 DevOps 安全測試解決方案,适用于中小型企業、以及希望将安全保障整合至軟體開發生命周期當中的各類初創軟體公司。
Insider CLI
Inside 是根據 OWASP Top 10 設計的另一款開源 SAST 工具,用于簡化各類程式設計語言的安全自動化流程,适用于.NET 架構、JavaScript(Node.js)、Java(Android 與 Maven)、Swift 以及 C# 等。Insider 源代碼分析工具是一款社群驅動型方案,通過在源代碼層級掃描漏洞以支援靈活且高效的軟體開發方法。
借助 Inside Application Security,您可以通過自由、內建的 GitHub 操作直接在 GitHub 目錄上保護代碼,讓整個安全保障體系變得易于實施。
2 動态應用程式安全測試 (DAST)
DAST 工具也被稱為黑盒測試或漏洞掃描工具。這些工具将從局外人的角度測試應用程式,而不僅限于其并不熟悉的源代碼本體。DAST 工具會模拟攻擊向量的行為,在運作時測試應用程式以發現潛在的安全漏洞。這些工具無需人工幹預即可運作,是以建立起一整套自動化測試流程。DAST 工具能夠适應的漏洞相當廣泛,包括記憶體破壞、跨站點請求僞造、遠端檔案包含、緩沖區溢出以及拒絕服務等。
下面,我們将一起了解幾款重要的商業及開源 DAST 工具。
Crashtest Security
CrashtestSecurity 是一款漏洞評估工具,具有進階爬網功能,可無縫內建至開發管道以檢測應用程式内的漏洞。CrashtestSecurity 将行業标準的進階掃描功能與使用者友好型界面相結合,供您輕松進行安全測試。Crashtest 還能夠對基于 JavaScript 的應用程式進行單頁分析以識别漏洞模式,并采用基于文檔的應用程式程式設計接口(API)掃描建立起一套全面的安全平面。
OWASP ZAP
開源 Web 應用安全計劃(OWASP)推出的 Zed Attack Proxy(ZAP)是一款免費的開源滲透測試工具,專門用于測試 Web 應用程式。ZAP 将充當“中間人”攻擊載體,以模拟方式對測試者浏覽器與網絡應用程式之間的通信加以攔截。ZAP 可以被安裝在所有主要作業系統以及 Docker 之上,使用者亦可選用 ZAP 市場中的各類附加元件進一步增強安全測試功能。
NPM Audit
Node Package Manager(NPM)Audit 平台提供龐大且不斷增長的工具系統資料庫,并在全球範圍内托管着數量龐大的共享 JavaScript 軟體包。憑借着對平台及各類軟體包的廣泛支援,如果大家希望保護由遠端分布式團隊支援的 DevOps 管道,那麼最好的配套選項無疑就是 NPM。NPM CLI 可用于配置軟體包、審查實時應用程式源代碼,同時通路 repo 以改善功能。這套解決方案能夠自動識别并管理依賴項中的沖突,幫助您實時修複安全漏洞。
Arachni
Arachni 是一款基于 Ruby 架構的免費高性能測試工具。其發行版中包含多個可移植軟體包,您可以立即進行部署以評估應用程式安全性。您可以根據需求将其部署為 Ruby 庫、CLI 掃描器、WebUI 或者分布式系統。通過 REST API,Arachni 能夠輕松與大多數現代平台相內建,借此提供豐富的漏洞分析檢查功能,同時由此獲得最高水準的彈性、準确性與可靠性支援。Arachni 可以掃描 NoSQL 注入、代碼注入、XSS 以及檔案包含變體等漏洞,并為基于 JavaScript 架構的 Web 應用程式提供其他跟蹤優化。這一切,使得 Arachni 成為具有多種功能且高度自動化的分布式滲透測試平台。
3 總結
将安全測試整合至 DevOps 當中,要求我們找到一種不僅能夠保護管道安全、同時亦可跨多個業務層級實作擴充的強大方法。有了正确的安全測試工具,我們對源代碼及編譯後代碼的自動分析将成為 SDLC 中的一大基本要素,幫助開發團隊高效處理各類漏洞。正确的工具将幫助我們在實作協作、管理管道以及推進測試自動化的同時,不緻于犧牲掉系統性能、時間以及其他成本資源。更重要的是,将安全測試內建至 DevOps 之内還能夠顯著減少修複工作所涉及的編碼量,由此降低軟體開發成本。
原文連結
https://dzone.com/articles/an-overview-of-security-testing-tools-in-devops
來源:架構頭條
???? 視訊号開通了,大家關注一下????