在在上篇文章中中,我們瞭解了 SAST 的概念、優劣和使用的工具,並在文章裡提到了另一個軟體安全領域裡的重要技術 DAST。本文將會詳細介紹 DAST 的概念、重要性及其工作原理。
DAST(Dynamic Application Security Testing)是在應用程式處於生產階段時發現安全漏洞的過程,它包括使用各種測試工具進行手動和自動化測試。
這是一種黑箱測試的型別,測試者無需瞭解架構、網路或者程式碼,而是從一個惡意攻擊者的角度來測試應用程式。應用程式依賴於輸入和輸出執行,這意味著如果使用者的輸入有疑點,在響應上會有反饋。
DAST 測試可以在正式投入使用之前幫助你在軟體中發現漏洞。它不是為特定軟體而設計的,而是在易受攻擊的應用層上工作。
根據 Internet Live Stats 的資料,全球有超過17億個網站,因此安全漏洞的數量在不斷增加也就不足為奇了。CNBC 的一項研究顯示,超過75%的應用程式在某種程度上存在漏洞,而這些漏洞不會很快消失,這就是應用程式安全測試(AST)的用武之地。
南半球的蝴蝶扇動一下翅膀就能在北半球引發一場颱風,開發人員輕微的安全錯誤(例如,使用者輸入驗證不當、伺服器版本洩露和使用易受攻擊的軟體庫等)也有可能導致重大的安全問題。
而採用 DAST,可以讓開發人員在構建應用程式時不必完全依賴自己的知識和過往經驗。通過在軟體開發生命週期(SDLC)中執行 DAST,開發人員可以在軟體公開部署之前捕獲應用程式中的漏洞。如果不檢查這些漏洞而直接部署應用程式,可能會導致資料洩露,進而造成重大的經濟損失和損耗品牌聲譽。在軟體開發生命週期(SDLC)的某個階段,人為錯誤將不可避免,而在 SDLC 中越早發現漏洞,修復的成本就越低。
當 DAST 成為 CI/CD 流水線的一部分時,DevSecOps 就誕生了。對 Fortify on Demand(FoD)漏洞資料的分析顯示,在超過11000個網路應用程式中,94%的程式含有安全功能的漏洞,而程式碼質量和 API 濫用問題在過去4年裡大約增加了一倍。
大部分人認為DAST是一個自動化的方式,但事實並非如此。在廣泛意義上,動態應用安全測試被分為兩類:
DAST 掃描工具會在正在執行的應用程式中查詢漏洞,然後在發現了 SQL 注入攻擊、跨站指令碼(XSS)攻擊的漏洞時自動傳送告警。因為 DAST 工具具備在動態環境中執行的能力,它們可以檢測到 SAST 工具無法識別的執行時缺陷。
假如應用程式是一棟大樓,那麼 DAST 掃描工具可以被認為是一個保安。並且這個保安不僅僅是確保門窗已鎖好,還會身體力行地測試各種闖入大樓的方法,例如撬開門鎖或打破窗戶。完成這項檢查後,保安會向大樓經理彙報並解釋他是如何闖入大樓的。
DAST 會測試所有種類的 endpoint,包括隱藏的 endpoint,並觸發不同種類的攻擊以發現安全漏洞。DAST 的自動化測試工具通過模擬對應用程式的惡意攻擊識別出漏洞,這是在日常使用過程中難以發現的。
由於 DAST 可以對應用進行端到端的測試,而無需進入原始碼,所以不需要事先了解所使用的程式語言。這使得 DAST 使用起來十分方便。其他應用程式安全測試方法並未涵蓋廣泛的漏洞測試。此外,DAST 在執行時查詢原始碼中的漏洞,這意味著 DAST 不需要重新構建一個應用程式來測試漏洞。
軟體開發生命週期(SDLC)是軟體開發中的一個術語,這是一個統一了整個軟體或應用程式開發流程的框架。無論所開發的軟體型別是什麼,一個預先構建好的軟體開發生命週期對成功至關重要。
將 DAST 工具整合到 SDLC 中,也是構建一個安全的應用程式的關鍵。
DAST 的主要關注點是在 SDLC 早期階段識別出漏洞,從而使開發團隊能夠在問題變得更嚴重之前解決它們。DAST 被引入到軟體開發生命週期(SDLC)中, 可以讓開發人員在駭客利用漏洞之前將漏洞修復。
開發者、測試者以及專案經理在整個軟體開發生命週期期間採用不同的掃描技術。而在 DAST 解決方案興起之前,對於團隊而言將掃描結果整合到開發生命週期中是十分困難的。將 DAST 整合到 SDLC 過程中的企業比那些沒有整合的組織更具競爭優勢。動態應用安全測試是一個全面的應用安全計劃的重要組成部分,它可以檢測和防止漏洞被引入到軟體應用中,也可以檢測現有的漏洞。
DAST 是一種相對較新的測試實踐,它側重於在執行時評估軟體應用程式的安全性,它可以在生產環境中進行測試,因此它有以下6大優勢:
DAST 幾乎不需要了解應用程式的程式語言,市面上的自動掃描工具可以根據輸入和輸出測試應用程式。換言之,DAST 工具並不與特定的語言繫結,這使得它成為比人工程式碼審查或滲透測試更敏捷的測試方法。
與其他應用安全測試方法相比,DAST 掃描工具導致的誤報非常少,因為無論元件、語言和平臺如何,都是端到端測試。
隨著微服務和函數語言程式設計的興起,應用程式架構和程式碼庫變得更加複雜。單一的單體應用的時代已經成為「過去式」。現代的應用程式由多個元件和系統組成,這些元件和系統是由不同團隊或是不同公司構建的。由於 DAST 使用其 Web 介面執行應用程式和服務,因此它可以測試所有這些元件和系統相互互動的結果,並且可以在不需要對每個元件有太多深入瞭解的情況下發現漏洞。
DAST 掃描工具並不是為在區域網內部工作而設計的,所以它們的方法與典型的外部攻擊一致。它模擬了現實世界的攻擊,在駭客試圖攻擊應用程式之前就為其構築安全的城牆。
企業在 SDLC 中引入 DAST,以減少其應用程式在 CI/CD 流水線階段的漏洞和安全風險,從而降低安全漏洞可能造成的損失。
DAST 可以輕鬆設定並且會持續不斷地進行掃描以檢查安全漏洞,這使得開發和管理團隊無需提心吊膽。
當提到安全,沒有比測試更重要的維護安全的方式了。動態應用安全測試可以幫助你在漏洞釀成大禍之前發現並修復它。通過本文,我們對 DAST 有了基本的瞭解,那麼在未來的文章中我們會繼續介紹軟體安全領域的相關內容,保持關注吧!