陶靜安
隨著社會(huì)的發(fā)展,黑客的技術(shù)水平越來越高,而在軟件方面,漏洞屬于一個(gè)不可避免的問題,這會(huì)導(dǎo)致黑客有機(jī)可趁,使數(shù)據(jù)信息受到破壞。在這種背景下,如何更快地發(fā)現(xiàn)軟件安全漏洞,并做好修復(fù)工作,是保證數(shù)據(jù)信息安全的一個(gè)有效手段。
1 軟件安全漏洞挖掘技術(shù)概述
1.1 漏洞概念
在任何軟件運(yùn)行的過程中,都會(huì)根據(jù)安全策略進(jìn)行一個(gè)安全域假定,也就是說這一域內(nèi)所有的操作都是可控且安全的,但是如果違反了安全策略或者超出了這一安全域,軟件運(yùn)行則會(huì)變?yōu)槲粗也豢煽氐?,而安全域在切換為非安全域的過程中,其觸發(fā)點(diǎn)就是漏洞。通俗點(diǎn)說,漏洞就是指由于安全域設(shè)計(jì)不合理所形成的軟件及系統(tǒng)破壞。正是由于這種漏洞的存在,使得計(jì)算機(jī)在未授權(quán)的情況下會(huì)被攻擊者訪問或破壞。一般來說,漏洞多數(shù)是被動(dòng)的、靜態(tài)的、可觸發(fā)的。
1.2 漏洞挖掘技術(shù)
在通過漏洞攻擊的過程中,主要可以分為三個(gè)步驟:漏洞挖掘、漏洞分析以及漏洞利用,由此可見漏洞挖掘?qū)儆诤髢蓚€(gè)步驟的基礎(chǔ)及前提,對(duì)網(wǎng)絡(luò)攻防有著非常重要的意義。所謂漏洞挖掘,主要是找尋漏洞,詳細(xì)點(diǎn)說就是該領(lǐng)域?qū)I(yè)人士使用各種綜合應(yīng)用工具以及技術(shù)盡最大可能找出軟件中存在的潛在漏洞,要想做好這一工作并不容易,這對(duì)于個(gè)人經(jīng)驗(yàn)有很大的依賴性。在實(shí)際的工作中,根據(jù)不同的分析對(duì)象,漏洞挖掘技術(shù)又可以分為基于源代碼漏洞挖掘技術(shù)以及基于目標(biāo)代碼漏洞挖掘技術(shù)。
2 當(dāng)前漏洞挖掘技術(shù)分析
當(dāng)前漏洞挖掘技術(shù)主要包括已知漏洞檢測(cè)以及位置漏洞補(bǔ)救這兩種,其中前者主要的作用在于發(fā)現(xiàn)系統(tǒng)中可能存在但是還沒有被發(fā)現(xiàn)的漏洞,在這方面主要又包括靜態(tài)分析、動(dòng)態(tài)檢測(cè)、安全掃描以及手工分析這幾種技術(shù)。其中,手工分析要求比較高,不僅需要安全分析人員對(duì)軟件漏洞原理有充分的了解,還要對(duì)軟件結(jié)構(gòu)及功能有比較深入的認(rèn)識(shí),而且即使?jié)M足了這兩點(diǎn)要求,其依然會(huì)耗費(fèi)很多的精力和時(shí)間,基于此,以下將主要對(duì)靜態(tài)分析以及動(dòng)態(tài)檢測(cè)進(jìn)行分析。
2.1 靜態(tài)分析
這種漏洞檢測(cè)技術(shù)不需要對(duì)程序進(jìn)行運(yùn)行,而且在沒有輸入的條件下就可以發(fā)現(xiàn)程序中存在的安全漏洞,因此在程序編寫階段,通過靜態(tài)漏洞挖掘技術(shù)就可以發(fā)現(xiàn)其中存在的問題,并在開發(fā)早期就消滅掉漏洞。
2.2 動(dòng)態(tài)檢測(cè)
所謂動(dòng)態(tài)檢測(cè),主要是在程序動(dòng)態(tài)運(yùn)行的時(shí)候?qū)浖写嬖诘穆┒催M(jìn)行檢測(cè),這不僅要求被測(cè)試目標(biāo)編譯為可執(zhí)行程序,而且在檢測(cè)的過程中還要提供相應(yīng)的輸入。具體來說,動(dòng)態(tài)檢測(cè)技術(shù)主要是利用操作系統(tǒng)所提供的雕飾接口以及資源監(jiān)視接口,來獲得目標(biāo)程序運(yùn)行過程中所需的運(yùn)行數(shù)據(jù)及運(yùn)行狀態(tài)。在當(dāng)前的動(dòng)態(tài)檢測(cè)技術(shù)中,比較常用的有數(shù)據(jù)流分析法以及環(huán)境錯(cuò)誤注入法。
2.3 動(dòng)態(tài)檢測(cè)以及靜態(tài)分析的對(duì)比
客觀來說,靜態(tài)分析以及動(dòng)態(tài)檢測(cè)都是我們經(jīng)常使用的檢測(cè)方法,其中,靜態(tài)分析由于在運(yùn)行過程中的數(shù)據(jù)比較缺乏,因此難以實(shí)現(xiàn)動(dòng)態(tài)測(cè)試細(xì)粒度的安全評(píng)估,無(wú)法對(duì)所有的安全漏洞都進(jìn)行確定,所以存在很多不足之處,不過其優(yōu)勢(shì)在于比較容易在開發(fā)過程中集成。
3 軟件安全漏洞挖掘流程分析
通過上文的分析我們可以看出,每種檢測(cè)方法都是存在缺陷的,我們要想真正地做好漏洞挖掘工作,就必須要在漏洞挖掘的不同環(huán)節(jié)使用不同的檢測(cè)方法,并根據(jù)具體的情況采取相應(yīng)的策略及方法,這樣才能將各種方法的優(yōu)勢(shì)發(fā)揮出來,并彌補(bǔ)其存在的不足。一般來說,漏洞挖掘的流程可以分為幾個(gè)環(huán)節(jié)。首先,初始化,這主要是將軟件類型分類,將開源和非開源軟件所使用的靜態(tài)分析方法確定下來。其次,反匯編,這主要是載入需要分析的程序,然后通過反匯編操作,實(shí)現(xiàn)對(duì)二進(jìn)制代碼的反匯編,并確定代碼中哪些屬于可執(zhí)行指令以及哪些屬于數(shù)據(jù)。第三,過程抽象,能夠識(shí)別可執(zhí)行指令之后,可以把其分為表示函數(shù)或者過程的組。第四,特征模式掃描,對(duì)于開軟軟件,我們通過編譯技術(shù)在編譯期間或者代碼掃描期間確定一些信息,根據(jù)這些信息檢查漏洞模型。至于非開源軟件的靜態(tài)分析,則可以通過之下而上的分析方法對(duì)調(diào)用二進(jìn)制文件的庫(kù)函數(shù)等進(jìn)行檢查,得到漏洞驗(yàn)證代碼。第五,驗(yàn)證漏洞特性,這主要是比較漏洞特征庫(kù)以及疑似漏洞驗(yàn)證代碼,并對(duì)其中是否含有惡意行為進(jìn)行判斷,得到檢測(cè)報(bào)告。第六,注入錯(cuò)誤環(huán)境,對(duì)需要注入的錯(cuò)誤環(huán)境數(shù)據(jù)進(jìn)行構(gòu)造,并利用其干擾程序運(yùn)行。第七,動(dòng)態(tài)檢測(cè),系統(tǒng)自動(dòng)地對(duì)程序所有函數(shù)序列以及特定函數(shù)序列進(jìn)行分析,并對(duì)可能存在的漏洞數(shù)目進(jìn)行估算,得到檢測(cè)報(bào)告。第八,檢測(cè)評(píng)估,根據(jù)所得報(bào)告信息,確認(rèn)它們共同提出的疑似漏洞,并對(duì)其他疑似漏洞進(jìn)行下一步分析。
4 軟件安全漏洞挖掘技術(shù)的發(fā)展方向
首先,測(cè)試平臺(tái)的可擴(kuò)展性以及通用性將越來越強(qiáng),這是因?yàn)榘殡S著測(cè)試對(duì)象的增多,一個(gè)可擴(kuò)展性及通用性比較強(qiáng)的平臺(tái)對(duì)這一技術(shù)的發(fā)展有非常重要的提升效果。具體來說,這種平臺(tái)要具備以下幾個(gè)方面的特點(diǎn):首先,能夠產(chǎn)生多種格式并最好是有效的畸形測(cè)試數(shù)據(jù);具有可定制以及獨(dú)立的數(shù)據(jù)產(chǎn)生變異功能;具有可操作跟蹤調(diào)試功能;能夠?qū)Χ嗄K之間的自動(dòng)化運(yùn)行進(jìn)行很好的協(xié)調(diào)。其次,以fuzzing測(cè)試技術(shù)為例,由于在fuzzing測(cè)試過程中,很大一部分時(shí)間都用在輸入數(shù)據(jù)格式、程序狀態(tài)轉(zhuǎn)換的人工分析上。因此提高知識(shí)獲取自動(dòng)化程度對(duì)于提升測(cè)試效率非常有利,是未來的發(fā)展方向。第三,多維測(cè)試用例生成技術(shù)。當(dāng)前很多測(cè)試用例生成技術(shù)都是一維的,這容易使很多安全漏洞不能夠被有效地檢測(cè)出來。而如果使用多為測(cè)試用例生成技術(shù)雖然會(huì)拓寬其測(cè)試范圍,但也容易導(dǎo)致狀態(tài)爆炸問題,因此,多維測(cè)試用例生成技術(shù)的研究是未來的一個(gè)重點(diǎn)。同樣,智能測(cè)試用例生成技術(shù)也是未來的一個(gè)重點(diǎn)。第四,測(cè)試效果評(píng)估技術(shù),當(dāng)前的很多測(cè)試使用代碼覆蓋率對(duì)測(cè)試效果進(jìn)行評(píng)估,這存在著很大的不合理性。因此未來測(cè)試效果將從程序狀態(tài)的覆蓋率、測(cè)試數(shù)據(jù)的有效性以及輸入邊界測(cè)試的充分性等多個(gè)方面對(duì)測(cè)試效果進(jìn)行評(píng)估。
總之,軟件安全漏洞挖掘技術(shù)的研究是一個(gè)很寬泛的研究,本文限于篇幅,很多地方難以涉及并深入。因此,在我們的日常工作中應(yīng)加強(qiáng)這方面的探索和研究,只有不斷提升我們的技術(shù)水平,才能真正為信息數(shù)據(jù)的安全起到保障作用。
參考文獻(xiàn)
[1]文偉平.軟件安全漏洞挖掘的研究思路及發(fā)展趨勢(shì)[J]. 信息網(wǎng)絡(luò)安全. 2009(10).
[2]遲強(qiáng). 漏洞挖掘分析技術(shù)綜述[J]. 計(jì)算機(jī)與信息技術(shù). 2009(Z2).
[3]徐有福. 基于漏洞模型檢測(cè)的安全漏洞挖掘方法研究[J].信息網(wǎng)絡(luò)安全. 2011(08).
[4]夏建軍,孫樂昌,劉京菊,張旻,蔡銘. 基于多維Fuzzing的緩沖區(qū)溢出漏洞挖掘技術(shù)研究[J]. 計(jì)算機(jī)應(yīng)用研究.