IAST 初探:博采眾長、精準定位、DevOps友好
?
?
交互式應用安全測試(IAST)是一個自動識別和診斷應用程序和 API 漏洞的技術,它結合了 SAST 和 DAST 的優勢,可以從應用內部持續監測漏洞。 在整個開發生命周期中,IAST通過你在開發和測試中使用的工具實時提供告警。
IAST 的顯著特性是它借助插樁(Instrumentation)直接從運行的代碼中收集安全信息和遙測,以識別和診斷應用程序和 API 中的漏洞。 但這并不意味著你需要等到生產階段才開始進行 IAST,而是在你寫下第一行代碼的時候就開始在 IDE 中使用它。
由于 IAST 可以直接訪問代碼本身,它可以對每一行代碼執行 SAST。 此外,因為 IAST 可以訪問 HTTP 流量,它可以對每個請求和響應進行類似 DAST 的分析。 因此,IAST 結合了 SAST 和 DAST 工具的安全功能。
IAST 包含以下兩個主要功能:
-
自有代碼安全測試: IAST 可以自動分析應用程序和 API 的自有代碼,找出之前沒被發現的漏洞。 IAST 能夠識別各種各樣類型的漏洞,不僅包含十大安全漏洞列表(OWASP Top 10)中的漏洞,還能識別出其他更復雜的漏洞。
-
開源安全測試: IAST 還可以通過兩種方式來測試開源代碼庫和框架的安全性。 首先,IAST 可以識別困擾開源軟件的已知漏洞(通常以 CVE 的形式發布)。 其次,IAST 還可以識別開源軟件中未知的(“新的”或者“潛在的”)漏洞。
IAST 為敏捷環境提供哪些優勢?
1、測試左移
IAST 在 SDLC 早期的測試左移中發揮神奇的作用。它將測試轉移到 SDLC 的早期部分,使得問題被盡早發現,減少補救成本。
由于該安全技術有助于快速跟蹤問題報告和修復期之間的窗口期,所以可以有效減少開發過程中的延誤。
安全和開發團隊都需要在開發階段使用 SAST 和 SCA 工具,而 IAST 實在測試階段使用的安全工具。每當 IAST 發現安全問題,都會被反饋給開發人員,讓他們在開發階段修復這些漏洞。
2、 暴露漏洞的來源
IAST 可以簡單地分析應用程序內部,因為它可以訪問應用程序的數據流、庫、框架和源代碼。 分析應用程序內部結構的特性有助于開發人員快速識別漏洞并快速修復。
3、 準確性
IAST 的關鍵特性之一是以極低的誤報率檢測可驗證的、不可驗證的和可能的安全問題。 在發出告警的正確率方面,它比 SAST 和 DAST 優秀得多,而 DAST 和 SAST 在檢測的漏洞數量方面也無法與之相比。
每個組織都希望有一個安全工具能在應用程序的所有內部流程方面為他們提供準確的報告,而不是提供虛假報告。
雖然 DAST 返回低誤報并不難,但很難定位到與漏洞相關的代碼行。 但 IAST 和 SAST 可以提供詳細信息,例如帶有漏洞的代碼位置,以幫助安全和開發團隊進行修復。
4、 對 SDLC 的所有階段都很有價值
IAST 安全工具對于整個軟件開發階段都十分有用。 它不只是聚焦于某個特定階段,還可以幫助開發人員在開發過程中實時修復問題。 此外,它在測試階段也非常重要。 IAST 還有助在生產過程中檢測漏洞,并將結果發回給開發團隊進行修復。
5、 與 DevOps 工具無縫集成
IAST 是 DevOps 友好的安全工具,它也可以集成到開發和測試在使用的其他工具中。 DevOps 團隊需要易于配置和實施的工具,并且與構建和測試工具無縫集成。 IAST 非常容易部署,且易集成到 CI/CD 流水線中。
6、 快速且清晰的反饋
IAST 可以實時檢測漏洞并提供及時的反饋。 代碼運行和掃描之后,開發者會收到及時反饋并且告訴其如何進行補救。
反饋不僅快速而且清晰,并且提供了可執行的操作(如漏洞類型、發現漏洞的代碼行)。
QA 團隊也可以從 IAST 識別安全漏洞的方式中受益,因為反饋結果是清晰的和可執行的。 安全專家也可以借助這一工具而省去查找漏洞位置的時間和精力。
7、 靜態和動態的結合
IAST 一個重要的方面是靜態能力(分析靜態代碼的能力)和動態能力(分析運行中代碼的能力)。 這兩種能力的結合使 IAST 在其高精確度和追蹤代碼行漏洞方面發揮了最大的作用,使得漏洞的修復變得十分輕松。
IAST 工具類型
SAST/IAST 工具 (被動型 IAST)
被動型 IAST 的工作方式與 RASP (運行時應用自我保護)工具類似。 它通過使用編入代碼的傳感器來分析應用程序的行為。
這類工具保留了靜態分析的最大弊端: 缺乏對第三方組件的關注。 因此,如果使用一個被動式 IAST 解決方案,必須使用另一個工具——軟件成分分析(SCA),或者全然信任第三方組件,后者顯然是不現實的。
被動式 IAST 工具另一個缺點是它們只能在被單元測試或第三方爬蟲激活的功能中發現漏洞。 這意味著,這類工具不能保證整個應用程序都被檢測,這可能導致很多漏洞被遺漏。
作為 SAST 產品的擴展而開發的 IAST 工具仍然是被動式掃描程序,它不會進行任何攻擊或主動抓取。 與純粹的 SAST 工具相比,它無疑是一種改進,但并不能滿足對 Web 漏洞掃描程序的需求。
DAST/IAST 工具 (主動型 IAST)
具有 IAST 功能的 DAST 工具專注于引入 SAST 的一個優勢: 準確定位問題的源頭。 這樣開發人員就無需花費時間來查找導致漏洞的那行代碼。 因此,主動型 IAST 解決方案的價值點在于它們提供更準確的結果,并降低誤報率。
不過,動態分析工具是在運行的應用程序上實時工作,所以它們無法直接訪問源代碼。 但它們可以訪問編譯器和解釋器。 假如使用的編程語言是 PHP,一個主動型 IAST 工具可以直接定位到導致漏洞的具體代碼行。 如果是預編譯的語言,它可以在字節碼中準確定位問題,從而加快在應用程序代碼中發現問題的速度。
總而言之,不能指望帶有 IAST agent 的 DAST 解決方案完全取代專門的源代碼掃描程序,但它引入了 SAST 的一些優勢,甚至提升了動態測試的效率。
IAST 最大的優勢之一是它在開發過程中的可用性,尤其是在基于敏捷方法的開發過程中。 構建自己網絡應用程序的企業需要盡快了解潛在的安全問題,以避免在生產中發現漏洞所帶來的成本和風險。 這就是為什么目前應用安全和軟件開發的主要趨勢之一是用 DevSecOps 取代 DevOps。
就其性質而言,SAST 工具是作為 CI 的一部分來使用的。 DAST 工具經常被誤認為不適合自動化,但實際上,領先的 DAST 解決方案被許多企業成功地用于 CI/CD 流水線中。 盡管在軟件開發周期中引入 IAST agent 會變得更復雜,但這一切是值得的。
被動型 IAST 和主動型 IAST 都同樣適用于 SDLC。 然而,被動型 IAST 安全測試的誤報率更高,更依賴測試團隊的技術水平(需要單元測試來執行爬蟲的功能),并且不會檢測開發中使用的第三方元素。 另一方面,檢測更徹底的主動型 IAST 可能需要更多的計算資源。
IAST 需要一個成熟的測試環境、現代軟件開發環境以及標準的架構,以獲得最佳性能。
IAST 在 SDLC 的所有階段都非常有用,我們將介紹其中3個較為常見的用例。

IAST 在開發階段的介入
開發團隊常常從 IAST 中受益頗多,因為它有助于檢測應用程序中的漏洞,而這通常是在 SDLC 期間完成,而不是在應用部署到生產環境中時進行。 這降低了漏洞的補救成本。 同時也請注意它也可以在預生產和生產環境中運行并且在 DevOps 環境中完全支持 CI/CD。
IAST 在測試階段的介入
它不需要等待任何掃描完成后再報告應用程序中的漏洞。 它是一個可以被納入質量保證環境和CI/CD的工具,它可以在部署前階段用于測試,并且對DevOps友好。
IAST 在生產階段的介入
它還為運維團隊提供了在生產階段所需的所有必要支持。 這是因為并不是所有的漏洞都能在部署到生產之前得到修復。
因此,有了這個工具,即使在生產環境中你也能保證應用程序的安全,因為它為你提供關于補丁的信息,以優先修復非常嚴重的問題,并幫助監控整個系統的穩定性。
交互式應用安全測試(IAST)是近幾年來的新型技術,它仍然在尋找自己的立足點以被安全和開發者社區接受。 每一種測試技術都有其獨特的優勢,有時使用其中一種而舍棄另一種可能并不完全正確。 因此,如果您的團隊有足夠的預算,十分建議您同時使用 SAST、DAST 和 IAST,因為它們能檢測出99.9%的漏洞。
在本文中,您已經了解到 IAST 的特點。 如果企業需要避免未來以更高的成本修復漏洞,那么每個組織都需要擁有 IAST 工具。




浙公網安備 33010602011771號