压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

找到最奇怪的錯誤:10款頂級模糊測試工具

在創建應用程序時,程序員會花費大量時間預測用戶將如何使用他們的軟件以及這些操作會產生什么樣的效果。優秀的程序員不僅有著簡潔、高效的編碼質量,還要考慮到發生意外的情況。但沒有人能夠預測用戶所有的可能操作,尤其是非常規性的操作(比如黑客攻擊,安全人員尤其關注這一點),這時就需要模糊測試(fuzzing)。

什么是模糊測試?

模糊測試(以下簡稱模測)是一個自動化的過程,在這個過程中,測試引擎嘗試向應用程序發送大量意外的、錯誤的或隨機的輸入,以觀察程序的反應。然后,再根據情況編寫合適的響應代碼,盡可能的保證應用程序的穩定性和安全性。

例如,如果一個電子商務網站用戶訂購了200億件緊腰夾克,會發生什么?網站會崩潰嗎?會打折嗎?或者拿它當正常訂單處理嗎?再比如,如果用戶輸入了有效的優惠券代碼,但輸錯了地方會發生什么?回到網絡安全上,如果惡意用戶輸入命令行功能、加密內容、操作系統命令或原始代碼,應用程序將如何反應?

一個好的模測引擎可以回答所有這些問題,甚至更多。

模測工具如何工作?

由于模測的價值,有相當多的商業工具售賣,也有數百個優秀程序員在GitHub等平臺上共享的免費工具。有不同類別的模測工具,如以發送大量隨機信息為特色的,再比如,通過非常規輸入來檢測運行中的程序,還有專門用于測試可編程接口(API)的工具。

在大多數情況下,模測的目標是生成一些有效的意外數據,當然,至少是能夠被測試軟件解析器接受的數據。然后,提交應用程序對非正常輸入所產生的結果,最為典型的,如程序崩潰。

模測工具可以支持各種編程語言進行測試,主流的如C、C++、Go、Rust、Python、Java、Kotlin、Scala和Swift。還有些測試工具只使用單一語言的應用程序測試。如,Python程序員的特定工具。但不管是哪種語言,合適的才是最好的。

本文嘗試推薦一些頂級的模測工具。商業工具來自OWASP網站上的列表,免費工具則是在GitHub上搜索“fuzz”,按“打星”的人氣數量排序,同時也兼顧另一個衡量受歡迎程度的指標,即該項目被分叉(fork)的次數。

四款商業模測

1. beSTORM

Beyond Security出品的beSTORM是商業市場上最通用的模測之一。無需訪問源代碼即可執行測試,幾乎可與任何應用程序、協議、語言乃至硬件一起工作,甚至還可以測試為特定行業和特種應用設計的設備和程序。比如物聯網、過程控制應用、與can總線兼容的汽車應用、航空工具和低耗能藍牙設備。

多功能性是beSTORM的最為突出的價值所在,程序員只需學習使用單個界面,就可以針對幾乎無限數量的設備或應用程序發起模測。beSTORM測試平臺預置了250個測試模塊,并且還能輕松地添加新的模塊,以覆蓋另類或專有的應用程序。

此外,beSTORM還可以作為云服務訪問。通過這種方式,一個大型機構可以購買該平臺,然后向不同地點的多個用戶提供模測工具的使用。

2. CI Fuzz

該工具內置在一個Ubuntu虛擬機中,在本地或云端均可部署。將CI Fuzz集成到CI/CD(持續集成和持續交付)管道中,就可以在每次“pull Request”時自動運行。由于它是CI/CD過程的一部分,所以能夠防止程序在有了新的更改時,無意中增加漏洞或破壞程序。如果發生問題也能很快被標記,從而很容易確定何時引入的程序錯誤。

每當CI Fuzz檢測到錯誤時,它立即開始發送該輸入的不同組合,以嘗試映射問題的范圍。然后生成一份詳細的報告,以消除誤報,并能夠幫助程序員在修復代碼時手動重現這些錯誤。

CI Fuzz引擎需要直接訪問被測程序或應用程序的源代碼,因此它只支持某些語言和框架,主要為C、C++、Java和Go。但該工具正在努力集成其他框架,如.Net Core和Python。

3. 新思模測套件(FTS)

與大多數產品相比,新思的模測產品有著不同的做法。FTS是一整套測試工具,每一個工具都針對于特定的語言、協議或用例,而不是一個測試工具去匹配盡可能對的應用程序。這種做法的好處在于,用戶可以購買他們所需要模測工具,而無需購買他們可能永遠不會需要的額外功能。

每個工具都有一組標準的功能,比如一組高度相關的現成測試用例、一個結果和報告分析組件、一個用于配置工具的圖形界面,以及如何使用它的說明文檔等。

FTS包括各種針對性的測試工具,從DNS服務器等常見組件,到CAN總線或IKEv2等很小眾、專業的應用程序。用戶購買工具時,還可配送一定程度的支持。

4. Mayhem for Code

ForAllSecure的這款模測具備大多數模測引擎的優點,并兼具額外的學習功能,因此可隨著使用時間的延長變得更加高效。該平臺可獨立運行,盡量減少人工干預。

Mayhem for Code在持續運行期間,可學習環境并挖掘利用系統的深度信息。它甚至可以根據所學到的知識動態生成測試用例。簡而言之,使用的次數越多、時間越長,它就能變得愈加高效和獨立。

該平臺目前可支持多種語言,如Java、Python、Ada、OCaml、Fortran、Jovial、C、C++、Go和Rust,且無需訪問源代碼。

六款免費/開源模測

1. PeachTech

PeachTech的模測在2020年之前一直都是商業付費產品,直到2020年被GitLab收購,并放出免費版本的PeachTech項目,但不再受支持或更新。

PeachTech投入了大量精力,具有高度可配置性,幾乎可以用任何語言或在任何操作系統上運行。然而,其說明文檔非常復雜,又取消了產品支持,用戶需要了解很多模測試的知識,以及使用的語言或框架,才能獲得該工具的益處。非專業人員不適用。

2. Google OSS-Fuzz

谷歌在為Chrome操作系統或瀏覽器開發新組件時,模測起到了很大的幫助作用,谷歌遂將其開源。

OSS-Fuzz適用于x86-64和i386版本,并利用了其他幾種模測引擎,包括AFL++、libFuzzer和Hongfuzz,并支持多種語言,包括C、C++、Rust、Go、Python和Java/JVM代碼。

OSS-Fuzz是目前GitHub上評價最高的項目之一,擁有一個很大的社區,并在開源社區中得到很多支持。

3. FuzzDB

FuzzDB本身并不是一個模測引擎,而是一個復雜的攻擊載荷庫和注入技術庫(也許是世界上最大的庫),用于破壞或入侵未得到恰當保護的程序和應用。這些攻擊以各種方式進行分類,例如按平臺類型、已知問題、潛在源暴露,以及許多其他的分類。

FuzzDB庫的最佳利用方式,就是與可編程模測引擎結合。將FuzzDB中的攻擊模式加載在模測引擎中,配合模測的隨機輸入,可覆蓋很大范圍,從已知攻擊和漏洞到未知攻擊和未發現的漏洞。

4. Ffuf (Fuzz Faster U Fool)

Ffuf是一個用Go語言編寫的模測引擎。對于免費工具而言,它好用的出人意料。

它可以執行最常見的模測功能,如檢查應用程序對未知的GET和POST請求的反應。Ffuf沒有什么用戶界面,主要使用命令行功能。但一旦學習了這些功能,就會了解它的強大之處。

Ffuf在GitHub上有許多如何部署的示例,開發人員還會定期發布新的功能和特性。雖然它是免費的,但屬于贊助模式,新功能將優先發布給那些付費贊助該工具進一步開發的人。30天后,其他才可以使用新功能。

5. Google ClusterFuzz

Google ClusterFuzz是用來檢查Chrome漏洞的模測引擎,它也是上述第二個免費工具OSS-Fuzz項目后端的一部分。但ClusterFuzz適用于任何程序或應用,而不僅僅是開源領域的程序或應用。

有了ClusterFuzz在后端的配合,OSS-Fuzz在谷歌產品中成功發現了超過2.9萬個bug,在開源項目中成功發現了2.6萬個bug。ClusterFuzz還設計成可在任何環境下運行,并具有高度可擴展性。該項目的GitHub頁面列出了ClusterFuzz與10萬臺虛擬機一起工作的一個項目,可以說滿足任何人所需要的可伸縮性。

6. go-fuzz

該平臺是一個有著高分評級的模測工具,針對性地測試go語言中的包。它主要用于解析復雜文本和二進制輸入的數據包。作者在Github的該項目頁面中的說明,go-fuzz對于加固系統尤其有用,這些系統解析來自潛在惡意用戶的輸入,例如通過網頁公開部署的任何內容。

go-fuzz的說明文檔很好地描述了使用方法,同時,還附帶了一個存儲庫,包含了大量測試函數和和初始輸入設置的許多示例。

來源:數世咨詢

 

上一篇:CDCE積極開拓線上宣傳矩陣 賦力品牌更多營銷“轉機”

下一篇:勒索軟件不只是贖金,還有更多的隱性成本