天天看點

如何為 SAST 工具設定誤報基準?為什麼要對誤報進行基準測試如何衡量 SAST 工具掃描準确率深入了解誤報基準結 論

許多 SAST 工具都無法避免誤報的問題。這些工具經常報告一些實際不存在的漏洞,這種不準确性讓安全團隊耗費大量時間來對誤報進行分類和處理,這時設定誤報基準就顯得十分必要。

通過設定誤報基準,安全團隊可以确定一個參考的點或者标準來衡量安全工具的有效性。

為什麼要對誤報進行基準測試

執行應用程式安全測試(Application Security Test)是識别惡意攻擊者可能利用的應用程式缺陷的重要方法。如果安全工具能夠準确識别漏洞,開發人員就能夠及時修複,進而提高應用程式的安全性。

SAST 工具掃描的結果通常分為四類:

  • True Positive ——正确識别存在漏洞。
  • True Negative —— 正确識别漏洞不存在。
  • False Positive ——錯誤地識别出實際不存在的漏洞。
  • False Negative ——未識别到存在的漏洞。

任何 SAST 工具的目标應該是最大化

true positive

true negative

的數量,同時最小化

false positive

false negative

。産生過多的誤報會讓開發人員無暇應對,而對該工具産生的掃描結果減少關注,甚至導緻他們不願意使用該工具。當這種情況發生時,企業的安全程式就會受到影響,包含漏洞的應用程式就極有可能被部署到生産環境中。

是以在使用 SAST 工具時,設定誤報基準非常重要,這樣企業就可以避免浪費大量時間來尋找實際上不存在的漏洞。

如何衡量 SAST 工具掃描準确率

衡量 SAST 工具的掃描結果是否準确的一種簡單方式就是從其

true positive

率中減去對應的

false positive

率。如果經過計算該工具獲得 100% 的完美準确度分數,則意味着 SAST 工具的

true positive

率為 100%,

false positive

率為 0%。我們通過下面三個例子來了解這些概念。

假設使用三種不同的 SAST 工具掃描應用程式中的漏洞會生成以下結果:

工具 #1

什麼都不做。它不會檢測到任何漏洞,也不會産生誤報。它的

true positive

率是0%,

false positive

率也是0%。是以,它的準确率分數是 0%,這個是沒什麼意義的。

工具 #2

報告應用程式中的每一行代碼都存在漏洞。是以,它的

true positive

率為 100%,因為它完美地檢測到了每一個漏洞。但是,如果它檢測到許多無害的、失效的、無效的或不重要的 true 結果,就說明這個工具的誤報率很高。例如,如果該工具總共識别出 1000 個漏洞,但其中 800 個不構成威脅,則其誤報率為 80%,其準确度得分僅為 20%,這對測試結果的意義也不大。

工具#3

通過抛硬币的方式來确定一行代碼是否易受攻擊,這樣 TP 率和FP 率各為 50%。它的準确度分數也将是 0%。

OWASP 基金會建立了一個免費和開源的 Benchmark Project,用于評估自動化軟體漏洞識别工具的速度、覆寫範圍和準确性。Benchmark Project 是一個示例應用程式,其中包含數千個可利用的漏洞,有些是真的,有些是誤報。企業可以根據此對 SAST 工具的結果進行評分,并在下圖中标記 SAST 工具的分數。

如何為 SAST 工具設定誤報基準?為什麼要對誤報進行基準測試如何衡量 SAST 工具掃描準确率深入了解誤報基準結 論

圖檔來源:MEND

理想情況下,安全工具的最佳結果應位于左上角——表示最小誤報和最大

true positive

深入了解誤報基準

在上文提到,衡量 SAST 工具準确與否的一種簡單方法是從其 true positive 率中減去其

false positive

率。但這個算法本身是不夠完善的,因為沒有到考慮其他重要因素。

以這兩個不同的 SAST 工具為例,每個工具都針對 OWASP 項目進行了評分:

SAST 工具 #1

識别出 10 個

true positive

和 3 個

false positive

,準确度得分為 70%。

SAST 工具 #2

識别出 100 個

true positive

和 30 個

false positive

,準确度得分為 70%。

雖然這兩種不同工具對應的準确度分數是相同的,但在做選擇的時候,企業還需要參考一些額外的名額,比如:

  • 完整性(Completeness)——完整性是指檢測到的真實漏洞(true positive)的數量與存在的真實漏洞總數的比較。 更高的完整性分數(理論最大值為 1)表明 SAST 工具識别出應用程式中更多的現有漏洞。一個完整度很高的工具可以幫助企業更好地了解其代碼,并幫助準确識别更多漏洞,以傳遞更安全的産品。
  • 深度(Depth)——在SAST 測試中,深度是指工具檢測各種漏洞的能力。支援大量程式設計語言并具有來自多個最新管道的綜合漏洞資料庫的工具,能夠進行有深度的掃描工作,幫助企業準确發現更多安全漏洞。如果一個工具的覆寫深度有限,則将産生大量的誤報,并且還會在不同的漏洞和語言之間産生不一緻的結果。是以,在使用 SAST 工具設定誤報基準時,也應當将這個因素考慮進去。

結 論

繼續閱讀