【摘要】 現(xiàn)階段,信息技術正呈現(xiàn)著迅猛的發(fā)展趨勢,軟件所提供的功能也日益豐富,源代碼數(shù)量也越來越多。在這樣的情形之下,源代碼當中的漏洞消除工作愈發(fā)困難,不少不法分子利用源代碼中的漏洞來破壞或入侵系統(tǒng)。目前信息安全逐漸受到人們的重視,根據(jù)相關資料得知,近些年來漏洞數(shù)量大幅度增加,已經(jīng)造成了較大的財產(chǎn)損失。本文圍繞漏洞的概念以及相關特征、計算機安全漏洞研究技術分類兩個方面展開討論,對靜態(tài)檢測技術、動態(tài)檢測技術以及混合檢測技術進行了逐一介紹,并針對這三種計算機安全安全漏洞檢測技術的優(yōu)劣之處進行了對比與分析,與此同時提出了一些筆者自己的見解,希望能夠對今后的計算機安全漏洞檢測工作提供一些理論建議。
【關鍵詞】 計算機 安全漏洞 檢測技術
現(xiàn)如今,信息技術取得了迅猛發(fā)展,軟件所提供的功能也日益豐富,源代碼數(shù)量也越來越多。在這樣的情形之下,源代碼當中的漏洞消除工作愈發(fā)困難,不少不法分子利用源代碼中的漏洞來破壞或入侵系統(tǒng)。目前信息安全逐漸受到人們的重視,根據(jù)相關資料得知,近些年來漏洞數(shù)量大幅度增加,已經(jīng)造成了較大的財產(chǎn)損失。黑客們的攻擊手段不斷更新,提升漏洞挖掘技術水平刻不容緩。
一、漏洞的概念以及相關特征
(一)漏洞的基本概念
漏洞主要是指一個系統(tǒng)中存在的缺陷或是弱點,這些缺陷使得系統(tǒng)缺乏對某種危險的抵抗力,可能導致系統(tǒng)被攻擊威脅。由于開發(fā)人員人為的過錯導致軟件在設計和實現(xiàn)過程中出現(xiàn)紕漏,從而產(chǎn)生了軟件漏洞。一般可以將漏洞分成兩種類型,分別是功能性邏輯漏洞與安全性邏輯漏洞。前者會對軟件的正常運行造成影響,比方說執(zhí)行流程不正確或者執(zhí)行結果不正確等。后者不會破壞軟件的運行功能,不過如果黑客找到這一漏洞并加以利用的話,很可能會使得軟件出現(xiàn)運行錯誤的情況,甚至被黑客植入惡意代碼,這類漏洞通常是指SQL注入漏洞以及緩沖區(qū)溢出漏洞等。
(二)漏洞的基本特征
漏洞主要具備下列幾種特征:
1、開發(fā)人員在編程里經(jīng)常會出現(xiàn)一些邏輯錯誤,這類錯誤通常是由開發(fā)人員的大意造成的;
2、數(shù)據(jù)處理過程中出現(xiàn)邏輯錯誤,數(shù)據(jù)處理相對數(shù)值計算而言對邏輯的要求更高,涉及到許多大小不同的程序模塊,因此操作起來容易出現(xiàn)錯誤;
3、漏洞與所處的系統(tǒng)環(huán)境有著較大的關聯(lián)。對于不同種類的軟件設備以及硬件設備而言,有很多種情況都會導致安全漏洞的出現(xiàn),例如設備相同但是版本不一樣,不同設備所組成的各類系統(tǒng),以及相同系統(tǒng)的設置條件不相同,均有可能出現(xiàn)安全漏洞;
4、漏洞與時間有著較大的關聯(lián)。在運行的過程中,開發(fā)人員通過檢查會發(fā)現(xiàn)漏洞并進行修補,但是也可能會有新的漏洞出現(xiàn),所以漏洞是一直存在的。
二、計算機安全漏洞研究技術分類
我們可以根據(jù)研究對象的不同,將漏洞挖掘技術分成三個類型,分別為依托源代碼的漏洞挖掘技術、依托目標代碼的漏洞挖掘技術以及混合式漏洞挖掘技術。其中,依托源代碼的漏洞挖掘技術我們常常將它稱作靜態(tài)檢測技術,主要是借助分析源代碼這一方式來識別出軟件中隱藏的各種漏洞。而依托目標代碼的漏洞挖掘技術我們也常常將其稱之為動態(tài)監(jiān)測技術,首先我們必須針對分析對象程序實施反匯編處理,從而獲得匯編代碼;隨后再針對得到的匯編代碼實施分析,從而來驗證漏洞有無存在?;旌下┒赐诰蚣夹g主要是將動態(tài)檢測技術與靜態(tài)檢測技術結合在一起,將兩者的優(yōu)勢進行充分發(fā)揮,從而更好地識別系統(tǒng)漏洞。下面,筆者就針對這三種計算機安全漏洞檢測技術進行一一介紹。
(一)靜態(tài)檢測技術
靜態(tài)檢測技術實際上能夠借助手工方式或者是源代碼分析工具來輔助實現(xiàn),它主要是針對各種跳轉條件、源代碼結構等數(shù)據(jù)實施分析,在此基礎上挖掘目標代碼中隱藏的不安全漏洞。例如,我們可以對源代碼當中的PRINTF等函數(shù)實施監(jiān)測,確認有無針對它的使用條件進行了規(guī)定,有無針對邊界條件實施檢查等?,F(xiàn)代軟件源代碼數(shù)量非常巨大,我們僅僅通過人工操作很難實現(xiàn)對它的全面審計。靜態(tài)分析技術的特點包括以下幾個方面:“首先,借助工具對源代碼實施掃描,具有極高的檢測效率,分析速度極快;第二,這一技術能夠對不同的測試條件進行設置,從而達到代碼全方位掃描這一目的;第三,靜態(tài)檢測技術能夠在項目開發(fā)階段中來實施挖掘處理步驟,從而對系統(tǒng)中可能存在的不安全漏洞進行修復。然而這一檢測方法的基礎為確保源代碼的獲取,此外還應針對目標代碼進行分析以及編譯處理。另一方面,靜態(tài)檢測技術是依托一定的規(guī)律來實施分析的,所以說必須針對源代碼構建一個規(guī)則庫以及特征庫。在漏洞數(shù)量的不斷增加下,特征庫也正在逐漸地擴大,從而使檢測效率隨之降低。由于靜態(tài)檢測技術是按照特征庫中的內(nèi)容來實現(xiàn)分析判斷的,所以說往往會出現(xiàn)一些漏洞。
在文獻五當中,作者將靜態(tài)檢測技術分成了三個類型,分別為詞法分析、規(guī)則檢查以及類型推導。其中,詞法分析技術最初是從BMAT技術中延伸而來的,這一方法通常只能針對語法實施確認,判斷愈發(fā)當中有無漏洞隱藏,若判斷結果顯示存在漏洞,那么久需要根據(jù)知識庫來作出下一步的判斷。規(guī)則檢查是依靠檢查程序編制規(guī)則來確認程序中有無隱藏漏洞,例如C語言當中有無針對變量實施初始化處理等。檢查規(guī)則主要是針對所有規(guī)則通過特定的語法進行描述,隨后再把這些程序行為放在一起進行對比。類型推導是對程序當中存在的變量進行推導,以此為基礎來判斷變量以及函數(shù)的訪問與規(guī)則是否匹配。
(二)動態(tài)檢測技術
在對漏洞進行檢測的實際過程中,除了開源軟件之外,其它軟件都難以取得系統(tǒng)當中的源代碼,這一現(xiàn)象極大地阻礙了靜態(tài)檢測技術的有效發(fā)展與應用,動態(tài)檢測技術的推出有效地解決了這一問題。它是通過建設非標準輸入數(shù)據(jù)來對運行軟件系統(tǒng)進行調(diào)試,并依據(jù)系統(tǒng)的實際功能以及數(shù)據(jù)的轉移方向來對運行結果實施檢查,從而判斷被測軟件系統(tǒng)中有無存在漏洞。動態(tài)檢測技術在一般情況下都是將輸入接口以及運行環(huán)境來作為出發(fā)點,對系統(tǒng)中隱藏的漏洞進行檢測與排查。雖說動態(tài)檢測方式相比于靜態(tài)檢測方式來說具有很多優(yōu)勢,如準確率高、然而這一檢測技術的效率卻相對較低,這是由于各種軟件系統(tǒng)本身的功能以及流程都具有一定的差異,因此無法像靜態(tài)檢測技術一般來實施統(tǒng)一化掃描,而是應該面向軟件系統(tǒng)中包含的功能來實施動態(tài)化掃描,因此就必然會導致一些效率的損傷。此外,動態(tài)監(jiān)測方式只能對漏洞存在的范圍來進行判斷,在后續(xù)還需實施持續(xù)的跟蹤以及處理,必須依據(jù)豐富的經(jīng)驗才可能完全確定漏洞的種類以及性質,所以這一檢測方式基本無法在大規(guī)模軟件中進行應用。
在文獻八當中提出了一種將動態(tài)技術以及靜態(tài)技術聯(lián)合起來形成的二進制漏洞挖掘檢測方式,這一檢測方式主要是通過對二進制文件實施反編譯,從而獲得偽源代碼,隨后在此基礎上設計一種虛擬執(zhí)行環(huán)境,并通過這一虛擬的執(zhí)行環(huán)境來對指令的執(zhí)行情況進行實時跟蹤,持續(xù)監(jiān)測寄存器的變化狀態(tài),從而解決指針別名方面存在的問題。通過對虛擬執(zhí)行環(huán)境當中每一個訪存地址的記錄來統(tǒng)計出這些地址的變量情況,從而解決變量識別精確性這一問題。
(三)混合檢測技術
靜態(tài)檢測技術必須依托目標程序中的源代碼才能實現(xiàn),此外還存在檢測工作量大、錯誤率高等不足,然而動態(tài)檢測技術雖然在這些問題上有所改善,卻也存在著一些缺陷,例如覆蓋率不高、檢測效率低下等?;谏鲜霈F(xiàn)象,這幾年,混合檢測技術在計算機安全漏洞檢測領域中迅速崛起,這一檢測技術將靜態(tài)檢測技術以及動態(tài)監(jiān)測技術的優(yōu)勢提取出來并進行結合,它既解決了靜態(tài)檢測技術當中不足之處,同時也避免了動態(tài)檢測技術的缺點,使檢測效率以及準確率同時得到了提升?;旌蠙z測技術與動態(tài)檢測技術的表現(xiàn)形式基本相同,只不過在混合檢測技術當中,測試者會依據(jù)程序的先驗知識,在測試過程中對測試對象實施具有針對性的設計。這一測試方法能夠迅速準確地提取出數(shù)據(jù)流中感興趣的情況來實施測試,因此檢測效率超出動態(tài)檢測技術。
現(xiàn)階段,混合檢測技術主要還是依靠自動化漏洞挖掘器來實現(xiàn)的,也就是我們常用的FUZZING檢測技術。漏洞挖掘器首先會針對目標軟件所處的運行環(huán)境、具備的功能以及接口等內(nèi)容實施分析,以此為基礎來建立畸形數(shù)據(jù),并形成測試用例。隨后借助接口來對測試用例進行傳遞。最后,利用監(jiān)控工具對運行程序實施監(jiān)控,若程序在運行過程中發(fā)生異?,F(xiàn)象,那么則需要對異常現(xiàn)象進行記錄同時對異常信息實施進一步分析。不同的漏洞挖掘器的構架以及挖掘方式會隨著挖掘對象的不同而發(fā)生改變?,F(xiàn)階段,最常見的挖掘器包括文件漏洞挖掘器、FTP漏洞挖掘器、網(wǎng)頁漏洞挖掘器等。
結束語
在本文中,筆者針對靜態(tài)檢測技術、動態(tài)檢測技術以及混合檢測技術三種漏洞檢測技術進行了一一介紹,同時還分析了這三種技術所具備的優(yōu)勢和劣勢。由于每一種漏洞檢測技術所面向的研究對象是不同的,因此他們的優(yōu)點與缺點也存在一些差異。靜態(tài)檢測技術具有分析效率高、覆蓋面廣等優(yōu)勢,卻存在錯誤率高的缺陷;動態(tài)監(jiān)測技術雖然具有較高的檢測準確率,然而它的檢測卻不能覆蓋整個程序,且檢測效率較低;混合檢測技術則巧妙地避免了動態(tài)監(jiān)測技術以及靜態(tài)檢測技術的缺陷,并在此基礎上實施了一定的改善,但是由于受到現(xiàn)階段檢測技術的局限性,在混合檢測技術使用過程中仍然需要完善一些地方:首先,后門以及訪問控制缺陷的檢測難度較大,由于后門以及訪問控制等缺陷通常不會導致系統(tǒng)陷入異常,并且在邏輯上難以進行辨別,因此通過常規(guī)的漏洞檢測技術基本無法識別出后門以及邏輯上存在的缺陷;其次,檢測過程很難完全實現(xiàn)自動化檢測,現(xiàn)階段,F(xiàn)UZZING技術在應用過程中必須基于豐富的經(jīng)驗來對測試用例進行創(chuàng)建以及設計,此外即使能夠通過自動化檢測方式來獲得結果,在后續(xù)仍然需要根據(jù)經(jīng)驗來對這些檢測結果展開進一步分析,從而來確認有無漏洞存在以及在今后如何進行改善。
參考文獻
[1] 王勇,王婷婷. 基于故障注入的信息系統(tǒng)安全漏洞檢測技術研究[A]. 中國計算機學會計算機安全專業(yè)委員會.全國計算機安全學術交流會論文集(第二十三卷)[C].中國計算機學會計算機安全專業(yè)委員會:,2008:5.
[2] 潘古兵,周彥暉,革遜. 等級保護安全建設技術改進的Web數(shù)據(jù)驗證漏洞檢測方法[A]. 公安部第三研究所.第二屆全國信息安全等級保護技術大會會議論文集[C].公安部第三研究所:,2013:4.
[3] 李曉南. 基于數(shù)據(jù)綜合分析的軟件安全漏洞靜態(tài)檢測平臺設計與實現(xiàn)[D].電子科技大學,2011.
[4] 楊光,印桂生,文齊. 一種基于漏洞檢測技術的網(wǎng)絡安全評估系統(tǒng)[A]. 2006北京地區(qū)高校研究生學術交流會——通信與信息技術組委會、中國電子學會信息論分會、北京郵電大學研究生院.2006北京地區(qū)高校研究生學術交流會——通信與信息技術會議論文集(下)[C].2006北京地區(qū)高校研究生學術交流會——通信與信息技術組委會、中國電子學會信息論分會、北京郵電大學研究生院:,2006:5.
[5] 張云峰,于順安. 企業(yè)安全管理的心理漏洞及解決方法——計算機和網(wǎng)絡技術在企業(yè)安全管理中的關鍵作用[J]. 中國信息界,2011,07:75-77.
[6] 2010年全國信息網(wǎng)絡安全狀況與計算機及移動終端病毒疫情調(diào)查分析報告[J]. 信息網(wǎng)絡安全,2011,11:94-96.
[7] 高翔. 網(wǎng)絡安全檢測關鍵技術研究[D].西北工業(yè)大學,2004.
[8] 金頂云,朱建彬,王金永. 計算機軟件安全檢測技術探析[J]. 電子技術與軟件工程,2016,14:204.