專利名稱:基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種可執(zhí)行程序的安全性檢測(cè)方法及系統(tǒng),特別是涉及一 種基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法及系統(tǒng)。背景技術(shù):
惡意代碼已經(jīng)成為對(duì)互聯(lián)計(jì)算機(jī)系統(tǒng)的一種嚴(yán)重威脅,每年都 會(huì)造成巨大的經(jīng)濟(jì)損失,更為嚴(yán)重的是惡意代碼撰寫已經(jīng)形成了一種特有的經(jīng)濟(jì)利益鏈。 安全分析人員每天都會(huì)發(fā)現(xiàn)大量的惡意代碼,以及變異進(jìn)化后的惡意代碼,使得更加難以 被檢測(cè)或者是逃避分析。目前常用的檢測(cè)機(jī)制仍然是基于特征匹配的傳統(tǒng)檢測(cè)手段,這種 方法的致命弱點(diǎn)是檢測(cè)效果的滯后性和單一性。一種新型的病毒出現(xiàn)以后,只有在其發(fā)作 一段時(shí)間后才能提取特征,實(shí)施檢測(cè)防控。另外,一個(gè)過(guò)時(shí)的惡意代碼進(jìn)行深度變異后也很 難被有效地檢測(cè)出來(lái)。采用基于行為的惡意代碼分析檢測(cè)技術(shù)目前還不是很成熟,程序的 某個(gè)操作行為究竟是否帶有惡意很難判斷,大多數(shù)情況下某個(gè)操作是否允許都是交給用戶 自行判斷處理,容易造成較多的漏判和誤判。因此,就很有必要探尋更加實(shí)用有效的惡意代 碼行為分析檢測(cè)技術(shù),輔助研究分析人員有效進(jìn)行惡意代碼的檢測(cè)。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是克服現(xiàn)有技術(shù)的缺陷,提供一種基于路徑驅(qū)動(dòng)的可執(zhí)行 程序安全性檢測(cè)方法及系統(tǒng),本發(fā)明可以大大減小安全分析人員的代碼分析工作量。本發(fā)明的技術(shù)方案
一種基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法,首先根據(jù)系統(tǒng)的正常功能定義目標(biāo) 待分析程序的正常行為約束,而非直接定義針對(duì)該系統(tǒng)的惡意行為,然后采用靜態(tài)程序分 析和動(dòng)態(tài)程序執(zhí)行相結(jié)合的方法獲得目標(biāo)待分析程序完成系統(tǒng)正常功能所需要的最大工 作閉環(huán)和冗余路徑,最后,對(duì)冗余路徑上的程序行為進(jìn)行語(yǔ)義解釋,根據(jù)系統(tǒng)正常行為約束 判斷冗余路徑中是否存在針對(duì)該系統(tǒng)的惡意攻擊行為。根據(jù)系統(tǒng)的正常功能定義目標(biāo)待分析程序的正常行為約束的過(guò)程如下 第一、根據(jù)產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書列舉系統(tǒng)的正常功能;
第二、根據(jù)產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書列舉系統(tǒng)在特殊情況下的表現(xiàn); 第三、將系統(tǒng)的正常功能和特殊情況下的表現(xiàn)用形式化的語(yǔ)言描述,形成系統(tǒng)正常行 為約束集。形式化的語(yǔ)言為L(zhǎng)TL線性時(shí)態(tài)邏輯語(yǔ)言,或?yàn)镃TL計(jì)算樹邏輯語(yǔ)言。采用靜態(tài)程序分析和動(dòng)態(tài)執(zhí)行相結(jié)合的方法獲得目標(biāo)待分析程序完成系統(tǒng)正常 功能所需要的最大工作閉環(huán)和冗余路徑的過(guò)程如下
步驟一、利用程序靜態(tài)分析技術(shù)獲得目標(biāo)待分析程序的關(guān)鍵信息,這些關(guān)鍵信息含有 目標(biāo)待分析程序的基本操作單元?jiǎng)澐?、基本操作單元之間的邏輯跳轉(zhuǎn)關(guān)系、路徑分支點(diǎn)和 路徑條件;
步驟二、執(zhí)行目標(biāo)待分析程序,根據(jù)路徑條件對(duì)“污點(diǎn)”變量賦值; 步驟三、在路徑分支點(diǎn)中的第一個(gè)分支節(jié)點(diǎn)處中斷執(zhí)行,判斷該分支節(jié)點(diǎn)處的分支是 否涉及“污點(diǎn)”變量;如果該分支節(jié)點(diǎn)處的分支涉及“污點(diǎn)”變量,則在分支處對(duì)系統(tǒng)做“快照”處理;如果該分支節(jié)點(diǎn)處的分支不涉及“污點(diǎn)”變量,則繼續(xù)執(zhí)行目標(biāo)待分析程序,并進(jìn) 入相應(yīng)的路徑分支,如果相應(yīng)的路徑分支涉及“污點(diǎn),,變量,則在相應(yīng)的路徑分支處對(duì)系統(tǒng) 做“快照”處理,直到該條路徑探測(cè)完畢;
步驟四、一條路徑探測(cè)完畢,對(duì)該路徑上的語(yǔ)義進(jìn)行解釋,判斷該路徑上主要做了什么 操作,并對(duì)操作做記錄;
步驟五、按照深度優(yōu)先原則向上回溯至前一分支節(jié)點(diǎn),加載該分支節(jié)點(diǎn)處的系統(tǒng)“快 照”,在保證系統(tǒng)運(yùn)行內(nèi)存一致性的前提下修改該分支節(jié)點(diǎn)上的“污點(diǎn)”變量,將程序驅(qū)動(dòng)至 其他路徑分支,挖掘該路徑分支上的行為;
步驟六、判斷該路徑分支上的行為是否覆蓋了系統(tǒng)的正常行為?如不是,重新回到步 驟二;如是,則找到了該目標(biāo)待分析程序的最大工作閉環(huán),未執(zhí)行到的路徑分支為冗余路 徑。如今各行各業(yè)的各種電子設(shè)備幾乎都要用到控制程序,而各個(gè)程序運(yùn)行的環(huán)境、 處理器平臺(tái)又各不相同。因此針對(duì)功能、品種、設(shè)計(jì)方法互不相同的電子設(shè)備,惡意行為可 以視為一個(gè)無(wú)限膨脹的集合,很難給出準(zhǔn)確的定義,或者界定其范圍。然而,系統(tǒng)的正常功 能范圍是可以認(rèn)知的,正常功能多是一些基本操作行為的重新組合,這些基本操作行為需 要按照某種規(guī)范進(jìn)行,所以系統(tǒng)的正常行為在某種條件下是可以被充分認(rèn)識(shí)的有限集合。本發(fā)明通過(guò)在線提取和系統(tǒng)初步分析的方法,確定系統(tǒng)正常運(yùn)行時(shí)表現(xiàn)出來(lái)的行 為特征,以此為基礎(chǔ)形成對(duì)系統(tǒng)正常功能的約束集,然后遍歷目標(biāo)程序的可執(zhí)行路徑。在遍 歷執(zhí)行的過(guò)程中監(jiān)測(cè)程序是否有違反系統(tǒng)正常功能約束集的行為,定義該種行為為越界行 為,并在程序控制流圖上對(duì)越界行為進(jìn)行著色標(biāo)記。最后再通過(guò)識(shí)別行為特征、邏輯推理的 方法進(jìn)一步地確定可疑攻擊路徑。
按照本發(fā)明的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法設(shè)計(jì)出的基于路徑驅(qū)動(dòng)的 可執(zhí)行程序安全性檢測(cè)系統(tǒng)的工作過(guò)程如下
步驟a、首先利用產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書獲得所檢系統(tǒng)的正 常功能,并將該正常功能用形式化的語(yǔ)言表示出來(lái),作為所檢系統(tǒng)正常行為約束輸入 到惡意行為分析系統(tǒng)中;
步驟b、提取核心控制芯片內(nèi)部的目標(biāo)控制程序(二進(jìn)制代碼),將其反匯編成可調(diào)試的 源碼,作為惡意行為分析系統(tǒng)的原始輸入數(shù)據(jù),也就是分析對(duì)象;
步驟C、惡意行為分析系統(tǒng)對(duì)源碼進(jìn)行分析預(yù)處理,并將不同結(jié)構(gòu)的源碼用統(tǒng)一的中間 語(yǔ)言表示,以便于分析,同時(shí)提取目標(biāo)控制程序的控制流圖;提取出來(lái)的控制流圖包含了目 標(biāo)控制程序所有的可執(zhí)行路徑和每條路徑上的操作節(jié)點(diǎn);每個(gè)操作節(jié)點(diǎn)代表目標(biāo)控制程序 中的一個(gè)操作基本單元,操作基本單元是按照跳轉(zhuǎn)語(yǔ)句來(lái)劃分的; 步驟d、對(duì)目標(biāo)控制程序進(jìn)行靜態(tài)分析;
步驟e、動(dòng)態(tài)地執(zhí)行目標(biāo)控制程序,形成所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉 環(huán)和越界行為集;針對(duì)越界行為集中的操作路徑做深度行為特征挖掘,根據(jù)所檢系統(tǒng)正常 行為約束,綜合推理判斷越界行為集中是否包含有對(duì)所檢系統(tǒng)狀態(tài)進(jìn)行修改或者破壞的行 為,進(jìn)而判斷目標(biāo)控制程序是否含有可疑攻擊行為。步驟d中的靜態(tài)分析含有三個(gè)基礎(chǔ)性的工作
第一.對(duì)目標(biāo)控制程序按照操作基本單元進(jìn)行語(yǔ)義解釋,明確每個(gè)操作基本單元對(duì)所檢系統(tǒng)究竟做了什么樣的操作;
第二 .建立每個(gè)操作基本單元與程序執(zhí)行空間的內(nèi)存映射表,明確每個(gè)操作基本單元 對(duì)應(yīng)在內(nèi)存中的起始地址和末尾地址;建立各個(gè)操作基本單元之間的跳轉(zhuǎn)關(guān)系,這種跳轉(zhuǎn) 關(guān)系與控制流圖是等價(jià)的,前者相較于后者更便于定位查找;
第三.計(jì)算程序中各個(gè)分支點(diǎn)上的路徑條件,形成一個(gè)全路徑條件集合;全路徑條件 集合明確地表明目標(biāo)控制程序中存在多少條路徑,以及將程序驅(qū)動(dòng)至該路徑上需要滿足什 么樣的輸入條件。步驟e中,通過(guò)動(dòng)態(tài)執(zhí)行目標(biāo)控制程序發(fā)現(xiàn)所檢系統(tǒng)正常工作情況下的最大工作 狀態(tài)閉環(huán)需要遍歷到程序內(nèi)部的所有路徑,即全路徑探測(cè),其過(guò)程如下
步驟e 1.確定程序分支點(diǎn)首先需要通過(guò)對(duì)目標(biāo)控制程序做靜態(tài)分析,找目標(biāo)控制 程序中的分支點(diǎn);分支點(diǎn)是在控制流圖中決定程序執(zhí)行哪一條路徑的關(guān)鍵結(jié)點(diǎn),其在程序 分析中占重要地位;
步驟e 2.確定“污點(diǎn)”輸入變量集“污點(diǎn)”輸入變量是指能夠決定程序分支的變量, “污點(diǎn)”輸入變量集是“污點(diǎn)”輸入變量的集合;
步驟e 3.在程序運(yùn)行到分支點(diǎn)時(shí),對(duì)所檢系統(tǒng)作“快照處理”,保存當(dāng)前處理器運(yùn)行到 這個(gè)分支點(diǎn)的所有所檢系統(tǒng)狀態(tài),所檢系統(tǒng)狀態(tài)包括相關(guān)內(nèi)存空間的數(shù)據(jù)和關(guān)鍵寄存器中 的數(shù)據(jù);確定該分支點(diǎn)所依賴的變量,即該分支點(diǎn)的有效“污點(diǎn)”輸入變量,依據(jù)路徑條件對(duì) 其賦值,將程序驅(qū)動(dòng)至某條路徑分支。步驟e 4.在路徑分支上的操作都執(zhí)行完后,對(duì)該路徑分支上的操作進(jìn)行語(yǔ)義解 釋,對(duì)操作行為的功能屬性進(jìn)行挖掘;
步驟e 5.按照深度優(yōu)先原則,使處理器回溯至前一個(gè)分支點(diǎn);回溯操作主要是通過(guò) 加載步驟e 3所做的“快照處理”來(lái)實(shí)現(xiàn);回溯到指定分支點(diǎn)后按照前面記錄的路徑條件修 改該分支點(diǎn)所對(duì)應(yīng)的有效“污點(diǎn)”輸入變量的值,將程序驅(qū)動(dòng)至其它路徑分支;
步驟e 6.重復(fù)執(zhí)行步驟e 4、步驟e 5直至該路徑分支上的行為覆蓋了所檢系統(tǒng)的正 常行為后程序執(zhí)行完畢。步驟e 2中的“污點(diǎn)”輸入變量集中含有鍵盤接口、溫度傳感、時(shí)間控制模塊、無(wú)線 通信接口、網(wǎng)絡(luò)接口、注冊(cè)表讀寫函數(shù)和文件讀寫函數(shù)。步驟e 5中修改該分支點(diǎn)所對(duì)應(yīng)的有效“污點(diǎn)”輸入變量的值時(shí)需保證處理器的 內(nèi)存一致,保證處理器的內(nèi)存一致的方法如下
第一、通過(guò)對(duì)目標(biāo)控制程序的靜態(tài)分析,建立內(nèi)存“污點(diǎn)”映射表和逆映射表;在內(nèi)存 “污點(diǎn)”映射表里對(duì)感興趣的“污點(diǎn)”輸入變量的名稱和內(nèi)存地址進(jìn)行符號(hào)標(biāo)記,在逆映射 表里記錄某個(gè)符號(hào)所關(guān)聯(lián)到的所有內(nèi)存地址;
第二、在對(duì)目標(biāo)控制程序進(jìn)行動(dòng)態(tài)執(zhí)行分析的時(shí)候,使用一系列符號(hào)公式來(lái)表示“污 點(diǎn)”輸入變量之間的依賴關(guān)系或者構(gòu)建符號(hào)約束系統(tǒng);
第三、在分支點(diǎn)處修改某個(gè)“污點(diǎn)”輸入變量的值,以驅(qū)動(dòng)目標(biāo)控制程序到特定路徑 時(shí),要首先找到所有與此“污點(diǎn)”輸入變量的符號(hào)標(biāo)記相關(guān)聯(lián)的符號(hào)及符號(hào)公式,形成符號(hào) 約束公式組;
第四、利用約束求解器對(duì)該符號(hào)約束公式組進(jìn)行求解,根據(jù)求解的結(jié)果進(jìn)行相關(guān)“污 點(diǎn)”輸入變量的修改。
惡意行為分析系統(tǒng)主要含有如下幾部分1.目標(biāo)程序執(zhí)行環(huán)境;2.目標(biāo)程序靜態(tài) 分析工具;3.目標(biāo)程序控制流圖提取工具;4.目標(biāo)程序執(zhí)行控制及狀態(tài)通信接口;5.目標(biāo) 程序行為分析環(huán)境。目標(biāo)程序靜態(tài)分析工具和目標(biāo)程序控制流圖提取工具在整個(gè)系統(tǒng)中起 到基礎(chǔ)性的作用,其中目標(biāo)程序控制流圖提取工具提取目標(biāo)控制程序的控制流圖,作為行 為分析的主要操作對(duì)象;目標(biāo)程序靜態(tài)分析工具對(duì)目標(biāo)控制程序作初步分析確定程序路徑 分支點(diǎn),控制基本塊之間的邏輯跳轉(zhuǎn)關(guān)系以及局部性的路徑條件。目標(biāo)程序執(zhí)行環(huán)境主要 提供正確的執(zhí)行空間。本發(fā)明的有益效果
1、本發(fā)明對(duì)目標(biāo)控制程序采用靜態(tài)分析和動(dòng)態(tài)執(zhí)行相結(jié)合的方法,先通過(guò)靜態(tài)分析法 對(duì)目標(biāo)控制程序劃分操作基本單元,對(duì)操作基本單元進(jìn)行語(yǔ)義解釋,構(gòu)建基本塊之間的邏 輯跳轉(zhuǎn)關(guān)系圖,以及分支點(diǎn)路徑條件;然后再通過(guò)對(duì)目標(biāo)控制程序動(dòng)態(tài)執(zhí)行的方法找出目 標(biāo)控制程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán),與系統(tǒng)正常行為約束相比較得到越 界行為集。這可以大大減小安全分析人員的代碼分析工作量。2、本發(fā)明在動(dòng)態(tài)分析過(guò)程中采用了基于回溯機(jī)制全路徑探測(cè)執(zhí)行方法,可以做到 全路徑搜索,有效應(yīng)對(duì)那些基于觸發(fā)機(jī)制的惡意代碼;在路徑條件修改時(shí)通過(guò)建立“污點(diǎn)” 輸入變量約束系統(tǒng)和約束求解,以達(dá)到在不改變系統(tǒng)內(nèi)存一致性的情況下修改路徑變量, 有力地支持了全路徑探測(cè)。
圖1為程序安全性檢測(cè)過(guò)程示意圖; 圖2為程序安全性檢測(cè)系統(tǒng)功能模塊組成示意圖; 圖3為示例程序控制流結(jié)構(gòu)圖。具體實(shí)施例方式
一種基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法,首先根據(jù)系統(tǒng)的正常功能定義目標(biāo) 待分析程序的正常行為約束,然后采用靜態(tài)程序分析和動(dòng)態(tài)程序執(zhí)行相結(jié)合的方法獲得目 標(biāo)待分析程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán)和冗余路徑,最后,對(duì)冗余路徑上 的程序行為進(jìn)行語(yǔ)義解釋,根據(jù)系統(tǒng)正常行為約束判斷冗余路徑中是否存在針對(duì)該系統(tǒng)的 惡意攻擊行為。根據(jù)系統(tǒng)的正常功能定義目標(biāo)待分析程序的正常行為約束的過(guò)程如下 第一、根據(jù)產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書列舉系統(tǒng)的正常功能;
第二、根據(jù)產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書列舉系統(tǒng)在特殊情況下的表現(xiàn); 第三、將系統(tǒng)的正常功能和特殊情況下的表現(xiàn)用形式化的語(yǔ)言描述,形成系統(tǒng)正常行 為約束集。形式化的語(yǔ)言為L(zhǎng)TL線性時(shí)態(tài)邏輯語(yǔ)言,或?yàn)镃TL計(jì)算樹邏輯語(yǔ)言。采用靜態(tài)程序分析和動(dòng)態(tài)執(zhí)行相結(jié)合的方法獲得目標(biāo)待分析程序完成系統(tǒng)正常 功能所需要的最大工作閉環(huán)和冗余路徑的過(guò)程如下
步驟一、利用程序靜態(tài)分析技術(shù)獲得目標(biāo)待分析程序的關(guān)鍵信息,這些關(guān)鍵信息含有 目標(biāo)待分析程序的基本操作單元?jiǎng)澐?、基本操作單元之間的邏輯跳轉(zhuǎn)關(guān)系、路徑分支點(diǎn)和 路徑條件;
步驟二、執(zhí)行目標(biāo)待分析程序,根據(jù)路徑條件對(duì)“污點(diǎn)”變量賦值;步驟三、在路徑分支點(diǎn)中的第一個(gè)分支節(jié)點(diǎn)處中斷執(zhí)行,判斷該分支節(jié)點(diǎn)處的分支是 否涉及“污點(diǎn)”變量;如果該分支節(jié)點(diǎn)處的分支涉及“污點(diǎn)”變量,則在分支處對(duì)系統(tǒng)做“快 照”處理;如果該分支節(jié)點(diǎn)處的分支不涉及“污點(diǎn)”變量,則繼續(xù)執(zhí)行目標(biāo)待分析程序,并進(jìn) 入相應(yīng)的路徑分支,如果相應(yīng)的路徑分支涉及“污點(diǎn),,變量,則在相應(yīng)的路徑分支處對(duì)系統(tǒng) 做“快照”處理,直到該條路徑探測(cè)完畢;
步驟四、一條路徑探測(cè)完畢,對(duì)該路徑上的語(yǔ)義進(jìn)行解釋,判斷該路徑上主要做了什么 操作,并對(duì)操作做記錄;
步驟五、按照深度優(yōu)先原則向上回溯至前一分支節(jié)點(diǎn),加載該分支節(jié)點(diǎn)處的系統(tǒng)“快 照”,在保證系統(tǒng)運(yùn)行內(nèi)存一致性的前提下修改該分支節(jié)點(diǎn)上的“污點(diǎn)”變量,將程序驅(qū)動(dòng)至 其他路徑分支,挖掘該路徑分支上的行為;
步驟六、判斷該路徑分支上的行為是否覆蓋了系統(tǒng)的正常行為?如不是,重新回到步 驟二;如是,則找到了該目標(biāo)待分析程序的最大工作閉環(huán),未執(zhí)行到的路徑分支為冗余路 徑。
按照本發(fā)明的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法設(shè)計(jì)出的基于路徑驅(qū)動(dòng)的 可執(zhí)行程序安全性檢測(cè)系統(tǒng)的工作過(guò)程如下
步驟a、首先利用產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書獲得所檢系統(tǒng)的正常功能,并 將該正常功能用形式化的語(yǔ)言表示出來(lái),作為所檢系統(tǒng)正常行為約束輸入到惡意行為分析 系統(tǒng)中;
步驟b、提取核心控制芯片內(nèi)部的目標(biāo)控制程序(二進(jìn)制代碼),將其反匯編成可調(diào)試的 源碼,作為惡意行為分析系統(tǒng)的原始輸入數(shù)據(jù),也就是分析對(duì)象;
步驟C、惡意行為分析系統(tǒng)對(duì)源碼進(jìn)行分析預(yù)處理,并將不同結(jié)構(gòu)的源碼用統(tǒng)一的中間 語(yǔ)言表示,以便于分析,同時(shí)提取目標(biāo)控制程序的控制流圖;提取出來(lái)的控制流圖包含了目 標(biāo)控制程序所有的可執(zhí)行路徑和每條路徑上的操作節(jié)點(diǎn);每個(gè)操作節(jié)點(diǎn)代表目標(biāo)控制程序 中的一個(gè)操作基本單元,操作基本單元是按照跳轉(zhuǎn)語(yǔ)句來(lái)劃分的; 步驟d、對(duì)目標(biāo)控制程序進(jìn)行靜態(tài)分析;
步驟e、動(dòng)態(tài)地執(zhí)行目標(biāo)控制程序,形成所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉 環(huán)和越界行為集;針對(duì)越界行為集中的操作路徑做深度行為特征挖掘,根據(jù)所檢系統(tǒng)正常 行為約束,綜合推理判斷越界行為集中是否包含有對(duì)所檢系統(tǒng)狀態(tài)進(jìn)行修改或者破壞的行 為,進(jìn)而判斷目標(biāo)控制程序是否含有可疑攻擊行為。步驟d中的靜態(tài)分析含有三個(gè)基礎(chǔ)性的工作
第一.對(duì)目標(biāo)控制程序按照操作基本單元進(jìn)行語(yǔ)義解釋,明確每個(gè)操作基本單元對(duì)所 檢系統(tǒng)究竟做了什么樣的操作;
第二 .建立每個(gè)操作基本單元與程序執(zhí)行空間的內(nèi)存映射表,明確每個(gè)操作基本單元 對(duì)應(yīng)在內(nèi)存中的起始地址和末尾地址;建立各個(gè)操作基本單元之間的跳轉(zhuǎn)關(guān)系,這種跳轉(zhuǎn) 關(guān)系與控制流圖是等價(jià)的,前者相較于后者更便于定位查找;
第三.計(jì)算程序中各個(gè)分支點(diǎn)上的路徑條件,形成一個(gè)全路徑條件集合;全路徑條件 集合明確地表明目標(biāo)控制程序中存在多少條路徑,以及將程序驅(qū)動(dòng)至該路徑上需要滿足什 么樣的輸入條件。步驟e中,通過(guò)動(dòng)態(tài)執(zhí)行目標(biāo)控制程序發(fā)現(xiàn)所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉環(huán)需要遍歷到程序內(nèi)部的所有路徑,即全路徑探測(cè),其過(guò)程如下
步驟e 1.確定程序分支點(diǎn)首先需要通過(guò)對(duì)目標(biāo)控制程序做靜態(tài)分析,找目標(biāo)控制 程序中的分支點(diǎn);分支點(diǎn)是在控制流圖中決定程序執(zhí)行哪一條路徑的關(guān)鍵結(jié)點(diǎn),其在程序 分析中占重要地位;
步驟e 2.確定“污點(diǎn)”輸入變量集“污點(diǎn)”輸入變量是指能夠決定程序分支的變量, “污點(diǎn)”輸入變量集是“污點(diǎn)”輸入變量的集合;
步驟e 3.在程序運(yùn)行到分支點(diǎn)時(shí),對(duì)所檢系統(tǒng)作“快照處理”,保存當(dāng)前處理器運(yùn)行到 這個(gè)分支點(diǎn)的所有所檢系統(tǒng)狀態(tài),所檢系統(tǒng)狀態(tài)包括相關(guān)內(nèi)存空間的數(shù)據(jù)和關(guān)鍵寄存器中 的數(shù)據(jù);確定該分支點(diǎn)所依賴的變量,即該分支點(diǎn)的有效“污點(diǎn)”輸入變量,依據(jù)路徑條件對(duì) 其賦值,將程序驅(qū)動(dòng)至某條路徑分支。步驟e 4.在路徑分支上的操作都執(zhí)行完后,對(duì)該路徑分支上的操作進(jìn)行語(yǔ)義解 釋,對(duì)操作行為的功能屬性進(jìn)行挖掘;
步驟e 5.按照深度優(yōu)先原則,使處理器回溯至前一個(gè)分支點(diǎn);回溯操作主要是通過(guò) 加載步驟e 3所做的“快照處理”來(lái)實(shí)現(xiàn);回溯到指定分支點(diǎn)后按照前面記錄的路徑條件修 改該分支點(diǎn)所對(duì)應(yīng)的有效“污點(diǎn)”輸入變量的值,將程序驅(qū)動(dòng)至其它路徑分支;
步驟e 6.重復(fù)執(zhí)行步驟e 4、步驟e 5直至該路徑分支上的行為覆蓋了所檢系統(tǒng)的正 常行為后程序執(zhí)行完畢。步驟e 2中的“污點(diǎn)”輸入變量集中含有鍵盤接口、溫度傳感、時(shí)間控制模塊、無(wú)線 通信接口、網(wǎng)絡(luò)接口、注冊(cè)表讀寫函數(shù)和文件讀寫函數(shù)。步驟e 5中修改該分支點(diǎn)所對(duì)應(yīng)的有效“污點(diǎn)”輸入變量的值時(shí)需保證處理器的 內(nèi)存一致,保證處理器的內(nèi)存一致的方法如下
第一、通過(guò)對(duì)目標(biāo)控制程序的靜態(tài)分析,建立內(nèi)存“污點(diǎn)”映射表和逆映射表;在內(nèi)存 “污點(diǎn)”映射表里對(duì)感興趣的“污點(diǎn)”輸入變量的名稱和內(nèi)存地址進(jìn)行符號(hào)標(biāo)記,在逆映射 表里記錄某個(gè)符號(hào)所關(guān)聯(lián)到的所有內(nèi)存地址;
第二、在對(duì)目標(biāo)控制程序進(jìn)行動(dòng)態(tài)執(zhí)行分析的時(shí)候,使用一系列符號(hào)公式來(lái)表示“污 點(diǎn)”輸入變量之間的依賴關(guān)系或者構(gòu)建符號(hào)約束系統(tǒng);
第三、在分支點(diǎn)處修改某個(gè)“污點(diǎn)”輸入變量的值,以驅(qū)動(dòng)目標(biāo)控制程序到特定路徑 時(shí),要首先找到所有與此“污點(diǎn)”輸入變量的符號(hào)標(biāo)記相關(guān)聯(lián)的符號(hào)及符號(hào)公式,形成符號(hào) 約束公式組;
第四、利用約束求解器對(duì)該符號(hào)約束公式組進(jìn)行求解,根據(jù)求解的結(jié)果進(jìn)行相關(guān)“污 點(diǎn)”輸入變量的修改。惡意行為分析系統(tǒng)主要含有如下幾部分1.目標(biāo)程序執(zhí)行環(huán)境;2.目標(biāo)程序靜態(tài) 分析工具;3.目標(biāo)程序控制流圖提取工具;4.目標(biāo)程序執(zhí)行控制及狀態(tài)通信接口;5.目標(biāo) 程序行為分析環(huán)境。目標(biāo)程序靜態(tài)分析工具和目標(biāo)程序控制流圖提取工具在整個(gè)系統(tǒng)中起 到基礎(chǔ)性的作用,其中目標(biāo)程序控制流圖提取工具提取目標(biāo)控制程序的控制流圖,作為行 為分析的主要操作對(duì)象;目標(biāo)程序靜態(tài)分析工具對(duì)目標(biāo)控制程序作初步分析確定程序路徑 分支點(diǎn),控制基本塊之間的邏輯跳轉(zhuǎn)關(guān)系以及局部性的路徑條件。目標(biāo)程序執(zhí)行環(huán)境主要 提供正確的執(zhí)行空間。下面根據(jù)具體應(yīng)用進(jìn)一步說(shuō)明本發(fā)明的技術(shù)方案(參見圖1 圖2),我們針對(duì)一個(gè)目標(biāo)待分析程序首先要將機(jī)器代碼反匯編為人類可以較容易識(shí)別的匯編代碼或者更高 級(jí)的語(yǔ)言,接著對(duì)高級(jí)語(yǔ)言代碼進(jìn)行靜態(tài)分析和動(dòng)態(tài)行為分析。這里為了表述上的方便我 們使用C語(yǔ)言描述的程序?yàn)槔榻B基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法的主要實(shí) 施步驟。以下面這個(gè)示例程序?yàn)榉治鰧?duì)象,其控制流結(jié)構(gòu)圖如圖3所示。0:int χ;
1 χ = read_input ();
2:if (x>0)
3:if (x<2)
4:printf( “OK”);
5:else printf( “BAD”);
6: end if
7:else Write_RegEdit(); 8: end if 9:exit (0);
如上述代碼片段所示,由示例代碼這個(gè)特殊的程序我們可以歸納總結(jié)出程序的一般結(jié) 果或者稱之為規(guī)律,即程序可以視作一系列執(zhí)行點(diǎn)的組合,在某些節(jié)點(diǎn)會(huì)出現(xiàn)執(zhí)行分支,而 且下一步執(zhí)行什么操作完全由某些變量的取值決定。具體分析過(guò)程可以分為三個(gè)階段
首先第一階段是通過(guò)產(chǎn)品說(shuō)明書和操作規(guī)范書對(duì)系統(tǒng)的正常功能和特殊情況下的系 統(tǒng)功能及表現(xiàn)進(jìn)行充分理解認(rèn)識(shí),并用形式化的語(yǔ)言進(jìn)行表述記錄。具體到這個(gè)程序它的 正常功能就是打印“0K”或者打印“BAD”,可以用原子操作pi和p2表示。分析的第二階段對(duì)目標(biāo)程序的源碼做靜態(tài)分析,確定程序的分支點(diǎn)、“污點(diǎn)”輸入 集、程序基本塊之間的邏輯跳轉(zhuǎn)關(guān)系、以及分支點(diǎn)的局部路徑條件,并對(duì)“污點(diǎn)”變量進(jìn)行標(biāo) 記。在上述示例代碼中分支點(diǎn)有兩個(gè),分別為第2行和第3行;標(biāo)記“污點(diǎn)”變量χ為L(zhǎng)0,并 確定在第一個(gè)分支點(diǎn)的路徑條件是LO > 0,第二個(gè)分支點(diǎn)的路徑條件是LO < 2;由于該代 碼段中沒有跳轉(zhuǎn)語(yǔ)句,因此整個(gè)代碼段只有一個(gè)基本單元,不存在基本單元之間的邏輯跳 轉(zhuǎn)。分析的第三階段是在靜態(tài)分析的基礎(chǔ)上進(jìn)行動(dòng)態(tài)執(zhí)行,探測(cè)尋找目標(biāo)程序在系統(tǒng) 正常工作情況下的最大工作閉環(huán),以及冗余程序執(zhí)行分支。接著對(duì)冗余程序執(zhí)行分支進(jìn)行 語(yǔ)義解釋,挖掘其行為特征,參考系統(tǒng)的正常行為約束判定該冗余程序執(zhí)行分支是否包含 針對(duì)該系統(tǒng)的惡意攻擊行為。其主要操作過(guò)程如下
(1)執(zhí)行目標(biāo)待分析程序,根據(jù)靜態(tài)分析的路徑條件對(duì)“污點(diǎn)”變量賦值,令x=2。中間 如果遇到“污點(diǎn)”χ參與了某個(gè)操作運(yùn)算,則記錄該“污點(diǎn)”的擴(kuò)散過(guò)程。(2)在第一個(gè)分支節(jié)點(diǎn)處中斷執(zhí)行,判斷該分支是否涉及“污點(diǎn)”變量,由于分支 路徑條件用到了“污點(diǎn)”χ,所以在這里對(duì)系統(tǒng)做“快照”處理,記做Si ;繼續(xù)執(zhí)行,并進(jìn)入左 邊分支。(3)在第二個(gè)分支節(jié)點(diǎn)判斷處,由于分支路徑條件也用到了“污點(diǎn)”X,所以再次對(duì) 系統(tǒng)做“快照”處理,記做S2,繼續(xù)執(zhí)行,并進(jìn)入右邊分支,退出。這個(gè)時(shí)候一條路徑Pl已經(jīng) 探測(cè)完畢,對(duì)該路徑上的語(yǔ)義進(jìn)行解釋,判斷該路徑Pl上主要做了打印“BAD”的操作。
(4)這時(shí)候還有兩條可行路徑P2和P3沒有探測(cè)到,按照深度優(yōu)先規(guī)則(算法), 將處理器定點(diǎn)復(fù)位到S2狀態(tài),即加載前面的系統(tǒng)“快照”。在S2狀態(tài)對(duì)路徑條件進(jìn)行
判斷時(shí)都用到了被標(biāo)記為L(zhǎng)O的變量X,綜合地對(duì)變量χ進(jìn)行約束求解得到0<x<2。在Sl狀 態(tài)對(duì)變量χ的值進(jìn)行重新賦值,令x=l,繼續(xù)執(zhí)行,退出。這個(gè)時(shí)候另一條路徑P2已經(jīng)探測(cè) 完畢,對(duì)該路徑上的語(yǔ)義進(jìn)行解釋,判斷該路徑主要做了打印“0K”的操作。這個(gè)時(shí)候系統(tǒng) 正常工作情況下的最大工作閉環(huán)已經(jīng)找到,即Pl和P2。而P3為冗余路徑,該路徑上是否包 含有對(duì)系統(tǒng)的惡意攻擊行為需要進(jìn)一步分析檢測(cè)。(5)按照深度優(yōu)先規(guī)則(算法),將處理器定點(diǎn)復(fù)位到Sl狀態(tài),對(duì)χ重新賦值,令其 為SO狀態(tài)的Pl路徑的反值χ = _2,繼續(xù)執(zhí)行,發(fā)現(xiàn)程序改寫了注冊(cè)表的某個(gè)鍵值,這個(gè)行 為屬于該系統(tǒng)的敏感操作,可能會(huì)對(duì)系統(tǒng)造成重大影響,因此判斷目標(biāo)待分析程序的該路 徑分支包含有惡意攻擊行為。(6)分析結(jié)束。
權(quán)利要求
1.一種基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法,其特征是首先根據(jù)系統(tǒng)的正常 功能定義目標(biāo)待分析程序的正常行為約束,然后采用靜態(tài)程序分析和動(dòng)態(tài)程序執(zhí)行相結(jié)合 的方法獲得目標(biāo)待分析程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán)和冗余路徑,最后, 對(duì)冗余路徑上的程序行為進(jìn)行語(yǔ)義解釋,根據(jù)系統(tǒng)正常行為約束判斷冗余路徑中是否存在 針對(duì)該系統(tǒng)的惡意攻擊行為。
2.根據(jù)權(quán)利要求1所述的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法,其特征是所 述根據(jù)系統(tǒng)的正常功能定義目標(biāo)待分析程序的正常行為約束的過(guò)程如下第一、根據(jù)產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書列舉系統(tǒng)的正常功能; 第二、根據(jù)產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書列舉系統(tǒng)在特殊情況下的表現(xiàn); 第三、將系統(tǒng)的正常功能和特殊情況下的表現(xiàn)用形式化的語(yǔ)言描述,形成系統(tǒng)正常行 為約束集。
3.根據(jù)權(quán)利要求2所述的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法,其特征是所 述形式化的語(yǔ)言為L(zhǎng)TL線性時(shí)態(tài)邏輯語(yǔ)言,或?yàn)镃TL計(jì)算樹邏輯語(yǔ)言。
4.根據(jù)權(quán)利要求1所述的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法,其特征是所 述采用靜態(tài)程序分析和動(dòng)態(tài)執(zhí)行相結(jié)合的方法獲得目標(biāo)待分析程序完成系統(tǒng)正常功能所 需要的最大工作閉環(huán)和冗余路徑的過(guò)程如下步驟一、利用程序靜態(tài)分析技術(shù)獲得目標(biāo)待分析程序的關(guān)鍵信息,這些關(guān)鍵信息含有 目標(biāo)待分析程序的基本操作單元?jiǎng)澐?、基本操作單元之間的邏輯跳轉(zhuǎn)關(guān)系、路徑分支點(diǎn)和 路徑條件;步驟二、執(zhí)行目標(biāo)待分析程序,根據(jù)路徑條件對(duì)“污點(diǎn)”變量賦值; 步驟三、在路徑分支點(diǎn)中的第一個(gè)分支節(jié)點(diǎn)處中斷執(zhí)行,判斷該分支節(jié)點(diǎn)處的分支是 否涉及“污點(diǎn)”變量;如果該分支節(jié)點(diǎn)處的分支涉及“污點(diǎn)”變量,則在分支處對(duì)系統(tǒng)做“快 照”處理;如果該分支節(jié)點(diǎn)處的分支不涉及“污點(diǎn)”變量,則繼續(xù)執(zhí)行目標(biāo)待分析程序,并進(jìn) 入相應(yīng)的路徑分支,如果相應(yīng)的路徑分支涉及“污點(diǎn),,變量,則在相應(yīng)的路徑分支處對(duì)系統(tǒng) 做“快照”處理,直到該條路徑探測(cè)完畢;步驟四、一條路徑探測(cè)完畢,對(duì)該路徑上的語(yǔ)義進(jìn)行解釋,判斷該路徑上主要做了什么 操作,并對(duì)操作做記錄;步驟五、按照深度優(yōu)先原則向上回溯至前一分支節(jié)點(diǎn),加載該分支節(jié)點(diǎn)處的系統(tǒng)“快 照”,在保證系統(tǒng)運(yùn)行內(nèi)存一致性的前提下修改該分支節(jié)點(diǎn)上的“污點(diǎn)”變量,將程序驅(qū)動(dòng)至 其他路徑分支,挖掘該路徑分支上的行為;步驟六、判斷該路徑分支上的行為是否覆蓋了系統(tǒng)的正常行為?如不是,重新回到步 驟二;如是,則找到了該目標(biāo)待分析程序的最大工作閉環(huán),未執(zhí)行到的路徑分支為冗余路 徑。
5.一種基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)系統(tǒng),其特征是該惡意行為分析系統(tǒng) 的具體工作過(guò)程如下步驟a、首先利用產(chǎn)品功能說(shuō)明書和操作行為規(guī)范說(shuō)明書獲得所檢系統(tǒng)的正 常功能,并將該正常功能用形式化的語(yǔ)言表示出來(lái),作為所檢系統(tǒng)正常行為約束輸入 到惡意行為分析系統(tǒng)中;步驟b、提取核心控制芯片內(nèi)部的目標(biāo)控制程序,將其反匯編成可調(diào)試的源碼,作為惡意行為分析系統(tǒng)的原始輸入數(shù)據(jù);步驟C、惡意行為分析系統(tǒng)對(duì)源碼進(jìn)行分析預(yù)處理,并將不同結(jié)構(gòu)的源碼用 統(tǒng)一的中間語(yǔ)言表示,以便于分析,同時(shí)提取目標(biāo)控制程序的控制流圖;提取出來(lái)的控 制流圖包含了目標(biāo)控制程序所有的可執(zhí)行路徑和每條路徑上的操作節(jié)點(diǎn);每個(gè)操作節(jié)點(diǎn)代 表目標(biāo)控制程序中的一個(gè)操作基本單元,操作基本單元是按照跳轉(zhuǎn)語(yǔ)句來(lái)劃分的; 步驟d、對(duì)目標(biāo)控制程序進(jìn)行靜態(tài)分析;步驟e、動(dòng)態(tài)地執(zhí)行目標(biāo)控制程序,形成所檢系統(tǒng)正常工作情況下的最大工 作狀態(tài)閉環(huán)和越界行為集;針對(duì)越界行為集中的操作路徑做深度行為特征挖掘,根據(jù) 所檢系統(tǒng)正常行為約束,綜合推理判斷越界行為集中是否包含有對(duì)所檢系統(tǒng)狀態(tài)進(jìn)行修改 或者破壞的行為,進(jìn)而判斷目標(biāo)控制程序是否含有可疑攻擊行為。
6.根據(jù)權(quán)利要求5所述的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)系統(tǒng),其特征是所 述步驟d中的靜態(tài)分析含有三個(gè)基礎(chǔ)性的工作第一.對(duì)目標(biāo)控制程序按照操作基本單元進(jìn)行語(yǔ)義解釋,明確每個(gè)操作基本單元對(duì)所 檢系統(tǒng)究竟做了什么樣的操作;第二 .建立每個(gè)操作基本單元與程序執(zhí)行空間的內(nèi)存映射表,明確每個(gè)操作基本單元 對(duì)應(yīng)在內(nèi)存中的起始地址和末尾地址;建立各個(gè)操作基本單元之間的跳轉(zhuǎn)關(guān)系,這種跳轉(zhuǎn) 關(guān)系與控制流圖是等價(jià)的;第三.計(jì)算程序中各個(gè)分支點(diǎn)上的路徑條件,形成一個(gè)全路徑條件集合;全路徑條件 集合明確地表明目標(biāo)控制程序中存在多少條路徑,以及將程序驅(qū)動(dòng)至該路徑上需要滿足什 么樣的輸入條件。
7.根據(jù)權(quán)利要求5所述的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)系統(tǒng),其特征是所 述步驟e中,通過(guò)動(dòng)態(tài)執(zhí)行目標(biāo)控制程序發(fā)現(xiàn)所檢系統(tǒng)正常工作情況下的最大工作狀態(tài)閉 環(huán)需要遍歷到程序內(nèi)部的所有路徑,其過(guò)程如下步驟e 1.確定程序分支點(diǎn)首先需要通過(guò)對(duì)目標(biāo)控制程序做靜態(tài)分析,找目標(biāo)控制 程序中的分支點(diǎn);分支點(diǎn)是在控制流圖中決定程序執(zhí)行哪一條路徑的關(guān)鍵結(jié)點(diǎn);步驟e 2.確定“污點(diǎn)”輸入變量集“污點(diǎn)”輸入變量是指能夠決定程序分支的變量, “污點(diǎn)”輸入變量集是“污點(diǎn)”輸入變量的集合;步驟e 3.在程序運(yùn)行到分支點(diǎn)時(shí),對(duì)所檢系統(tǒng)作“快照處理”,保存當(dāng)前處理器運(yùn)行到 這個(gè)分支點(diǎn)的所有所檢系統(tǒng)狀態(tài),所檢系統(tǒng)狀態(tài)包括相關(guān)內(nèi)存空間的數(shù)據(jù)和關(guān)鍵寄存器中 的數(shù)據(jù);確定該分支點(diǎn)所依賴的變量,即該分支點(diǎn)的有效“污點(diǎn)”輸入變量,依據(jù)路徑條件對(duì) 其賦值,將程序驅(qū)動(dòng)至某條路徑分支;步驟e 4.在路徑分支上的操作都執(zhí)行完后,對(duì)該路徑分支上的操作進(jìn)行語(yǔ)義解釋,對(duì) 操作行為的功能屬性進(jìn)行挖掘;步驟e 5.按照深度優(yōu)先原則,使處理器回溯至前一個(gè)分支點(diǎn);回溯操作主要是通過(guò) 加載步驟e 3所做的“快照處理”來(lái)實(shí)現(xiàn);回溯到指定分支點(diǎn)后按照前面記錄的路徑條件修 改該分支點(diǎn)所對(duì)應(yīng)的有效“污點(diǎn)”輸入變量的值,將程序驅(qū)動(dòng)至其它路徑分支;步驟e 6.重復(fù)執(zhí)行步驟e 4、步驟e 5直至該路徑分支上的行為覆蓋了所檢系統(tǒng)的正 常行為后程序執(zhí)行完畢。
8.根據(jù)權(quán)利要求7所述的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)系統(tǒng),其特征是所述步驟e 2中的“污點(diǎn)”輸入變量集中含有鍵盤接口、溫度傳感、時(shí)間控制模塊、無(wú)線通信接 口、網(wǎng)絡(luò)接口、注冊(cè)表讀寫函數(shù)和文件讀寫函數(shù)。
9.根據(jù)權(quán)利要求7所述的基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)系統(tǒng),其特征是所 述步驟e 5中修改該分支點(diǎn)所對(duì)應(yīng)的有效“污點(diǎn)”輸入變量的值時(shí)需保證處理器的內(nèi)存一 致,保證處理器的內(nèi)存一致的方法如下第一、通過(guò)對(duì)目標(biāo)控制程序的靜態(tài)分析,建立內(nèi)存“污點(diǎn)”映射表和逆映射表;在內(nèi)存 “污點(diǎn)”映射表里對(duì)感興趣的“污點(diǎn)”輸入變量的名稱和內(nèi)存地址進(jìn)行符號(hào)標(biāo)記,在逆映射 表里記錄某個(gè)符號(hào)所關(guān)聯(lián)到的所有內(nèi)存地址;第二、在對(duì)目標(biāo)控制程序進(jìn)行動(dòng)態(tài)執(zhí)行分析的時(shí)候,使用一系列符號(hào)公式來(lái)表示“污 點(diǎn)”輸入變量之間的依賴關(guān)系或者構(gòu)建符號(hào)約束系統(tǒng);第三、在分支點(diǎn)處修改某個(gè)“污點(diǎn)”輸入變量的值,以驅(qū)動(dòng)目標(biāo)控制程序到特定路徑 時(shí),要首先找到所有與此“污點(diǎn)”輸入變量的符號(hào)標(biāo)記相關(guān)聯(lián)的符號(hào)及符號(hào)公式,形成符號(hào) 約束公式組;第四、利用約束求解器對(duì)該符號(hào)約束公式組進(jìn)行求解,根據(jù)求解的結(jié)果進(jìn)行相關(guān)“污 點(diǎn)”輸入變量的修改。
全文摘要
本發(fā)明涉及一種基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法及系統(tǒng);基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)方法為首先根據(jù)系統(tǒng)的正常功能定義目標(biāo)待分析程序的正常行為約束,然后采用靜態(tài)程序分析和動(dòng)態(tài)程序執(zhí)行相結(jié)合的方法獲得目標(biāo)待分析程序完成系統(tǒng)正常功能所需要的最大工作閉環(huán)和冗余路徑,最后,對(duì)冗余路徑上的程序行為進(jìn)行語(yǔ)義解釋,根據(jù)系統(tǒng)正常行為約束判斷冗余路徑中是否存在針對(duì)該系統(tǒng)的惡意攻擊行為;按照本發(fā)明的檢測(cè)方法可以設(shè)計(jì)出基于路徑驅(qū)動(dòng)的可執(zhí)行程序安全性檢測(cè)系統(tǒng);本發(fā)明可以大大減小安全分析人員的代碼分析工作量。
文檔編號(hào)G06F21/22GK102073825SQ20111003121
公開日2011年5月25日 申請(qǐng)日期2011年1月28日 優(yōu)先權(quán)日2011年1月28日
發(fā)明者張平, 徐冰, 李清寶, 牛小鵬 申請(qǐng)人:李清寶