模糊測試方法研究

正文

???隨著業(yè)界對軟件安全問題關(guān)注度的不斷提升, 漏洞挖掘也逐漸成為相關(guān)領(lǐng)域重點研究的內(nèi)容。漏洞挖掘技術(shù)是指對未知漏洞的探索, 通過綜合應(yīng)用各種技術(shù)和工具, 盡可能地找出軟件中潛在的漏洞。傳統(tǒng)的漏洞挖掘技術(shù) (靜態(tài)分析技術(shù)、動態(tài)分析技術(shù)) 耗時費力, 又難以對每一個軟件進行全方位的漏洞掃描, 更重要的是即使經(jīng)過嚴(yán)格測試的軟件, 在投入運行后還是會發(fā)現(xiàn)有漏洞存在, 這促使了對一種更為有效的漏洞挖掘方法的研究。模糊測試(fuzz testing)是一種介于完全的手工滲透測試與完全的自動化測試之間的安全性測試類型,它能夠在一項產(chǎn)品投入市場使用之前對潛在的安全漏洞進行分析和挖掘。本文圍繞模糊測試技術(shù)的基本理論,從模糊測試執(zhí)行過程、模糊測試數(shù)據(jù)生成的方法和模糊測試的應(yīng)用等方面對模糊測試進行介紹。

模糊測試是一種基于缺陷注入的自動化軟件測試技術(shù),它使用大量半有效的數(shù)據(jù)作為應(yīng)用程序的輸入,以程序是否出現(xiàn)異常或錯誤作為標(biāo)志,來發(fā)現(xiàn)應(yīng)用程序中可能存在的安全漏洞。所謂半有效的數(shù)據(jù)是指對應(yīng)用程序來說,測試用例的必要標(biāo)識部分和大部分?jǐn)?shù)據(jù)是有效的, 但同時該數(shù)據(jù)的其他部分是無效或者漏洞攻擊的。因為的數(shù)據(jù)會被待測程序認(rèn)為這是一個有效的數(shù)據(jù),這樣應(yīng)用程序就有可能發(fā)生錯誤,從而導(dǎo)致應(yīng)用程序的崩潰或者觸發(fā)相應(yīng)的安全漏洞。模糊測試是一個自動或半自動的過程,這個過程包括反復(fù)操縱目標(biāo)軟件并為其提供處理數(shù)據(jù)。

模糊測試(fuzz testing)和滲透測試(penetration test)都是屬于安全測試的方法,它們既有聯(lián)系也有區(qū)別。滲透測試一般是模擬黑客惡意入侵的方式對產(chǎn)品進行測試,對測試者的執(zhí)行力要求很高,成本高,難以被大規(guī)模應(yīng)用。而模糊測試通過向應(yīng)用提供非預(yù)期的輸入并監(jiān)控輸出中的異常來發(fā)現(xiàn)軟件中缺陷,整個執(zhí)行過程依靠工具進行自動化或半自動化測試。模糊測試技術(shù)具有自動化程度高、可用性好、誤報率低, 對目標(biāo)程序源碼沒有依賴等優(yōu)點。

模糊測試執(zhí)行過程主要包含幾個基本階段:


(1)識別測試目標(biāo)

????確定明確的測試目標(biāo),才能決定使用的模糊測試工具或方法。比如需要選擇應(yīng)用包含的特定文件或者庫作為測試目標(biāo),需要把注意力放在多個應(yīng)用程序之間共享的那些二進制代碼上。因為如果這些共享的二進制代碼中存在安全漏洞,將會有非常多的用戶受到影響,因而風(fēng)險也更大。

(2)識別輸入

大部分可被利用的安全漏洞都是由于應(yīng)用沒有對用戶的輸入進行校驗或是進行必要的非法輸入處理。是否能找到所有的輸入向量(Input vector)是模糊測試能否成功的關(guān)鍵。尋找輸入向量的原則是:從客戶端向目標(biāo)應(yīng)用發(fā)送的任何東西,包括頭(Headers)、文件名(File Name)、環(huán)境變量(Environment variables),注冊表鍵(Registry keys),以及其他信息,都可能是潛在的模糊測試變量。

(3)生成模糊測試數(shù)據(jù)

大多數(shù)模糊測試的方法是通過向目標(biāo)系統(tǒng)不斷輸入可以誘發(fā)軟件缺陷的測試數(shù)據(jù),因此測試數(shù)據(jù)的生成是模糊測試非常關(guān)鍵的環(huán)節(jié),主要依賴測試目標(biāo)系統(tǒng)的特點和數(shù)據(jù)格式進行生成。

(4)執(zhí)行模糊測試數(shù)據(jù)

自動化地向被測的系統(tǒng)發(fā)送數(shù)據(jù)包、打開文件、或是執(zhí)行被測應(yīng)用的過程。這個階段一般與生成測試數(shù)據(jù)并行進行。

(5)監(jiān)視異常

監(jiān)控異常和錯誤是模糊測試中重要但經(jīng)常容易被忽略的步驟。模糊測試需要根據(jù)被測應(yīng)用和所決定采用的模糊測試類型來設(shè)置各種形式的監(jiān)視。

(6)判定發(fā)現(xiàn)的漏洞是否可被利用

在模糊測試中發(fā)現(xiàn)了一個錯誤,需要判定這個被發(fā)現(xiàn)的錯誤是否是一個可被利用的安全漏洞。這種判定過程既可以由模糊測試的執(zhí)行者來進行,也可以交給安全測試專家來進行。

模糊測試技術(shù)的應(yīng)用十分廣泛, 可以測試的對象種類繁多, 比如環(huán)境變量和參數(shù)、 Web 應(yīng)用程序、文件格式、網(wǎng)絡(luò)協(xié)議、Web 瀏覽器和物聯(lián)網(wǎng)系統(tǒng)等方面。

環(huán)境變量和參數(shù)的模糊測試屬于本地化的模糊測試, 其測試對象是命令行參數(shù)和環(huán)境變量。該測試方法是一種最簡單的模糊測試,即對命令行參數(shù)或環(huán)境變量進行惡意注入,注入成功后有可能導(dǎo)致程序崩潰。最常用的環(huán)境變量和參數(shù)的模糊測試工具是iFuzz,它曾成功地發(fā)現(xiàn)IRIX, HP-UX, QNX, MacOS X和AIX 等系統(tǒng)的漏洞。

Web 應(yīng)用程序容易受到各多類型的漏洞攻擊, 如拒絕服務(wù)、跨站點編寫腳本、 SQL 注入和弱訪問控制等。在對 Web 應(yīng)用程序進行模糊測試時要特別關(guān)注遵循 HTTP 協(xié)議規(guī)范的測試數(shù)據(jù)包。 Wfuzz是一款強大開源的Web Fuzz測試工具,它通過審計參數(shù)、登錄認(rèn)證、Get/Post爆破等方式,挖掘Web應(yīng)用程序的安全漏洞。

文件格式的模糊測試的測試對象包括Web 瀏覽器、郵件服務(wù)器、 office 辦公組件及媒體播放器等。文件格式模糊測試的目標(biāo)是發(fā)現(xiàn)應(yīng)用程序在解析特定文件格式時出現(xiàn)的漏洞。在對文件格式進行模糊測試時,待測軟件常會被很多種類型的漏洞攻擊,包括 DoS、整數(shù)處理問題、簡單的棧/堆溢出、邏輯錯誤及格式化字符串等。全球著名的安全公司Verisign iDefense開發(fā)了基于Windows平臺文件格式模糊測試工具FileFuzz和基于 UNIX 操作系統(tǒng)上文件格式模糊測試工具SPIKEfile,它們分別實現(xiàn)了基于變異的文件格式模糊測試和基于生成的文件格式模糊測試。

網(wǎng)絡(luò)協(xié)議的模糊測試可能是最廣泛被利用的模糊測試類別,目前存在很多不同的方法來實現(xiàn)對網(wǎng)絡(luò)協(xié)議的模糊測試。網(wǎng)絡(luò)協(xié)議的模糊測試如此之流行是因為它能夠發(fā)現(xiàn)很多高風(fēng)險漏洞。其測試對象包括郵件服務(wù)器、數(shù)據(jù)庫服務(wù)器、遠程訪問服務(wù)、多媒體服務(wù)器和備份服務(wù)器等。由芬蘭Oulu大學(xué)研發(fā)、并獲得微軟資金支持的模糊測試工具PROTOS,發(fā)現(xiàn)了SNMP、SIP、LDAP等協(xié)議中的安全漏洞。

Web 瀏覽器容易受到多種類型的漏洞攻擊, 包括 DoS、緩沖區(qū)溢出、遠程命令執(zhí)行、繞過跨越限制、繞過安全區(qū)和地址欄欺騙等。對 Web 瀏覽器進行模糊測試,常用方法包括刷新HTML頁、加載WEB頁和目標(biāo)單瀏覽器對象。Mangleme是一款發(fā)現(xiàn)WEB 瀏覽器中HTML解析缺陷的模糊測試工具。Verisign iDefense公司開發(fā)的模糊測試工具COMRaider,實現(xiàn)對Web瀏覽器ActiveX控件進行模糊測試。

國內(nèi)企業(yè)匡恩網(wǎng)絡(luò)針對物聯(lián)網(wǎng)系統(tǒng)研發(fā)出模糊測試工具,針對物聯(lián)網(wǎng)協(xié)議、物聯(lián)網(wǎng)設(shè)備和物聯(lián)網(wǎng)軟件系統(tǒng)進行測試,已經(jīng)發(fā)現(xiàn)了西門子、施耐德、艾默生、力控等多個不同廠商多款不同型號的DCS、PLC和上位機組態(tài)軟件的數(shù)十個漏洞。

表1列舉了著名的開源模糊測試工具,其中SPIKE被商業(yè)和政府機構(gòu)用于測試網(wǎng)絡(luò)協(xié)議,Sulley和Peach用于文件格式和網(wǎng)絡(luò)協(xié)議的測試。

表1.開源模糊測試工具

表1.開源模糊測試工具

工具名稱工具語言特點

SPIKEC廣泛使用,支持多類型的模糊測試,但不支持Windows系統(tǒng)操作

SulleyPython優(yōu)秀的崩潰報告,提供自動虛擬化技術(shù)

Peach


Python擴展性強、運行速度快,最新版C#還沒完成開發(fā),部分功能需自定義擴展

微軟提出“云端模糊測試即服務(wù)”的理念

早在2002 年微軟贊助模糊測試工具套件—PROTOS 測試套件的研究,并把模糊測試應(yīng)用在Windows內(nèi)核、Office和IE等產(chǎn)品的測試中。微軟于2005 年宣布在可信計算安全開發(fā)生命周期中將模糊測試作為安全漏洞挖掘的重要技術(shù)支持。據(jù)微軟的報告,Windows 7發(fā)現(xiàn)的安全漏洞約1/3是通過模糊測試技術(shù)發(fā)現(xiàn)的。2016年,微軟提出“云端模糊測試即服務(wù)”的理念,推出 Project Springfield項目,提供基于Azure云的模糊測試工具Springfield,該工具結(jié)合模糊測試和AI工具檢測軟件中的安全隱患。

Google 開放模糊測試服務(wù)OSS-Fuzz

Google開源能夠針對開源軟件進行持續(xù)模糊測試的OSS-Fuzz。OSS-Fuzz利用可更新的模糊測試技術(shù)與可拓展的分布式結(jié)合,為大規(guī)模的分布式模糊測試執(zhí)行提供環(huán)境。在該工具開源后五個月里,這款工具在開源項目中嗅探出了超過 1000 多個 bug,其中包括 264 個潛在的安全漏洞。Google 表示,OSS-Fuzz 已經(jīng)在幾個關(guān)鍵開源項目中找到了多個安全漏洞,并提交開源項目組修改。


分析

1、模糊測試的優(yōu)點

與傳統(tǒng)漏洞挖掘方法相比, 模糊測試技術(shù)有其無法比擬的優(yōu)勢。模糊測試的測試目標(biāo)是二進制可執(zhí)行代碼, 比基于源代碼的白盒測試適用范圍更廣;模糊測試是動態(tài)實際執(zhí)行的,不存在靜態(tài)分析技術(shù)中存在的大量誤報問題;模糊測試的原理簡單,沒有大量的理論推導(dǎo)和公式計算,不存在符號執(zhí)行技術(shù)中的路徑狀態(tài)爆炸問題;模糊測試自動化程度高,不需要逆向工程中大量的人工參與。模糊測試技術(shù)的優(yōu)點使它成為一種應(yīng)用范圍廣泛的漏洞挖掘技術(shù)。

2、模糊測試的局限性

(1) 對訪問控制漏洞無能為力,因為模糊測試系統(tǒng)無法理解程序的邏輯,所以如一些違反權(quán)限控制的安全漏洞難以發(fā)現(xiàn)。

(2) 受制于糟糕的設(shè)計邏輯。糟糕的設(shè)計邏輯并不會導(dǎo)致程序崩潰,而模糊測試發(fā)現(xiàn)漏洞一個主要依據(jù)是監(jiān)控目標(biāo)系統(tǒng)的異常和錯誤信息,因此模糊測試難以發(fā)現(xiàn)這類漏洞。

(3) 無法識別多點觸發(fā)漏洞,當(dāng)前的模糊測試技術(shù)往往只能挖掘出由單個因素引起的漏洞,而對于需要多條件才能觸發(fā)的漏洞卻無能為力。

?

建議

??1、目前,Web應(yīng)用中存在大量拒絕服務(wù)(Dos)、跨站腳本(XSS)、SQL注入(SQL injection)等漏洞,Web應(yīng)用模糊測試不僅可以發(fā)現(xiàn)Web應(yīng)用本身的漏洞,還可以發(fā)現(xiàn)Web服務(wù)器和數(shù)據(jù)庫服務(wù)器的漏洞。建議通過模糊測試的方法和工具,對Web應(yīng)用進行漏洞挖掘。

??2、Android在手機的市場上占有率很高,通過模糊測試不但可以發(fā)現(xiàn)釣魚欺詐、拒絕服務(wù)和權(quán)限提升等Android的常見漏洞,而且可以對App的穩(wěn)定性進行分析驗證。建議通過模糊測試的方法和工具,對App的Android版進行漏洞挖掘。

??3、隨著智能手機、可穿戴設(shè)備、活動追蹤器、無線網(wǎng)絡(luò)、智能汽車、智能家居等終端設(shè)備和網(wǎng)絡(luò)設(shè)備的迅速發(fā)展和普及利用,針對物聯(lián)網(wǎng)設(shè)備的網(wǎng)絡(luò)攻擊事件比例呈上升趨勢,攻擊者利用物聯(lián)網(wǎng)設(shè)備漏洞可入侵設(shè)備,獲取設(shè)備控制權(quán),通過控制大量物聯(lián)網(wǎng)設(shè)備,黑客可以發(fā)起分布式拒絕服務(wù)網(wǎng)絡(luò)攻擊(DDoS)。建議利用模糊測試,對物聯(lián)網(wǎng)的網(wǎng)絡(luò)協(xié)議和設(shè)備進行漏洞挖掘。

??4、隨著業(yè)務(wù)發(fā)展和技術(shù)升級需要,會引入一些開源軟件或者免費軟件,而據(jù)Google的報告,開源軟件或者免費軟件的安全漏洞還是非常多,建議通過模糊測試的方法和工具,在引入開源軟件或者免費軟件的過程,做安全風(fēng)險評估。

??5、針對業(yè)務(wù)特點和系統(tǒng)特征,構(gòu)造模糊測試數(shù)據(jù)知識庫,提升模糊測試數(shù)據(jù)的針對性,通過人工智能優(yōu)化模糊測試數(shù)據(jù)生成和自動化執(zhí)行過程,構(gòu)建模糊測試平臺,提供安全測試的服務(wù)給分行或者行外客戶使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,083評論 4 61
  • 總是一副面具 由纖細白皙的手舉著 擋在臉前, 那輕輕舉著面具 的手腕 十分靈巧: 雖然有時 有點顫抖, 指尖抖動,...
    rudy1閱讀 415評論 0 1
  • 希望有一天,世上再沒有這么多的“形式”, 大家看到,聽到,表達的都是內(nèi)心最真摯的情感, 每一個人都能感受到愛,奉獻...
    蔣蔣你好吶閱讀 130評論 0 0
  • 云描淡寫春秋筆, 霹靂手段舞萬鈞, 漫卷雨,晚來急, 一掇心事,半湖水,盈盈淚, 伊人獨自憔悴, 殘荷斷藕,倒懸曰...
    賽騰煙閱讀 295評論 2 5
  • 【“我”是誰?】 “我是我——” 過往經(jīng)歷的組合 過往的信息能量 即是“我” 經(jīng)歷了“山” 就顯“山” 的氣質(zhì) 經(jīng)...
    寧靜的夏天陪你看海閱讀 84評論 0 0

友情鏈接更多精彩內(nèi)容