跳至內容

Americanfuzzylop

出自Taiwan Tongues 台語維基
這是此頁批准,以及是最近的修訂。

american fuzzy lop(AFL) 是一種足自由的霧測試工具,採用遺傳演算法以有效地提懸測試用例的代碼崁率。目前為止,伊幫助檢測了數十个主要自由軟體專案中的重大程式錯誤,包括講 X . Org Server、PHP、OpenSSL、pngcrush、bash、Firefox、BIND、Qt 和 SQLite。

american fuzzy lop 的原始碼發布佇 GitHub 上。american fuzzy lop 著名佇美國垂耳兔。

典型用法

AFL 要求使用者提供一个執行測試應用程式的範例命令和至少一個範例輸入檔案。比如講,佇咧對音訊放送器進行測試的時陣,會當指示講 AFL 用伊拍開一个簡短的聲音檔案。然後,霧霧測試器試看實際執行指定的命令,若有成功,伊會試驗將輸入檔案減少到觸發仝款行為的上小檔案。

佇初初階段了後,AFL 通過對輸入檔案進行各種的修改來開始實際的模糊測試的過程。當被測程式幫敗或者是假當機時,表明發現一个新錯誤,可能是一个安全漏洞。現此時修改了後的輸入檔案被儲存以供使用者進一步檢查。

為著上大限度地提懸霧測試效能,建議使用 american fuzzy lop 來進行灰盒測試,即在一个實用程式的幫助下編譯被測程式原始碼,該實用程式咧編譯被測程式的時陣插入去跟蹤控制流的輔助函式(即「插杙仔」)來 instrument 代碼。這允准模仿測試器檢測目標的行為當時回應輸入咧改變。佇灰盒測試無可能的情形下,也支援烏箱測試。

特性

霧霧 ia̋n-jín

american fuzzy lop 的霧霧測試 ia̋n-jín 使用幾个演算法雖然可能觸發被測程式的各樣行為,如位翻轉抑是將輸入的整數資料修改做是可能引發各樣的邊界值。除了這以外,AFL 會當根據範例關鍵字生成測試用例,對使用是因為文字語法的程式就茫霧測試,比如講 SQLite。生成的測試用例執行程式碼的無仝部份,AFL 記錄會引起各樣的輸入資料,了後會當共遮的資料輸入到更加專業的診斷程式進行進一步分析。來做無糊的時陣,假當機會當通過設定的定時間超時來檢測,幫敗通過結束程式的訊號處理程式檢測。

使用 AFL 來做無糊的時陣,輸入的測試用例會當通過標準輸入或做行程命令列中指定的輸入檔案提供予測試的程式。目前袂支援對通過網路接受輸入資料的網路應用程式來做模糊的測試,但是佇咧某一寡狀況下有可行的解決方案。

效能

american fuzzy lop 面臨的一大挑戰是每秒對幾百个行程的 spawn。伊除了對頭開始 spawn 逐个行程的原始 ia̋n-jín,american fuzzy lop 提供高度依賴 ` fork ` 系統呼叫的預設 ia̋n-jín。會當通過利用 LLVM 延遲分叉侍服器的模式抑是類似的持久模式進一步趕緊速度,這是以必須愛修改測試程式為代價的。另外咧,american fuzzy lop 支援迵過網路對仝一个程式行無糊測試。

使用者介面

american fuzzy lop 有彩色的命令列介面,即時顯示霧測試過程佮統計資訊,會當通過命令列介面抑是環境變數修改組態,嘛會當對機器會當讀檔案格式中讀執行的時陣統計資訊。

實用程式

除了提供 ` afl-fuzz ` 用佇模糊的測試,american Fuzzy lop 閣包括用佇咧監視霧測試的過程的實用程式。除了這以外,` afl-cmin ` 和 ` afl-tmin ` 會當用佇上細化測試用例佮語料庫,當其他霧去測試器嘛需要使用 ` afl-fuzz ` 生成的測試用例的時陣尤其實用。

AFL + +

因為 Google 二空一七年九月以後著 AFL 的頂游開發相對停滯,故誕生一个社群維護的 AFL 分叉AFL + +(AFLplusplus)。伊包括一寡新的特性佮效能提升。

Google 推出的為開源軟體提供免費模糊測試服務的 OSS-Fuzz 計畫,嘛於二空二一年一月將 AFL 選項替換為著 AFL + +。

參考資料

拓展閱讀

  • S . K . Cha , M . Woo , D . Brumley , " Program-Adaptive Mutational Fuzzing , " in Proceedings of the 三十六 th IEEE Symposium on Security and Privacy , 二千空一十五 . ( to appear )
  • Multi-System and Internet Security Cookbook , Hors-Serie No . 十一 " Outils de sécurité " , p .   三十六 , " American Fuzzy Lop " , Kevin Denis , June 二千空一十五 . [一]
  • " Fuzz and strings ( lwn . net ) "
  • " Fuzzing ( on ) FreeBSD-( Mostly ) automated bug discovery with security / afl "-a presentation at FOSDEM
  • " Testing with two failure seeking missiles : fuzzing and property based testing "-a presentation at EuroPython 二千空一十五 .
  • " Stagefright : Scary Code in the Heart of Android " a presentation at Black Hat Briefings
  • " The Fuzzing Project "
  • " Grammatical Inference and Language Frameworks for LANGSEC "
  • " Fuzzing Code with AFL " , Peter Gutmann , ; login , Vol . 四十一 , No . 二 , Summer 二千空一十六 , [二]
  • " AFL + + " , an advanced fork of AFL