郭連城
摘 要:目前,漏洞挖掘技術(shù)在信息安全領(lǐng)域中日趨重要。文章從漏洞的概念出發(fā),對漏洞挖掘的含義、作用以及主要技術(shù)進(jìn)行了分析與探討,并總結(jié)了漏洞挖掘技術(shù)未來的發(fā)展方向。
關(guān)鍵詞:漏洞挖掘;手工測試技術(shù);FUZZING技術(shù);動(dòng)態(tài)分析技術(shù);靜態(tài)分析技術(shù)
1 漏洞
1.1 漏洞的概念
漏洞是指計(jì)算機(jī)系統(tǒng)或軟件中的安全缺陷,這些安全缺陷包括功能缺陷或邏輯缺陷,對計(jì)算機(jī)系統(tǒng)的安全性具有潛在的威脅。漏洞的存在范圍很廣泛,在計(jì)算機(jī)系統(tǒng)的硬件、軟件或網(wǎng)絡(luò)通信協(xié)議上都有所體現(xiàn)。
1.2 漏洞的特性
1.2.1 必然性
漏洞的存在對于計(jì)算機(jī)系統(tǒng)或軟件是客觀存在、不可避免的,其根本原因在于系統(tǒng)或軟件在實(shí)現(xiàn)過程中存在的非正常問題,具體因素可包括編程代碼疏忽、軟件安全機(jī)制規(guī)劃出錯(cuò)。由于計(jì)算機(jī)系統(tǒng)或軟件的天然脆弱性,所以漏洞也是必然存在的。
1.2.2 長期性
隨著計(jì)算機(jī)系統(tǒng)或軟件的投入使用,已有的漏洞會(huì)隨著用戶的使用暴露出來。當(dāng)系統(tǒng)或軟件開發(fā)商推出補(bǔ)丁修正漏洞時(shí),同時(shí)也可能導(dǎo)致程序出現(xiàn)新的安全漏洞。因此,在系統(tǒng)或軟件的整個(gè)使用過程中,總是會(huì)出現(xiàn)舊有漏洞被修復(fù),而新漏洞不斷出現(xiàn)的問題。因此,可以說漏洞在系統(tǒng)中的存在是長期性的。
1.3 危害性
漏洞的存在容易對計(jì)算機(jī)系統(tǒng)造成損害。攻擊者可以利用計(jì)算機(jī)系統(tǒng)或軟件的漏洞進(jìn)行攻擊行動(dòng),使運(yùn)行有漏洞的系統(tǒng)或軟件的計(jì)算機(jī)用戶的資料、數(shù)據(jù)被篡改或破壞,造成隱私泄露或經(jīng)濟(jì)損失??傊?,漏洞的危害性是客觀存在的。
2漏洞挖掘
2.1 漏洞挖掘的概念
漏洞挖掘是指查找目標(biāo)系統(tǒng)中可能存在的漏洞,在這個(gè)過程中,需要運(yùn)用多種計(jì)算機(jī)技術(shù)和工具。根據(jù)挖掘?qū)ο蟮牟煌┒赐诰蛞话憧梢苑譃閮纱箢悾椿谠创a的漏洞挖掘和基于目標(biāo)代碼的漏洞挖掘。對于基于源代碼的漏洞挖掘來說,首先要獲取系統(tǒng)或軟件的源代碼程序,采取靜態(tài)分析或動(dòng)態(tài)調(diào)試的方式查找其中可能存在的安全隱患。但大多數(shù)商業(yè)軟件的源代碼很難獲得,一般只有一些開源系統(tǒng)能為挖掘者提供源碼,如LINUX系統(tǒng),所以目前基于源代碼的挖掘一般都是LINUX系統(tǒng)及其開源軟件。對于不能提供源碼的系統(tǒng)或軟件而言,只能采用基于目標(biāo)代碼的漏洞挖掘方法,該方法一般涉及程序編譯器、計(jì)算機(jī)硬件指令系統(tǒng)、可執(zhí)行文件格式等方面的分析技術(shù),實(shí)現(xiàn)難度較大。
2.2 漏洞挖掘的作用
由于漏洞的必然存在性和危害性,所以漏洞挖掘是十分必要并有益的。因?yàn)橐坏┕粽甙l(fā)現(xiàn)系統(tǒng)中存在的嚴(yán)重漏洞,就可能迅速開展攻擊行動(dòng),從而對計(jì)算機(jī)系統(tǒng)進(jìn)行非法訪問或破壞。先于攻擊者發(fā)現(xiàn)并及時(shí)修補(bǔ)漏洞可有效減少來自網(wǎng)絡(luò)的威脅。因此主動(dòng)發(fā)掘并分析系統(tǒng)安全漏洞,對網(wǎng)絡(luò)安全具有重要的意義。
3 漏洞挖掘的主要技術(shù)
3.1 手工測試技術(shù)
手工測試就是通過人的手工方式向測試的目標(biāo)系統(tǒng)或軟件發(fā)送特殊的數(shù)據(jù),這些數(shù)據(jù)包括正確的或錯(cuò)誤的輸入,在發(fā)送數(shù)據(jù)后,通過觀察測試目標(biāo)對輸入數(shù)據(jù)的反應(yīng)來查找系統(tǒng)中可能存在的漏洞。該方式不需要額外的輔助測試軟件,可由漏洞測試者獨(dú)立完成,具有實(shí)現(xiàn)簡單、結(jié)果直觀的優(yōu)點(diǎn),但是局限性也很大,主要表現(xiàn)為效率不高、對測試者的個(gè)人技術(shù)水平依賴較大等方面,所以手工測試一般適用于簡單、小型、直觀的系統(tǒng)或軟件。
3.2 FUZZING技術(shù)
Fuzzing技術(shù)的實(shí)現(xiàn)原理是軟件工程中的黑盒測試思想,其主要方法是使用大量的數(shù)據(jù)作為應(yīng)用系統(tǒng)或軟件的輸入,以目標(biāo)對象接受輸入后是否出現(xiàn)異常為標(biāo)志,來查找目標(biāo)系統(tǒng)中可能存在的安全漏洞。Fuzzing方法所使用的半有效數(shù)據(jù)一般由特定的工具來生成,這些數(shù)據(jù)其必要標(biāo)識(shí)和大部分?jǐn)?shù)據(jù)是有效的,但在邏輯方面存在一定錯(cuò)誤,能夠?qū)е聭?yīng)用系統(tǒng)或軟件的崩潰,從而發(fā)現(xiàn)安全問題所在。
Fuzzing技術(shù)的思想較為簡單,易于理解與應(yīng)用,具有漏洞重現(xiàn)容易、誤報(bào)率低的優(yōu)點(diǎn),但其同時(shí)也具有黑盒測試技術(shù)的一些缺點(diǎn),比如數(shù)據(jù)格式不通用、構(gòu)造測試周期長等問題??偟膩碚f,F(xiàn)uzzing技術(shù)在漏洞挖掘方面的應(yīng)用越來越廣泛,現(xiàn)有漏洞大多數(shù)是由Fuzzing方式挖掘而出的。
3.3 動(dòng)態(tài)分析技術(shù)
動(dòng)態(tài)分析技術(shù)是指在目標(biāo)系統(tǒng)或軟件的動(dòng)態(tài)運(yùn)行中查找漏洞的技術(shù)。其主要思想是在特定的容器中運(yùn)行目標(biāo)程序,通過目標(biāo)程序在執(zhí)行過程中的狀態(tài)信息來發(fā)現(xiàn)有潛在問題,這些狀態(tài)信息包括當(dāng)前內(nèi)存使用狀況、CPU寄存器的值等方面。在具體實(shí)現(xiàn)過程中,動(dòng)態(tài)分析主要從代碼流和數(shù)據(jù)流兩方面進(jìn)行操作。對于代碼流,主要是通過設(shè)置程序運(yùn)行斷點(diǎn)來跟蹤系統(tǒng)運(yùn)行狀態(tài),分析對象主要是有安全缺陷的函數(shù)或函數(shù)參數(shù);對于數(shù)據(jù)流,主要是進(jìn)行特殊數(shù)據(jù)的構(gòu)造,也是采用半有效的數(shù)據(jù)進(jìn)行輸入。動(dòng)態(tài)分析技術(shù)的關(guān)鍵是容納程序運(yùn)行的容器,也就是動(dòng)態(tài)調(diào)試器工具,常見的動(dòng)態(tài)調(diào)試器工具有SoftIce、OllyDbg、WinDbg等工具。
動(dòng)態(tài)分析技術(shù)具有較高的漏洞查找準(zhǔn)確率,由于是在程序運(yùn)行中查找錯(cuò)誤,可以說具有較高的說服力和準(zhǔn)確性。動(dòng)態(tài)分析技術(shù)具有準(zhǔn)確率高的優(yōu)點(diǎn),但同時(shí)也有操作復(fù)雜、對測試人員要求高的缺點(diǎn),并且利用動(dòng)態(tài)分析的方式查找漏洞的周期可能較長,不容易找到分析點(diǎn),因此動(dòng)態(tài)分析技術(shù)往往運(yùn)用于一些商業(yè)軟件的測試當(dāng)中。
3.4 靜態(tài)分析技術(shù)
靜態(tài)分析是通過程序的語法、語義來檢測目標(biāo)中可能潛在的安全問題。其基本思想是對測試的目標(biāo)系統(tǒng)或軟件的源代碼進(jìn)行靜態(tài)分析、掃描,重點(diǎn)是檢查函數(shù)的調(diào)用、邊界檢測和緩沖區(qū)檢測,也就是對容易在安全方面出現(xiàn)漏洞的代碼進(jìn)行重點(diǎn)的查找、分析,以期能夠發(fā)現(xiàn)問題。
靜態(tài)分析技術(shù)需要依賴源程序,因些它的操作人員往往是軟件開發(fā)商或被授權(quán)的第三方測試人員,其主要意義是在目標(biāo)系統(tǒng)開發(fā)的早期階段發(fā)現(xiàn)問題并解決。但在靜態(tài)分析的過程中,容易出現(xiàn)誤報(bào),因?yàn)樵趯?shí)際掃描與測試的過程中,靜態(tài)分析工具自身的不完善容易導(dǎo)致漏洞測試結(jié)果的不可信。因此,良好、可信的測試工具對靜態(tài)分析技術(shù)十分重要。
3.5 補(bǔ)丁比較技術(shù)
補(bǔ)丁比較也稱之為二進(jìn)制文件比較技術(shù),在漏洞挖掘中往往是指對“已知”漏洞的探查。這里的“已知”指的是軟件的開發(fā)商對自己的軟件推出漏洞修復(fù)丁或版本升級(jí)程序,對比打上補(bǔ)丁前后的二進(jìn)制文件,有經(jīng)驗(yàn)的安全專家就能在較短時(shí)間內(nèi)對未升級(jí)前的程序中的漏洞進(jìn)行準(zhǔn)確定位。
補(bǔ)丁比較技術(shù)是實(shí)際的漏洞挖掘中運(yùn)用得十分普遍,對于定位漏洞的具體位置、尋找漏洞解決方式具有十分積極的現(xiàn)實(shí)意義。
4 漏洞挖掘技術(shù)的發(fā)展趨勢
4.1 運(yùn)算并行化
由于漏洞挖掘越來越復(fù)雜,因此需要大量的計(jì)算機(jī)運(yùn)算。所以,漏洞挖掘的運(yùn)算并行化已經(jīng)勢在必行。新的技術(shù),如云計(jì)算等技術(shù)為并行技術(shù)的運(yùn)用提供了實(shí)現(xiàn)的基礎(chǔ)。
4.2 智能化挖掘
漏洞存在的方式呈現(xiàn)出多樣化的特點(diǎn),目前盡管已經(jīng)有智能體、神經(jīng)網(wǎng)絡(luò)等新的識(shí)別技術(shù),但智能化的挖掘還需要進(jìn)一步的發(fā)展才能適應(yīng)不斷發(fā)展的漏洞挖掘需求。
4.3 綜合的漏洞挖掘方案
現(xiàn)在,單一的漏洞挖掘技術(shù)已經(jīng)越來越難挖掘日益復(fù)雜、隱蔽的系統(tǒng)漏洞,因此,漏洞挖掘技術(shù)的綜合化成為未來漏洞挖掘的一個(gè)重要方向,如靜態(tài)分析與動(dòng)態(tài)分析、FUZZING技術(shù)的結(jié)合。
參考文獻(xiàn)
[1]Jon Erickson .黑客之道:漏洞發(fā)掘的藝術(shù)[M].中國水利水電出版社,2009.
[2]王清.0day安全:軟件漏洞分析技術(shù)(第2版)[M].電子工業(yè)出版社,2011.
[3]王繼剛.暗戰(zhàn)亮劍-軟件漏洞發(fā)掘與安全防范實(shí)戰(zhàn)[M].人民郵電出版社,2010.
[4]文偉平,等.軟件安全漏洞挖掘的研究思路及發(fā)展趨勢[J].信息網(wǎng)絡(luò)安全,2009.