
本發(fā)明涉及網(wǎng)絡(luò)安全
技術(shù)領(lǐng)域:
,具體涉及一種基于多模式匹配的安全漏洞在線發(fā)現(xiàn)方法。
背景技術(shù):
:近年來,隨著計算機(jī)技術(shù)的飛速發(fā)展和互聯(lián)網(wǎng)的廣泛應(yīng)用,信息技術(shù)越來越深入到人們?nèi)粘I畹母鱾€方面,成為人們?nèi)粘I钪凶钪匾牟糠?。網(wǎng)絡(luò)給社會帶來巨大變革和發(fā)展的同時,也遭受著非常嚴(yán)峻的安全威脅,網(wǎng)絡(luò)、應(yīng)用的安全漏洞成為制約網(wǎng)絡(luò)發(fā)展、影響社會發(fā)展的重要因素。信息系統(tǒng)的威脅都是以目標(biāo)的安全漏洞為突破點。信息系統(tǒng)安全漏洞產(chǎn)生原因有多種,可能由于開發(fā)人員自身的安全意識薄弱、安全技能不足,或系統(tǒng)安全框架存在缺陷,也可能由于內(nèi)部人員有意或無意的操作造成安全問題。對系統(tǒng)進(jìn)行安全提升的重要方法就是研究安全漏洞發(fā)現(xiàn)技術(shù)。安全漏洞發(fā)現(xiàn)包括對未知漏洞的挖掘和已知漏洞的識別。未知漏洞挖掘技術(shù)指通過人工或輔助工具對目標(biāo)進(jìn)行分析測試,對目標(biāo)運行流程、參數(shù)傳遞、執(zhí)行邏輯等進(jìn)行挖掘,了解系統(tǒng)內(nèi)部可能造成安全漏洞的特點。對已知漏洞來說,一般通過漏洞檢測腳本匹配方式識別目標(biāo)系統(tǒng)中存在的安全漏洞。傳統(tǒng)的安全漏洞挖掘技術(shù)主要包括靜態(tài)分析技術(shù)和動態(tài)分析技術(shù)。靜態(tài)分析技術(shù)通過分析軟件程序代碼詞法、語法和靜態(tài)語義,檢測程序中存在的潛在漏洞,靜態(tài)分析方法主要有以下幾種檢測方法:1)模型檢測。模型檢測是一種驗證有限狀態(tài)的并發(fā)系統(tǒng)的方法,基本思想是對有限狀態(tài)的系統(tǒng)構(gòu)造狀態(tài)機(jī)或者有向圖等抽象出模型,再對模型進(jìn)行遍歷以驗證系統(tǒng)的某一性質(zhì)。2)符號執(zhí)行。符號執(zhí)行是一種符號化定義數(shù)據(jù),并為程序每條路徑給出符號表達(dá)方式,對特定路徑輸入符號,經(jīng)處理輸出符號,從而判斷程序行為是否錯誤,達(dá)到分析錯誤的目的。3)類型推斷。類型推斷可以檢查類型錯誤,選擇合適的操作,根據(jù)情況確定必要的類型轉(zhuǎn)換。4)數(shù)據(jù)流分析。數(shù)據(jù)流分析是從程序代碼中收集程序的語義信息并通過代數(shù)的方法在編譯時確定變量的定義和使用。5)約束分析。約束分析將程序分析過程分為約束產(chǎn)生和約束求解兩個階段,前者利用約束產(chǎn)生規(guī)則建立變量類型或分析狀態(tài)之間的約束系統(tǒng),后者利用約束系統(tǒng)進(jìn)行求解。動態(tài)分析技術(shù)將測試用例作為輸入,通過運行可執(zhí)行文件,并通過程序運行的輸出發(fā)現(xiàn)程序缺陷的過程。然而,現(xiàn)有的軟件漏洞發(fā)現(xiàn)技術(shù)獨立運用某種單一技術(shù)無法準(zhǔn)確查找漏洞定位,存在較高漏報或誤報。因此,設(shè)計一種高效、準(zhǔn)確度高的安全漏洞發(fā)現(xiàn)方法,成為了亟待解決的技術(shù)問題。技術(shù)實現(xiàn)要素:(一)要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是:如何設(shè)計一種高效、準(zhǔn)確度高的安全漏洞發(fā)現(xiàn)方法。(二)技術(shù)方案為了解決上述技術(shù)問題,本發(fā)明提供了一種基于多模式匹配的安全漏洞在線發(fā)現(xiàn)方法,包括以下步驟:步驟1:判斷待測軟件目標(biāo)是否已存在,是轉(zhuǎn)步驟2,否轉(zhuǎn)步驟3;步驟2:一方面,檢測待測軟件目標(biāo)的版本特征值,進(jìn)行軟件版本模式匹配,匹配漏洞庫中的已知漏洞;另一方面,使用漏洞掃描插件匹配觸發(fā)規(guī)則進(jìn)行漏洞掃描檢測,更新漏洞庫;步驟3:錄入不存在的待測軟件目標(biāo),分析待測軟件目標(biāo)的源代碼或二進(jìn)制文件,通過漏洞模式匹配規(guī)則定位漏洞,結(jié)合模糊測試技術(shù)構(gòu)造針對型輸入數(shù)據(jù)進(jìn)行漏洞挖掘分析。優(yōu)選地,步驟1具體包括:步驟1.1:查看待測軟件目標(biāo)的指紋信息,獲取軟件版本信息。步驟1.2:查找軟件庫,分析待測軟件目標(biāo)是否已存在。優(yōu)選地,步驟2具體包括:步驟2.1:通過待測軟件目標(biāo)的版本特征值查詢對應(yīng)的漏洞庫,匹配該版本軟件對應(yīng)的已知漏洞進(jìn)行在線發(fā)現(xiàn);步驟2.2:根據(jù)步驟1.1獲取的指紋信息,進(jìn)行掃描分析:根據(jù)待測軟件目標(biāo)的指紋信息加載漏洞掃描插件庫,計算漏洞掃描插件庫中漏洞掃描插件的數(shù)字簽名,匹配證書列表,驗證漏洞掃描插件是否合法,并執(zhí)行合法的漏洞掃描插件,根據(jù)漏洞掃描插件執(zhí)行的返回信息進(jìn)行判斷,當(dāng)漏洞掃描插件命中漏洞的觸發(fā)規(guī)則時輸出漏洞信息,將掃描得到的漏洞信息與已有軟件版本對應(yīng)的漏洞庫進(jìn)行比對去重,將新增漏洞信息按照漏洞庫記錄內(nèi)容字段提取之后保存到漏洞庫;所述漏洞信息包括漏洞模式、漏洞位置信息和觸發(fā)路徑;步驟2.1與步驟2.2可以同時執(zhí)行,也可以順序執(zhí)行,順序可以互換;步驟2.3:如發(fā)現(xiàn)已有軟件匹配的未知漏洞,則將漏洞信息與已有軟件進(jìn)行關(guān)聯(lián)。優(yōu)選地,步驟3具體包括:步驟3.1:對查詢后不存在于軟件庫中的待測軟件目標(biāo),將其信息錄入軟件庫中,并與漏洞庫中的漏洞信息進(jìn)行對應(yīng),軟件庫中記錄了軟件名稱、版本和廠家信息;步驟3.2:分析漏洞模式庫中的漏洞模式,根據(jù)漏洞模式匹配規(guī)則定位漏洞;步驟3.3:在步驟3.2定位漏洞信息位置后,根據(jù)漏洞位置信息和漏洞類型,構(gòu)造針對性的畸形用例并注入待測軟件目標(biāo),以觸發(fā)安全漏洞并驗證漏洞,將觸發(fā)成功并驗證通過的安全漏洞按照所述漏洞庫記錄內(nèi)容字段進(jìn)行記錄,存入漏洞庫并與待測軟件目標(biāo)及其版本相對應(yīng)。優(yōu)選地,步驟3.2具體包括:3.2.1、掃描待測軟件目標(biāo)的源代碼或二進(jìn)制文件,尋找程序入口點;3.2.2、對待測軟件目標(biāo)的函數(shù)體調(diào)用關(guān)系進(jìn)行掃描分析,根據(jù)語句類型的不同進(jìn)行針對性分析,即對函數(shù)的使用、跳轉(zhuǎn)邏輯、分支語句、程序執(zhí)行順序進(jìn)行分析;所述語句類型包括函數(shù)調(diào)用語句、分支語句、順序執(zhí)行語句;3.2.3、按照程序執(zhí)行順序逐條與漏洞模式庫中的漏洞模式進(jìn)行匹配,并對匹配成功的程序部分進(jìn)行約束檢測,即檢查確定觸發(fā)漏洞的路徑;3.2.4、在模式匹配與模式約束都成功的前提下,輸出漏洞信息。(三)有益效果本發(fā)明具有如下優(yōu)點:綜合性:本發(fā)明具有對已知漏洞和未知漏洞的綜合在線發(fā)現(xiàn)的能力,已知漏洞方面通過軟件版本特征匹配及漏洞匹配方式進(jìn)行發(fā)現(xiàn),未知漏洞方面通過漏洞模式匹配進(jìn)行在線發(fā)現(xiàn)。準(zhǔn)確性:本發(fā)明通過多模式匹配方式提高已知漏洞和未知漏洞的在線發(fā)現(xiàn)能力。已知漏洞方面,結(jié)合版本特征匹配和插件掃描方式進(jìn)行綜合漏洞發(fā)現(xiàn),未知漏洞方面運用漏洞模式匹配規(guī)則進(jìn)行漏洞定位,結(jié)合模糊用例生成準(zhǔn)確發(fā)現(xiàn)漏洞,均提高了發(fā)現(xiàn)準(zhǔn)確度。附圖說明圖1為本發(fā)明的多模式匹配漏洞發(fā)現(xiàn)系統(tǒng)組成框圖;圖2為本發(fā)明的基于多模式匹配的安全漏洞在線發(fā)現(xiàn)方法流程圖;圖3為本發(fā)明的系統(tǒng)中的漏洞掃描引擎的掃描流程圖;圖4為本發(fā)明的方法中對未知漏洞發(fā)現(xiàn)進(jìn)行模式匹配的流程圖。具體實施方式為使本發(fā)明的目的、內(nèi)容、和優(yōu)點更加清楚,下面結(jié)合附圖和實施例,對本發(fā)明的具體實施方式作進(jìn)一步詳細(xì)描述。本發(fā)明研究基于漏洞發(fā)現(xiàn)方法,在充分借鑒靜態(tài)分析、動態(tài)分析技術(shù)的基礎(chǔ)上,采用模式匹配方式進(jìn)行未知安全漏洞發(fā)現(xiàn),在靜態(tài)分析基礎(chǔ)上,結(jié)合動態(tài)模糊測試,提高漏洞發(fā)現(xiàn)效率。同時,本發(fā)明提出的安全漏洞發(fā)現(xiàn)方法加入了面向已知漏洞的發(fā)現(xiàn),增強了安全漏洞發(fā)現(xiàn)效率。本發(fā)明涉及的發(fā)現(xiàn)方法面向已知漏洞和未知漏洞,針對已知漏洞采用軟件版本匹配模塊結(jié)合掃描匹配模塊進(jìn)行漏洞發(fā)現(xiàn),針對未知漏洞采用漏洞模式匹配文件分析結(jié)合用例注入進(jìn)行漏洞發(fā)現(xiàn)。圖1是本發(fā)明的方法對應(yīng)的多模式匹配漏洞發(fā)現(xiàn)系統(tǒng)功能組成框圖,該系統(tǒng)包括軟件比對模塊、漏洞掃描引擎、文件分析引擎、用例注入模塊、軟件版本庫、漏洞庫、掃描插件庫、漏洞模式庫等。本發(fā)明提供的一種基于多模式匹配的安全漏洞在線發(fā)現(xiàn)方法的流程圖如圖2所示,具體包括以下步驟:步驟1:判斷待測軟件目標(biāo)是否已存在,是轉(zhuǎn)步驟2,否轉(zhuǎn)步驟3。步驟1.1:查看待測軟件目標(biāo)的指紋信息,獲取軟件版本信息。步驟1.2:查找軟件庫,分析待測軟件目標(biāo)是否已存在。步驟2:一方面,檢測待測軟件目標(biāo)的版本特征值,進(jìn)行軟件版本模式匹配,匹配漏洞庫中的已知漏洞;另一方面,使用漏洞掃描插件匹配觸發(fā)規(guī)則進(jìn)行漏洞掃描檢測,更新漏洞庫。步驟2.1:通過待測軟件目標(biāo)的版本特征值查詢漏洞庫,匹配該版本軟件對應(yīng)的已知漏洞進(jìn)行在線發(fā)現(xiàn)。步驟2.2:根據(jù)步驟1.1獲取的指紋信息,調(diào)用漏洞掃描引擎進(jìn)行掃描分析。如圖3所示是發(fā)明中涉及的漏洞引擎工作流程圖,即,步驟2.2具體為:漏洞掃描引擎根據(jù)待測軟件目標(biāo)的指紋信息加載漏洞掃描插件庫,計算漏洞掃描插件庫中漏洞掃描插件的數(shù)字簽名,匹配證書列表,驗證漏洞掃描插件是否合法,并執(zhí)行合法的漏洞掃描插件,根據(jù)漏洞掃描插件執(zhí)行的返回信息進(jìn)行判斷,當(dāng)漏洞掃描插件命中漏洞的觸發(fā)規(guī)則時輸出漏洞信息。通過軟件比對模塊將掃描得到的漏洞信息與已有軟件版本對應(yīng)的漏洞庫進(jìn)行比對去重,將新增漏洞信息按照漏洞庫記錄內(nèi)容字段提取之后保存到漏洞庫。漏洞庫記錄內(nèi)容字段如表1所示。表1漏洞庫記錄內(nèi)容字段名稱內(nèi)容漏洞標(biāo)識漏洞的唯一編號,與cve漏洞庫一致漏洞類型標(biāo)識漏洞類型載體信息記錄漏洞所屬的軟件信息運行環(huán)境存在漏洞的系統(tǒng)平臺及對應(yīng)的操作系統(tǒng)版本端口信息遠(yuǎn)程入侵時使用的端口脆弱性函數(shù)存在漏洞的函數(shù)脆弱性參數(shù)觸發(fā)漏洞的具體函數(shù)參數(shù)步驟2.1與步驟2.2可以同時執(zhí)行,也可以順序執(zhí)行,順序可以互換。步驟2.3:如發(fā)現(xiàn)已有軟件匹配的未知漏洞,則將漏洞信息與已有軟件進(jìn)行關(guān)聯(lián)。步驟3:錄入不存在的待測軟件目標(biāo),分析待測軟件目標(biāo)的源代碼或二進(jìn)制文件,通過漏洞模式匹配規(guī)則定位漏洞,結(jié)合模糊測試技術(shù)構(gòu)造針對型輸入數(shù)據(jù)進(jìn)行漏洞挖掘分析。步驟3.1:對查詢后不存在于軟件庫中的待測軟件目標(biāo),將其信息錄入軟件庫中。軟件庫中記錄了軟件名稱、版本、廠家等信息,并與漏洞庫中的漏洞信息進(jìn)行對應(yīng)。步驟3.2:調(diào)用文件分析引擎,操作漏洞模式庫分析文件,根據(jù)漏洞模式匹配規(guī)則定位漏洞。漏洞模式庫中存儲的漏洞模式是指通過分析各類漏洞的特點,總結(jié)漏洞的產(chǎn)生原因和形成機(jī)理,以靜態(tài)檢測為基礎(chǔ),通過形式化描述形成的漏洞模型。漏洞模式可以合理地描述各個漏洞的不同屬性以及各屬性之間的依賴關(guān)系。以window為例,漏洞模式所檢測的一般不是整個操作系統(tǒng)的完全執(zhí)行流程,而是待測軟件目標(biāo)中的執(zhí)行流程。如圖4為步驟3.2的漏洞模式匹配流程。3.2.1掃描待測軟件目標(biāo)的源代碼或二進(jìn)制文件,尋找程序入口點;3.2.2對待測軟件目標(biāo)的函數(shù)體調(diào)用關(guān)系進(jìn)行掃描分析,根據(jù)語句類型(函數(shù)調(diào)用語句、分支語句、順序執(zhí)行語句)的不同進(jìn)行針對性分析,對函數(shù)的使用、跳轉(zhuǎn)邏輯、分支語句、程序執(zhí)行順序等進(jìn)行分析;3.2.3按照程序執(zhí)行順序逐條與漏洞模式庫中的漏洞模式進(jìn)行匹配,并對匹配成功的程序部分進(jìn)行約束檢測,即檢查確定觸發(fā)漏洞的路徑;對未匹配成功的程序不做處理;3.2.4在模式匹配與模式約束都成功的前提下,向用戶輸出漏洞信息,漏洞信息包括漏洞模式、漏洞位置信息、觸發(fā)路徑等;對模式約束不成功的程序不做處理;3.2.5繼續(xù)掃描后續(xù)的源代碼,直至沒有新的語句或入口點為止。步驟3.3:在步驟3.2定位漏洞信息位置后,根據(jù)漏洞位置信息和漏洞類型,通過用例注入模塊構(gòu)造針對性的畸形用例并注入待測軟件目標(biāo),以觸發(fā)安全漏洞并驗證漏洞,從而提高漏洞模式匹配的準(zhǔn)確率。將觸發(fā)成功并驗證通過的安全漏洞按照步驟2.2說明的漏洞庫記錄內(nèi)容字段進(jìn)行記錄,存入漏洞庫并與待測軟件目標(biāo)及其版本相對應(yīng)。以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當(dāng)指出,對于本
技術(shù)領(lǐng)域:
的普通技術(shù)人員來說,在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本發(fā)明的保護(hù)范圍。當(dāng)前第1頁12