靜態應用程序安全測試 (SAST) 或靜態代碼分析通過掃描應用程序的源代碼、字節代碼或二進制文件來檢測應用程序漏洞。通過分析應用程序中的代碼模式、控制流和數據流,SAST 可以在不運行應用程序的情況下識別一系列漏洞。
靜態應用程序安全測試 (SAST) 如何工作?
SAST 的工作原理是檢查應用程序的源代碼、二進制代碼或字節代碼,并尋找指示常見漏洞的代碼模式。這是通過創建應用程序以及代碼和數據流的模型來實現的。基于此模型,SAST 解決方案可以運行預定義規則來識別已知類型的漏洞。
為什么 SAST 是一項重要的安全活動?
SAST 解決方案使開發人員能夠通過在軟件開發生命周期 (SDLC) 的早期執行漏洞分析來“將安全性左移”。這使開發人員能夠更快地識別和修復漏洞,從而降低修復成本及其潛在影響。
SAST 還使開發人員能夠收到有關其代碼質量的更多實時反饋。SAST 掃描可以在每次代碼更新后執行,而不是僅在開發過程結束時當候選版本準備就緒時才識別和修復漏洞。這有助于開發人員從錯誤中吸取教訓,并在未來開發更安全的代碼。
優點和缺點
SAST 掃描解決方案對于識別常見漏洞非常有用。SAST 的一些主要優勢包括:
- 在 SDLC 中的早期出現:SAST 不需要可執行代碼,這允許它在 SDLC 中更早地執行。這減少了修復任何已識別漏洞的成本和時間要求。
- 常見漏洞檢測:SAST 解決方案可以識別與常見漏洞相關的代碼模式,例如 OWASP 十大和常見弱點枚舉 (CWE) 列表中描述的那些。
盡管有很多好處,但 SAST 并不是一個完美的解決方案。SAST 掃描的一些限制包括:
- 特定于語言:SAST 讀取并分析應用程序的源代碼,這意味著它需要理解編寫它所用的語言。如果組織使用多種不同的語言或不太常用的語言,這可能會出現問題。
- 無法檢測所有漏洞:SAST 解決方案旨在分析源代碼,而不是正在運行的應用程序。這使其對配置錯誤和運行時漏洞視而不見。
- 高誤報率:SAST 解決方案不執行運行時分析,這意味著它們無法確定潛在漏洞是真正的威脅還是誤報。必須分析 SAST 結果以確定它們是否代表真正的安全風險。
- 頻繁、耗時的測試:SAST 掃描需要很長時間才能運行,報告會分析代碼的快照,因此它很快就會過時。這意味著必須經常運行 SAST 掃描以保持最新。
SAST 對比 達斯特
動態應用程序安全測試 (DAST) 通過向應用程序發送各種類型的輸入來分析正在運行的應用程序是否存在潛在漏洞。DAST 是對 SAST 的補充,這兩種方法之間的一些主要區別包括:
- 白盒測試與黑盒測試:SAST 解決方案對應用程序的源代碼具有完整的可見性。DAST 解決方案在不了解其內部操作的情況下測試正在運行的應用程序的安全性。
- 應用程序成熟度:SAST 掃描是在源代碼或二進制文件上執行的,不需要正在運行的應用程序。DAST 解決方案要求應用程序足夠完整才能執行。
- SDLC 階段:SAST 對源代碼的使用使其能夠在 SDLC 中比 DAST 更早地執行,后者需要訪問可執行程序。
- 補救成本:SAST 在 SDLC 中的早期存在使其能夠比 DAST 更便宜地糾正漏洞。在 SDLC 中越晚發現漏洞,可能需要修復的代碼就越多,修復的時間就越少。
- 檢測到的漏洞:SAST 解決方案不分析運行代碼,因此它們無法識別運行時漏洞或配置問題。DAST 解決方案測試正在運行的應用程序并可以發現這些類型的錯誤。
- 漏洞定位檢測:SAST可以準確識別漏洞所在的代碼行。DAST 只能報告應用程序中存在特定漏洞。
誤報率:SAST 解決方案更容易出現誤報,因為它們基于應用程序模型而不是運行它。DAST 解決方案可以判斷特定漏洞是否確實存在。