模糊測試的綜合指南
已發表: 2021-05-17安全測試是確保您的軟件準備好正式發布的最重要步驟之一,無論是出於商業目的還是商業用途。 它允許您檢測您的軟件可能存在的任何漏洞,並在黑客利用此類漏洞時為其製定對策。
如果您對安全測試感興趣,現在可以在這裡了解事實,但您必須知道的一點是,進行安全測試的方法有很多種,例如風險評估、滲透測試和漏洞掃描。 如果您已經對安全測試稍有熟悉,那麼您可能聽說過“模糊測試”這個術語。
模糊測試是當今業界相對普遍的測試技術,尤其是微軟和谷歌等企業巨頭已經使用它十多年了。 但令人驚訝的是,儘管它是一種標準技術,但了解它的人並不多。 話雖如此,本指南旨在從定義開始解釋什麼是模糊測試。
什麼是模糊測試?
模糊測試,或其他人所說的“模糊測試”,涉及將無效或隨機數據輸入程序,以檢測可能導致可利用錯誤的任何漏洞。 該輸入可以是文件的形式,也可以是來自用戶的直接輸入。 因此,例如,如果您正在構建某種計算程序,您通常需要輸入數字或數學運算。 但是,如果您正在進行模糊測試,則必須輸入無效輸入,例如字母甚至特殊字符。
如果這樣做會使程序崩潰或導致任何其他類型的錯誤,程序員會認為存在漏洞,因此可以修改代碼以期解決問題。 乍一看,您會認為模糊測試與漏洞掃描或滲透測試等其他技術相同,但它的流行是有原因的。
為什麼公司使用模糊測試?
在安全測試方面,沒有萬能的解決方案。 每種方法都可以檢測到其他方法無法檢測到的問題; 有些需要較低的運營成本,而有些則更容易執行。 就像每一種安全測試技術一樣,模糊測試以自己的方式是獨一無二的。 以下是促使公司使用模糊測試的一些優勢。
- 簡單性:您已經知道模糊測試的工作原理——只需將無效輸入輸入到程序中即可。 對於在安全測試方面缺乏技能和經驗的個人或組織而言,流程的簡單性通常是一個很大的優勢。
- 自動化:安全測試可能是軟件和應用程序開發中的關鍵步驟,但通常,除了不斷測試程序之外,還有其他事情要做。 但是,對於模糊測試,情況就不同了,因為您可以使用模糊器自動化整個過程。
Fuzzer 是負責在給定必要的命令和條件時將數據自動輸入程序的工具。 模糊測試能夠實現業務自動化這一事實使其成為公司的理想測試技術。
- 方便:通常,在測試時,需要使用盡可能多的工具來減少錯誤的可能性並最大限度地提高程序的安全性。 由於模糊測試是可自動化且簡單的,因此它是增強軟件安全性的便捷方式。
一般來說,模糊測試簡單且易於實現,但值得注意的是,模糊測試有各種各樣的方法。 根據您使用的類型,測試過程的難度和復雜性可能會有所不同。 關於這一點,這可能是討論不同類型的模糊測試的好時機。
模糊測試的不同方法
儘管有幾種類型的模糊測試,但它們大多彼此相似,只是它們生成的輸入不同。 無論如何,有四種模糊測試方法:
- Dumb Fuzzing:當一個人想要完全隨機地生成輸入時,他們通常使用一個啞 fuzzer。 啞 fuzzer 是一種在沒有程序先驗知識或智能的情況下產生輸入的工具,因此得名。
例如,如果你正在構建一個語法檢查程序,一個愚蠢的模糊器最終可能會生成一個圖像,這與程序所期望的相差甚遠。 啞模糊測試是最簡單的模糊測試方法。
- 智能模糊測試:硬幣的另一面是智能模糊測試。 與啞 fuzzing 不同,智能 fuzzing 在知道程序期望接收什麼的情況下生成輸入。 此外,智能模糊器不會生成不可避免地會使程序崩潰的輸入。 相反,它會提出可能導致意外行為的輸入。
因此,在前面的示例中,智能模糊器可能會生成特殊字符,但不會生成圖像或任何其他不合適的輸入。 儘管智能 fuzzer 比啞 fuzzer 更具挑戰性,但它們在大多數情況下更準確。
- 變異模糊測試:變異模糊測試涉及通過修改或更具體地說,“變異”現有的有效輸入來生成輸入。 在我們的計算器程序示例中,突變模糊器可以選擇現有的有效輸入。
假設選擇的輸入是“10+9”。 突變模糊器將嘗試通過添加、刪除或更改此輸入的一部分來修改此輸入,例如增加值並將其轉換為“180+129”或將操作更改為“10/9”。
- 分代模糊測試:最後,分代模糊測試從頭開始生成輸入,這與從現有輸入生成輸入的突變模糊測試相反。 由於沒有參考,世代模糊器比突變模糊器更難實現,但它們可以為測試人員帶來更多數據。
使模糊測試比其他技術更有趣的是,您可以組合不同的類型來增強測試工具。 例如,您可以創建一個智能變異模糊器或一個啞代模糊器,具體取決於您的程序需要什麼。 也許您可以通過模糊測試執行的無數組合是公司更喜歡模糊測試而不是其他方法的另一個原因。
包起來
一旦您對模糊測試有了更多了解,就很容易理解為什麼它會像現在這樣流行。 然而,同樣值得注意的是,就像任何其他技術一樣,模糊測試也有一些缺點。 因此,必須確定模糊測試對您的應用程序或軟件的好處多於壞處。 如前所述,軟件安全測試沒有萬能的解決方案,而模糊測試肯定不會是那種解決方案。
對此有什麼想法嗎? 在下面的評論中讓我們知道,或者將討論帶到我們的 Twitter 或 Facebook。