Fuzz test


背景和需求
多年來,有大量能夠使 Microsoft Word 崩潰的壞文件。少數字節錯位,會使整個應用程序毀於一旦。在舊式的、無內存保護的操作系統中,整個計算機通常就這樣宕掉了。Word 為什么不能意識到它接收到了壞的數據,並發出一條錯誤信息呢?為什么它會僅僅因為少數字節被損壞就破壞自己的棧、堆呢?當然,Word 並不是惟一一個面對畸形文件時表現得如此糟糕的程序。

Fuzz Test是什么
就是用大量的測試用例一個一個試,盡可能多的找出有可能出問題的地方。

在模糊測試中,用隨機壞數據(也稱做 fuzz)攻擊一個程序,然后等着觀察哪里遭到了破壞。模糊測試的技巧在於,它是不符合邏輯的:自動模糊測試不去猜測哪個數據會導致破壞(就像人工測試員那樣),而是將盡可能多的雜亂數據投入程序中。由這個測試驗證過的失敗模式通常對程序員來說是個徹底的震憾,因為任何按邏輯思考的人都不會想到這種失敗。
模糊測試是一項簡單的技術,但它卻能揭示出程序中的重要 bug。它能夠驗證出現實世界中的錯誤模式並在您的軟件發貨前對潛在的應當被堵塞的攻擊渠道進行提示。


實現過程:
1. 准備一份插入程序中的正確的文件。
2. 生成Fuzzed數據,用隨機數據替換該文件的某些部分。
3. 用程序打開文件。
4. 觀察破壞了什么。
5. 記錄缺陷。

可以用任意多種方式改變該隨機數據。例如,可以將整個文件打亂,而不是僅替換其中的一部分,也可以將該文件限制為 ASCII 文本或非零字節。不管用什么方式進行分割,關鍵是將大量隨機數據放入應用程序並觀察出故障的是什么。


Fuzz Test Tool的大部分結構
(1)要生成大量的測試用例。這個測試用例是“異常的”,一個軟件首先要找到輸入點,然后把數據丟進去,這個數據有可能是一個文件,有可能是一個數據包,有可能是測試表里面的一個項,有可能是臨時文件里面的一個東西,總之是一種數據,要定義“異常的”這種非正常的數據。
(2)把它丟進去,看這個產品怎么反應
(3)監視並記錄惡意輸入觸發的任何崩潰/異常。
(4)檢視測試日志,深入調查。


什么是模糊測試?
模糊測試是一種軟件測試技術,使用隨機數據作為系統的輸入。如果應用程序失敗,那么系統將解決這些問題/缺陷。簡而言之,意外或隨機輸入可能會導致意外結果。
模糊測試階段:
以下是模糊測試的關鍵階段:

 

攻擊類型

• 數字/字符模糊
• 應用模糊測試
• 協議模糊測試
• 文件格式模糊測試


什么是模糊測試?
• 模糊測試是一種測試,其中使用自動或半自動測試技術通過向系統輸入稱為FUZZ的無效或隨機數據來發現軟件,操作系統或網絡中的編碼錯誤和安全漏洞。之后,系統會監視各種異常,例如系統崩潰或內置代碼失敗等。
• 模糊測試最初由Barton Miller於1989年在威斯康星大學開發。模糊測試或模糊測試是一種軟件測試技術,它是一種安全測試。

 

 

為什么要進行模糊測試?

• 通常,Fuzz測試發現最嚴重的安全故障或缺陷
• 當與Black Box測試,Beta測試和其他調試方法一起使用時,模糊測試可以提供更有效的結果。
• 模糊測試用於檢查軟件的漏洞。這是非常划算的測試技術。
• 模糊測試是黑盒測試技術之一。模糊測試是黑客用來發現系統漏洞的最常見方法之一。

 

Fuzz Testing檢測到的錯誤類型
• 斷言失敗和內存泄漏此方法廣泛用於大型應用程序,其中錯誤會影響內存的安全性,這是一個嚴重的漏洞。
• 輸入無效
在模糊測試中,模糊器用於生成無效輸入,用於測試錯誤處理例程,這對於不控制其輸入的軟件很重要。簡單的模糊測試可以被稱為自動化負面測試的一種方法。
• 正確的錯誤
模糊測試也可用於檢測某些類型的“正確性”錯誤。如數據庫損壞,搜索結果不佳等。

 

模糊測試的優缺點
好處
模糊測試改進了軟件安全測試。
在模糊測試中發現的錯誤有時很嚴重,黑客大部分時間都使用它,包括崩潰,內存泄漏,未處理的異常等。
如果由於時間和資源的限制,測試人員沒有注意到任何錯誤,那么在Fuzz測試中也會發現這些錯誤。
缺點
僅靠模糊測試無法提供整體安全威脅或錯誤的完整圖片。
模糊測試在處理不會導致程序崩潰的安全威脅方面效果較差,例如某些病毒,蠕蟲,特洛伊木馬等。
模糊測試只能檢測簡單的故障或威脅。
要有效地執行,需要大量時間。
使用隨機輸入設置邊界值條件是非常有問題的,但現在使用基於用戶輸入的確定性算法,大多數測試人員解決了這個問題。

 

 

實例

test/app/fuzz/nvme_fuzz.c
patch位置https://review.gerrithub.io/#/c/spdk/spdk/+/431571/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM