用於安全測試的SAST與DAST有何不同?

zktq2021發表於2022-11-24

應用程式安全測試(AST)透過各種工具、流程掃描應用程式以發現潛在安全問題。靜態應用程式安全測試(SAST)和動態應用程式安全測試(DAST)是常用的安全測試方法,它們遵循不同的方法,在軟體開發生命週期的不同階段掃描應用程式程式碼及軟體。

SAST遵循白盒測試方法來分析原始碼、位元組碼和二進位制檔案,以識別可利用的漏洞和編碼問題。

DAST是一種黑盒測試方法,透過在應用程式前端解析模擬的攻擊有效負載,發現可利用潛在漏洞,不會暴露有關應用程式內部結構的資訊。

DAST 和 SAST用於識別應用程式漏洞的測試機制

靜態應用程式安全測試(SAST)工具對程式碼開發過程中引入的軟體缺陷提供即時反饋。測試是在軟體模型上使用預定義的規則執行,分析程式是如何在這些狀態之間轉換的,透過字串匹配、資料流分析、控制流分析、抽象語法樹的語義分析等手段進行路徑遍歷,完成對狀態空間所有路徑的近似分析,以發現程式碼中存在的潛在缺陷以及安全漏洞,並提供修復建議。

由於測試方法從軟體開發生命週期的早期階段開始實施,因此SAST有助於在編譯軟體之前識別編碼缺陷。SAST 是一種首選的測試方法,並支援基於 DevSecOps 的左移方法來管理安全性。除了安全性,SAST還有助於確定程式碼質量、可重用性和可維護性。

靜態應用程式安全測試發現的常見安全漏洞包括:

緩衝區溢位

跨站點指令碼

SQL隱碼攻擊等

SAST 掃描的優勢包括:

早期漏洞檢測:靜態程式碼分析在開發過程開始時執行,測試有助於在編譯應用程式程式碼之前檢測應用程式程式碼中的錯誤。透過確保安全缺陷不會出現在生產環境中,SAST工具有助於實施主動保護和減少安全缺陷。

實時反饋:SAST掃描器執行快速掃描,可以在較短的時間內分析應用程式的整個程式碼庫。除了對未發現的缺陷提供即時反饋之外,SAST工具還與各種開發管道工具無縫整合,而不影響核心功能。

準確性:SAST工具根據預定義的安全規則自動執行安全測試。這些工具比手動測試方法更快、更準確地識別出關鍵漏洞。

雖然 SAST 有助於安全編碼實踐,但分析靜態程式碼的好處範圍有限,因為它無法識別更多的執行時漏洞,並且報告存在一定的誤報。

動態應用程式安全測試透過模擬惡意使用者的操作來協調攻擊,使用由外而內的方法評估應用程式。DAST 掃描透過輸入可疑的使用者輸入並觀察應用程式的響應來評估執行時漏洞。測試機制持續掃描部署在生產環境中的 Web 應用程式,幫助模擬應用程式的實際行為並識別影響典型使用者體驗的問題。由於DAST測試是在執行時環境中執行的,因此可以在新漏洞出現和發展時檢測和識別它們。

動態分析應用程式程式碼發現的應用程式漏洞包括:

跨站點請求偽造

檔案包含漏洞

Cookie操作

路徑洩露漏洞等

DAST 測試的好處包括:

不受語言要求限制:DAST 測試不需要用於開發應用程式的程式語言知識。無論使用何種框架,DAST 工具都會根據輸入和輸出評估應用程式的行為,使其成為一種更強大的測試方法。

低誤報率:DAST工具對應用程式環境執行端到端掃描,使安全研究人員能夠檢測和識別威脅應用程式安全和功能的安全漏洞。

不需要訪問原始碼——由於DAST掃描是透過應用程式前端傳送惡意有效負載來執行的,企業可以利用第三方安全服務來執行測試,而不暴露應用程式程式碼。

雖然DAST工具評估應用程式程式碼中的各種漏洞,但它們無法定位程式碼庫中安全問題的確切位置。DAST 掃描也無法嗅探應用程式堆疊中未執行的部分中的漏洞。

何時使用 SAST?

SAST有助於在關鍵漏洞進入生產環境之前檢測和解決它們,建議開發人員使用 SAST 工具來幫助他們在編寫軟體時識別和檢測編碼錯誤。SAST 也適用於根本原因分析,這有助於在其他漏洞掃描檢測到缺陷後確定程式碼行中問題的確切位置。

如何結合使用SAST和DAST?

由於DAST和SAST優勢各不相同,DAST和SAST相互補充,可以一起使用來實現更健壯的測試方法。在程式碼開發階段早期採用SAST工具,支援對應用程式使用的所有功能和包進行全面的安全分析。後續執行DAST測試,以評估攻擊者如何利用生產中的漏洞。

SAST有哪些型別?

根據要測試的內容,SAST測試分析可分為:

原始碼分析

位元組碼分析

原始二進位制程式碼分析


參考來源:

https://crashtest-security.com/sast-dast/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2924877/,如需轉載,請註明出處,否則將追究法律責任。

相關文章