公務員期刊網(wǎng) 論文中心 正文

計算機漏洞檢測分析

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了計算機漏洞檢測分析范文,希望能給你帶來靈感和參考,敬請閱讀。

計算機漏洞檢測分析

1漏洞的定義與特點

可以將漏洞定義為存在于一個系統(tǒng)內的弱點或缺陷,這些弱點或缺陷導致系統(tǒng)對某一特定的威脅攻擊或危險事件具有敏感性,或具有進行攻擊威脅的可能性[1]。軟件漏洞產(chǎn)生通常是由于在軟件的設計和實現(xiàn)中由于開發(fā)人員有意或無意的失誤造成是系統(tǒng)潛在的不安全性。漏洞可以劃分為功能性邏輯漏洞和安全性邏輯漏洞。功能性邏輯漏洞是指影響軟件的正常功能,例如執(zhí)行結果錯誤、執(zhí)行流程錯誤等。安全性邏輯漏洞是指通常情況下不影響軟件的正常功能,但如果漏洞被攻擊者成功利用后,有可能造成軟件運行錯誤甚至執(zhí)行惡意代碼,例如緩沖區(qū)溢出漏洞、網(wǎng)站中的跨站腳本漏洞(XSS)、SQL注入漏洞等[2]。

漏洞具有以下特點:1)編程過程中出現(xiàn)邏輯錯誤是很普遍的現(xiàn)象,這些錯誤絕大多數(shù)都是由于疏忽造成的;2)數(shù)據(jù)處理(例如對變量賦值)比數(shù)值計算更容易出現(xiàn)邏輯錯誤,過小和過大的程序模塊都比中等程序模塊更容易出現(xiàn)錯誤;3)漏洞和具體的系統(tǒng)環(huán)境密切相關。在不同種類的軟、硬件設備中,同種設備的不同版本之間,由不同設備構成的不同系統(tǒng)之間,以及同種系統(tǒng)在不同的設置條件下,都會存在各自不同的安全漏洞問題;4)漏洞問題與時間緊密相關。隨著時間的推移,舊的漏洞會不斷得到修補或糾正,新的漏洞會不斷出現(xiàn),因而漏洞問題會長期存在[3]。

2漏洞研究技術分類

根據(jù)研究對象的不同,漏洞挖掘技術可以分為基于源代碼的漏洞挖掘技術、基于目標代碼的漏洞挖掘技術和混合漏洞挖掘技術三大類。基于源代碼的漏洞挖掘又稱為靜態(tài)檢測,是通過對源代碼的分析,找到軟件中存在的漏洞?;谀繕舜a的漏洞挖掘又稱為動態(tài)檢測,首先將要分析的目標程序進行反匯編,得到匯編代碼;然后對匯編代碼進行分析,來判斷是否存在漏洞。混合漏洞挖掘技術是結合靜態(tài)檢測和動態(tài)檢測的優(yōu)點,對目標程序進行漏洞挖掘。

2.1靜態(tài)檢測技術

靜態(tài)檢測技術可以通過手工或源代碼分析工具輔助完成,主要針對源代碼結構、跳轉條件、邊界條件、調用函數(shù)等進行分析,查找目標代碼中的不安全因素。例如,可以檢查源代碼中的Printf之類函數(shù),檢查是否對其使用條件進行了限定,是否對邊界條件進行了檢查。由于現(xiàn)代軟件源代碼數(shù)量龐大,不可能完全對其進行人工審計。靜態(tài)分析技術具有以下特點[4]:首先,通過工具對源代碼進行掃描,靜態(tài)檢測技術效率高,分析速度快;其次,靜態(tài)檢測技術可以通過設置不同的測試條件實現(xiàn)對代碼的全面掃描;再次,靜態(tài)檢測技術可以在一些開源項目或在項目開發(fā)階段進行挖掘,及時修復系統(tǒng)中存在的漏洞。但這種方法必須獲得源代碼,并且需對目標代碼進行分析、編譯等。另一方面靜態(tài)檢測技術是通過對源代碼依據(jù)一定規(guī)則分析來實現(xiàn),因此要建立源代碼的特征庫和規(guī)則庫。隨著漏洞數(shù)量的增加,特征庫也隨之不斷擴大,繼而帶來檢測效率不斷降低。由于靜態(tài)檢測技術是依據(jù)特征庫來進行分析判斷,因此存在誤報和漏報的情況。文獻[5]中,將靜態(tài)檢測技術分為詞法分析、規(guī)則檢查和類型推導。詞法分析技術最早出現(xiàn)于BMAT技術中,這種方法只對語法進行檢查,判斷詞法中是否存在漏洞,如果存在則根據(jù)知識庫進行進一步判斷。規(guī)則檢查通過檢查程序編制規(guī)則來判斷程序是否存在漏洞,如C語言中是否對變量進行了初始化。規(guī)則檢查將這些規(guī)則以特定語法描述,然后再將程序行為進行比對檢測。類型推導通過推導程序中變量和函數(shù)類型,來判斷變量和函數(shù)的訪問是否符合類型規(guī)則。基于類型推導的靜態(tài)分析方法適用于控制流無關分析,但對于控制流相關的特性則需要引入類型限定詞和子類型[6]的概念來擴展源語言的類型系統(tǒng),使得新類型系統(tǒng)在源語言的數(shù)據(jù)類型上加以擴展并表示出類型之間的關系。針對現(xiàn)有漏洞靜態(tài)檢測方法中存在的誤報率和漏報率較高問題,文獻[7]提出了一種基于數(shù)據(jù)安全狀態(tài)跟蹤和檢查的安全漏洞靜態(tài)檢測方法。該方法擴展了漏洞狀態(tài)模型的狀態(tài)空間,設定多個安全屬性,通過安全屬性描述安全狀態(tài)。同時,對漏洞狀態(tài)機中進行合法性校驗,識別誤報的可能性。通過建立非可信數(shù)據(jù)識別系統(tǒng)中的漏報情況。

2.2動態(tài)檢測技術

由于在實際檢測過程中,除開源軟件以外,很難獲得被測系統(tǒng)的源代碼信息,因此限制了靜態(tài)檢測技術的應用。動態(tài)檢測技術是通過構造非標準輸入數(shù)據(jù),調試運行軟件系統(tǒng),根據(jù)系統(tǒng)功能或數(shù)據(jù)流向,檢查運行結果的異常,以判斷被測軟件系統(tǒng)是否存在漏洞。動態(tài)檢測技術通常以輸入接口或者運行環(huán)境為入手點,檢測系統(tǒng)中存在的漏洞。雖然動態(tài)檢測技術具有準確率高的優(yōu)點,但是其效率卻十分低下,因為各種軟件系統(tǒng)本身的功能和流程有所不同,所以不能像靜態(tài)檢測技術那樣進行統(tǒng)一的掃描,而應該針對軟件系統(tǒng)的功能進行動態(tài)檢測,這樣就勢必造成了效率的降低[4]。并且動態(tài)檢測只能確定漏洞可能存在的范圍,需進行進一步的跟蹤和分析,通過經(jīng)驗才能確定安全漏洞的類型和利用,因此難以應用到大型軟件當中。文獻[8]提出了一種動態(tài)與靜態(tài)技術相結合的二進制漏洞挖掘方法。該方法通過對二進制文件反編譯,得到偽源代碼,然后設計了虛擬執(zhí)行環(huán)境VM。然后,通過VM,考察指令執(zhí)行狀態(tài),跟蹤寄存器的變化,解決了指針別名的問題。通過記錄VM中虛擬內存每條指令訪存地址,最后統(tǒng)計計算出每條訪存指令實際訪問的變量地址,解決了變量精確識別的問題。文獻[9]提出利用全系統(tǒng)模擬器作為動態(tài)執(zhí)行環(huán)境,通過追蹤輸入數(shù)據(jù)處理路徑檢測溢出漏洞。該方面面向可執(zhí)行代碼,通過構建全系統(tǒng)模擬器來進行漏洞檢測,將可執(zhí)行代碼動態(tài)轉換成形式統(tǒng)一、便于分析追蹤的元指令表示形式。為解決動態(tài)檢測代碼覆蓋率的問題,該方法制定了溢出漏洞的判定規(guī)則,歸納溢出形成條件,并結合系統(tǒng)狀態(tài)回退完成多路徑漏洞搜索,提高了檢測的覆蓋率。

2.3混合檢測技術

由于靜態(tài)檢測技術需要目標程序源代碼,并具有檢測規(guī)模大、誤報率高的缺陷,而動態(tài)檢測技術又存在覆蓋率低、效率低的缺陷。因此,近幾年,混合檢測技術發(fā)展迅速,它有效的結合了靜態(tài)檢測和動態(tài)檢測的優(yōu)點,避免了靜態(tài)檢測和動態(tài)檢測的缺點,有效地提高了檢測效率和準確率?;旌蠙z測技術表現(xiàn)為與動態(tài)檢測技術相似的形式,然而測試者根據(jù)程序的先驗知識,在測試過程中有針對性的設計測試用例。這種測試可以直接針對數(shù)據(jù)流中感興趣的邊界情況進行測試,從而比動態(tài)檢測更高效。目前,混合檢測技術主要通過自動化的漏洞挖掘器即Fuzzing檢測技術實現(xiàn)。漏洞挖掘器首先分析目標軟件的運行環(huán)境、功能和接口等,構造畸形數(shù)據(jù),生成測試用例。然后,通過接口傳遞測試用例,運行程序。最后,使用監(jiān)控程序監(jiān)視程序運行,如果程序運行出現(xiàn)異常則記錄程序運行環(huán)境和輸入數(shù)據(jù)進一步對異常信息進行分析。不同漏洞挖掘器由于挖掘對象的不同,其結構、挖掘方法都有很大的不同。目前主要有文件類型漏洞挖掘器、FTP漏洞挖掘器、Web漏洞挖掘器、操作系統(tǒng)漏洞挖掘器等。根據(jù)挖掘器構造測試用例方式的不同,F(xiàn)uzzing技術可以分為兩類[4],DumbFuzzing和IntelligentFuzzing。DumbFuzzing檢測技術類似于黑盒測試完全根據(jù)隨機的輸入去發(fā)現(xiàn)問題。這種方法實現(xiàn)簡單,容易快速的觸發(fā)漏洞的錯誤位置。由于沒有針對性,因此其效率低下。IntelligentFuzzing檢測技術通過研究目標軟件的協(xié)議、輸入、文件格式等方面內容,有針對性的構造測試用例,能夠提高自動化檢測的效率,因此這種方法能夠更加有效的進行軟件安全漏洞挖掘。

3結束語

因為不同漏洞研究技術針對的研究目標不同,所以具有不同的優(yōu)缺點。靜態(tài)檢測技術具有分析速度快,覆蓋全面的特點,但其誤報率卻很高;而動態(tài)檢測技術準確率高,但其不能覆蓋程序的各個流程,具有較大的隨機性;混合檢測技術避免了上述兩種方法的缺點,但由于目前檢測技術的局限性,仍有很多工作需要完成:1)后門及訪問控制缺陷檢測困難。由于后門及訪問控制缺陷不會引起程序異常,并在邏輯上很難區(qū)分,所以常規(guī)漏洞檢測方法難以發(fā)現(xiàn)后門及邏輯上的缺陷;2)檢測過程難以全部自動化。目前,F(xiàn)uzzing技術需要根據(jù)經(jīng)驗創(chuàng)建測試用例,并且自動化的檢測結果需要根據(jù)經(jīng)驗進行進一步分析,以確定漏洞是否存在以及如何利用。