Fuzzing是一種基於缺陷注入的自動軟體測試技術。
基本介紹
- 外文名:Fuzzing
- 作用:完成數以萬計的檢查任務
- 意義:發現軟體中不期望有的漏洞的行為
- 含義:基於缺陷注入的自動軟體測試技術
簡介,特徵,
簡介
利用漏洞檢查工具,傳送數據到組件,或對指定格式進行填充,完成數以萬計的檢查任務,來幫助我們發現軟體中不期望有的漏洞的行為。
特徵
通過編寫fuzzer工具向目標程式提供某種形式的輸入並觀察其回響來發現問題,這種輸入可以是完全隨機的或精心構造的。Fuzzing測試通常以大小相關的部分、字元串、標誌字元串開始或結束的二進制塊等為重點,使用邊界值附近的值對目標進行測試。
主要有兩種類型的fuzzing技術 :dumb fuzzing 這種測試無需了解協定或檔案本身格式,通過提供完全隨機的輸入或簡單改變某些位元組去發現問題。這種方法實現起來較簡單,容易快速觸發錯誤,但它的完全隨機性會導致產生大量無效的輸入或格式。Intelligent fuzzing 研究目標應用程式的協定或檔案格式、功能配置,了解各類漏洞的成因,有目的地編寫fuzzer。編寫有效的fuzzer需要花費時間,但能夠對某些感興趣的部分集中測試,因此更有效。在對目標進行fuzzing的過程中,也可能存在各種問題:校驗和、加密、壓縮等措施會大大增加fuzzer工具的編寫難度;編寫智慧型化的fuzzer依賴目標程式的協定文檔,因此協定文檔的完整性影響fuzzing測試的效果,等等。Fuzzing測試過程中需要採取措施記錄目標的狀態,通常通過日誌的方式記錄下各種信息,以便後續分析。目前比較有名的fuzzer工具有SPIKE和Peach,它們提供了對許多協定接口的支持,現有的許多fuzzer都是基於這兩個框架實現的。