軟件測試-file fuzzing

 

關鍵詞:軟件測試, fuzzing,  安全, 自動化測試

 

 

Fuzzing是一種基於缺陷注入的自動軟件測試技術。通過編寫fuzzer工具向目標程序提供某種形式的輸入並觀察其響應來發現問題,這種輸入可以是完全隨機的或精心構造的。Fuzzing測試通常以大小相關的部分、字符串、標誌字符串開始或結束的二進制塊等爲重點,使用邊界值附近的值對目標進行測試。(This means fuzztesting is an assurance of overall quality, rather than a bug-finding tool)fuzzing不是測試軟件正確性,而是一個漏洞發現工具。

 

主要有兩種類型的fuzzing技術dumb fuzzing 這種測試無需瞭解協議或文件本身格式,通過提供完全隨機的輸入或簡單改變某些字節去發現問題。這種方法實現起來較簡單,容易快速觸發錯誤,但它的完全隨機性會導致產生大量無效的輸入或格式。Intelligent fuzzing 研究目標應用程序的協議或文件格式、功能配置,瞭解各類漏洞的成因,有目的地編寫fuzzer。編寫有效的fuzzer需要花費時間,但能夠對某些感興趣的部分集中測試,因此更有效。

 

Fuzzing輸入數據

 (any type of program input can befuzzed. Interesting inputs include environment variables, keyboard and mouse events, and sequences of API calls. Even items not normally considered"input" can be fuzzed, such as the contents of databasesshared memory, or the precise interleaving of threads.) Fuzzing輸入數據可以是環境變量,鍵盤,鼠標,api調用,數據庫內容,共享內存,線程切換。

 

在對目標進行fuzzing的過程中,也可能存在各種問題:校驗和、加密、壓縮等措施會大大增加fuzzer工具的編寫難度;編寫智能化的fuzzer依賴目標程序的協議文檔,因此協議文檔的完整性影響fuzzing測試的效果,等等。Fuzzing測試過程中需要採取措施記錄目標的狀態,通常通過日誌的方式記錄下各種信息,以便後續分析。目前比較有名的fuzzer工具有SPIKE和Peach,它們提供了對許多協議接口的支持,現有的許多fuzzer都是基於這兩個框架實現的。

 

Fuzzing作用

Fuzzing可以檢查崩潰(crash),斷言(assertionfailures),內存泄漏(memory leaks), 異常處理(error-handlingroutines), incorrect-serialization,補丁(unintentionaldifferences between two versions)。

 

 

FileFuzz

http://www.fuzzing.org/wp-content/FileFuzz.zip

 filefuzz測試pdfreader

Pdf reader沒有出現crash, 同志仍需努力 !!

 

Fuzzing測試問題

1.        Fuzzer簡化了測試場景。<Thecomputational complexity of the software testing problem is of exponential order (O(c^n), c>1)and every fuzzer takes shortcuts to find something interesting in atimeframe that a human cares about. >

2.        代碼覆蓋率

 

 

 

參考資料

《模糊測試-強制性安全漏洞發掘》

http://en.wikipedia.org/wiki/Fuzz_testing


發佈了37 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章