SAST、DAST與IAST各有哪些特點

zktq2021發表於2023-09-21

SAST、DAST 和 IAST 是應用程式安全測試的三種主要方法,這三種測試方法從檢視原始碼到檢視正在執行的應用程式。

靜態應用程式安全測試(SAST)

靜態應用程式安全測試(SAST),因為可以看到應用程式內部也稱為白盒測試。分析應用程式原始碼以查詢可能不安全的構造和資料流是靜態分析是開發過程中最常用的安全測試方法。SAST工具透過字串匹配、資料流分析、控制流分析、抽象語法樹的語義分析等手段進行路徑遍歷,完成對狀態空間所有路徑的近似分析,以發現程式碼中存在的潛在缺陷以及安全漏洞,並提供修復建議。

有許多不同型別的 SAST 工具,從簡單的 IDE(整合開發環境)外掛(警告不安全的語法)到檢查整個儲存庫和模擬資料流的獨立程式碼分析器。由於 SAST 工具分析原始碼,因此需要工具滿足程式語言,測試多語言程式碼庫通常需要了解工具是否支援各類語言。

SAST 優點:

在應用程式部署之前的開發階段進行測試,這樣可以儘早發現和糾正安全漏洞;

檢查靜態程式碼,無需正在執行的應用程式;

在開發過程中易於插入 IDE 和其他工具;

可以檢查整個程式碼庫,甚至是當前未使用的程式碼;

不僅僅依賴於已知的漏洞和攻擊模式,還可以發現程式碼中的邏輯漏洞、設計缺陷和未知的安全問題。

SAST 缺點:

在分析應用程式時依賴於原始碼或位元組碼;

無法檢測與特定環境相關的安全問題;

不可避免的存在誤報問題;

檢測編碼語言需要工具支援。

動態應用程式安全測試(DAST)

動態應用程式安全測試(DAST)因為無法檢視應用程式內部,也稱為黑盒測試。DAST可以探測整個正在執行的應用程式、API或WEB環境並檢查不安全行為。DAST 可以手動執行(滲透測試)或自動執行(漏洞掃描),一般來說,DAST工具指的是自動掃描程式。

DAST透過模擬與網站互動的行為來工作,現代漏洞掃描程式具有內建的 Web 瀏覽器,用於載入頁面、執行測試並觀察指示漏洞的反應。由於它們專為自動化和自主測試而設計,因此需要支援身份驗證、CSRF 令牌以及訪問和測試網頁和 API 端點所需的其他機制。

DAST優點:

識別可利用的安全漏洞、配置錯誤、無效的安全標頭以及其他只能在執行時檢測到的問題;

與技術無關,客觀地評估應用程式的安全性,不受開發語言、框架或技術的限制;

不需要原始碼,因此它可以測試所有正在執行的元件,無論其來源如何(包括動態依賴項)

可以檢測已知的安全漏洞和攻擊模式。透過使用已知漏洞資料庫和攻擊簽名,DAST工具可以幫助發現應用程式中的常見漏洞,如跨站指令碼(XSS)、SQL隱碼攻擊等。

DAST缺點:

需要一個正在執行的應用程式進行測試(即使只是一個最小的原型);

測試僅涵蓋測試期間執行的程式碼;

報告的問題位置可能不如其他方法精確;

只能從外部對應用程式進行測試,無法評估應用程式的內部安全性措施和實現;無法檢測到程式碼中的邏輯漏洞和設計缺陷。

互動式應用程式安全測試(IAST)

互動式應用程式安全測試 (IAST)通常又被稱為灰盒測試,IAST結合了SAST和DAST,與單獨的SAST相比,IAST可以捕獲一些動態安全問題並驗證可利用性。與單獨的DAST相比,IAST可以查明應用程式程式碼中的問題,並顯示為什麼可能受到攻擊。

IAST優點:

可以在應用程式執行時獲取實時的上下文資訊,包括引數、會話狀態和資料庫狀態等;

可以跟蹤應用程式的執行路徑,包括敏感資料的流動和潛在的漏洞;

可以模擬實際攻擊,包括注入攻擊、跨站指令碼(XSS)等常見攻擊模式;

整合到CI/CD流水線中,可實時監測應用程式的安全性。

IAST缺點:

為了使用IAST,需要將特定的代理程式或感測器部署到應用程式中;

在應用程式執行時進行監控和分析,可能會對應用程式的效能產生一定影響;

儘管可以提供深入的漏洞分析,但仍受限於特定執行路徑和測試用例的覆蓋範圍。

在選擇測試工具時,每種測試工具和方法在特定情況下都有其優缺點。全面的應用程式安全計劃應包含多種型別的安全測試,以便在開發過程中儘早發現儘可能多的漏洞。理想情況下,至少需要SAST工具在程式碼編寫階段檢測由程式碼問題引起的缺陷和安全漏洞,用 DAST 在 SDLC 中執行動態安全測試,以及SCA檢測所依賴的開源元件未過時或易受攻擊。


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

相關文章