亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

低計算機系統(tǒng)資源開銷的軟件漏洞檢測系統(tǒng)的制作方法

文檔序號:6338617閱讀:208來源:國知局
專利名稱:低計算機系統(tǒng)資源開銷的軟件漏洞檢測系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及的是一種計算機技術(shù)領(lǐng)域的檢測系統(tǒng),具體是一種低計算機系統(tǒng)資源 開銷的軟件漏洞檢測系統(tǒng)。
背景技術(shù)
在程序的運行過程中,信息總是在程序內(nèi)部對象間傳遞,從而形成了信息流,給程 序分析提供了一個切入點。污染分析恰是信息流分析的一種形式。在污染分析中,不可信 的數(shù)據(jù)來源被認為是污染源,它們將被附上某種標簽或標記來標識它們的污染狀態(tài)。
動態(tài)污染傳播便是在上述基礎(chǔ)上,在程序的執(zhí)行過程中按規(guī)則進行污染傳播。所 謂的污染傳播是指如果對象A的值直接來源于污染對象B的值,或是通過對污染對象B的 值進行一些計算而獲得,我們則認為污染傳播發(fā)生了,對象A被污染并被附上與對象B —樣 的污染標記。這些標記能幫助程序分析者跟蹤可疑數(shù)據(jù),探測其是否影響系統(tǒng)的某些特權(quán) 區(qū)域或敏感區(qū)域,從而發(fā)現(xiàn)軟件漏洞和惡意代碼的惡意行為。
因此,基于動態(tài)污染傳播的軟件漏洞和惡意軟件檢測是一種行之有效的檢測大量 軟件漏洞和脆弱點的方法。污染信息能幫助程序分析者跟蹤程序的信息流,了解和記錄污 染源數(shù)據(jù)對程序的影響,最終找出程序輸出結(jié)果和源數(shù)據(jù)之間的關(guān)系。
常規(guī)的動態(tài)污染分析只對數(shù)據(jù)給出了兩種狀態(tài)污染和未污染。這種方法只考慮 了污染數(shù)據(jù)所含的值,而忽略了污染數(shù)據(jù)的其他屬性,如污染數(shù)據(jù)的長度等。這將使得最終 的分析結(jié)果精確度不高,無法盡可能多地發(fā)現(xiàn)軟件漏洞和惡意代碼的惡意行為。
現(xiàn)有的相關(guān)系統(tǒng)往往還有如下一種或多種缺點(1)對程序源文件的需求、(2)高 計算機系統(tǒng)資源開銷、(3)缺乏足夠的檢測規(guī)則,這些缺點限制了這些系統(tǒng)的用途。發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有系統(tǒng)存在的上述不足,提出一種基于動態(tài)污染傳播的低計算機系 統(tǒng)資源開銷的軟件漏洞檢測系統(tǒng),通過引入“受控污染”這一新的狀態(tài),提高了程序分析的 精確度,拓寬了漏洞檢測的范圍,通過增加無關(guān)API過濾和基本塊執(zhí)行技術(shù),達到了低計算 機系統(tǒng)資源開銷的目的,使得本系統(tǒng)成為一種基于動態(tài)污染傳播的低計算機系統(tǒng)資源開銷 的軟件漏洞檢測系統(tǒng)。
本發(fā)明是通過以下技術(shù)方案實現(xiàn)的
本發(fā)明包括二進制代碼動態(tài)插入模塊、污染傳播初始化模塊、信息流跟蹤模塊、 污染傳播管理模塊、漏洞規(guī)則庫,其中二進制代碼動態(tài)插入模塊負責在用戶程序運行過程 中,在用戶程序的二進制代碼中動態(tài)插入二進制代碼,并將用戶程序的二進制代碼轉(zhuǎn)化為 匯編代碼傳送給污染傳播初始化模塊和信息流跟蹤模塊;污染傳播初始化模塊從二進制代 碼動態(tài)插入模塊接收用戶程序的匯編代碼,并將存放源數(shù)據(jù)的寄存器和內(nèi)存單元信息傳送 給污染傳播管理模塊;信息流跟蹤模塊從二進制代碼動態(tài)插入模塊接收用戶程序的匯編代 碼,提取匯編代碼所使用的內(nèi)存單元和寄存器信息并查詢污染傳播管理模塊,將從污染傳播管理模塊得到的查詢結(jié)果和匯編代碼的操作碼信息傳入漏洞規(guī)則庫,若未從漏洞規(guī)則庫 處得到危險反饋,則根據(jù)匯編代碼的操作碼信息確定污染傳播方式,并將受影響的寄存器 和內(nèi)存單元信息傳送給污染傳播管理模塊,若從危險規(guī)則庫得到危險反饋,則將漏洞信息 傳送給系統(tǒng)輸出。
所述的二進制代碼動態(tài)插入模塊包括=Intel開發(fā)的動態(tài)代碼插入工具Pin、自定 義程序分析文件。其中=Intel開發(fā)的動態(tài)代碼插入工具Pin能實現(xiàn)在程序運行時,在程序 的任意位置插入任意二進制代碼,這些插入代碼使得Pin能跟蹤API和系統(tǒng)信息、調(diào)用用戶 自定義程序分析文件中的分析函數(shù),從而完成特定的程序分析。用戶自定義程序分析文件 完成對Pin所提供的回調(diào)函數(shù)的實現(xiàn)。
所述的污染傳播初始化模塊包括用戶程序載入后的初始受污染的內(nèi)存地址空間 的定位、用戶程序載入后的初始受污染的寄存器的定位。
所述的信息流跟蹤模塊包括指令級分析模塊、API及庫函數(shù)級分析模塊。其中 指令級分析模塊根據(jù)每條匯編指令的操作碼確定相應的污染傳播方式、API及庫函數(shù)級分 析模塊根據(jù)API數(shù)據(jù)庫的相應記錄來直接獲得其污染傳播方式。
所述的API數(shù)據(jù)庫包含每個常見API和庫函數(shù)所涉及的計算機內(nèi)存單元和寄存器 的記錄。
所述的污染傳播管理模塊包括內(nèi)存污染管理模塊、寄存器污染管理模塊。其中 內(nèi)存污染管理模塊采用鏈式哈希表數(shù)據(jù)結(jié)構(gòu)記錄受污染的內(nèi)存地址空間、寄存器污染管理 模塊采用數(shù)組記錄系統(tǒng)中所有寄存器的污染狀態(tài)。
所述的受控污染狀態(tài)的定義為受控污染狀態(tài)是這樣一種狀態(tài),包含該狀態(tài)的對 象的值不直接來源于污染對象的值,或是對污染對象的值進行算術(shù)計算后獲得,來源于污 染對象的其他性質(zhì)(如長度等)。
本發(fā)明對于不會產(chǎn)生污染傳播的API直接跳過對它的分析,從而降低系統(tǒng)資源開 銷。以基本塊為單位進行執(zhí)行,與以單條指令為單位執(zhí)行相比,減少了在原程序代碼和分析 代碼間頻繁發(fā)生的上下文切換的次數(shù),降低了系統(tǒng)資源開銷。本發(fā)明能夠增加考慮“受控污 染”這一新的狀態(tài),添加了對污染數(shù)據(jù)的其他屬性的關(guān)注,使得本系統(tǒng)能在更廣的范圍內(nèi)發(fā) 現(xiàn)軟件脆弱點和漏洞,無關(guān)API過濾和基本塊執(zhí)行降低了本系統(tǒng)的運行資源和運行時間開 銷。


圖1系統(tǒng)架構(gòu)示意圖。
圖2實施例緩存區(qū)溢出漏洞示意圖。
具體實施方式
下面對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術(shù)方案為前提下進行 實施,給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施 例。
如圖1所示,本實施例包括二進制代碼動態(tài)插入模塊、污染傳播初始化模塊、信 息流跟蹤模塊、污染傳播管理模塊、漏洞規(guī)則庫。其中二進制代碼動態(tài)插入模塊負責在用4戶程序運行過程中,在用戶程序的二進制代碼中動態(tài)插入二進制代碼,并將用戶程序的二 進制代碼轉(zhuǎn)化為匯編代碼傳送給污染傳播初始化模塊和信息流跟蹤模塊;污染傳播初始化 模塊從二進制代碼動態(tài)插入模塊接收用戶程序的匯編代碼,并將存放源數(shù)據(jù)的寄存器和內(nèi) 存單元信息傳送給污染傳播管理模塊;信息流跟蹤模塊從二進制代碼動態(tài)插入模塊接收 用戶程序的匯編代碼,提取匯編代碼所使用的內(nèi)存單元和寄存器信息并查詢污染傳播管理 模塊,將從污染傳播管理模塊得到的查詢結(jié)果和匯編代碼的操作碼信息傳入漏洞規(guī)則庫, 若未從漏洞規(guī)則庫處得到危險反饋,則根據(jù)匯編代碼的操作碼信息確定污染傳播方式,并 將受影響的寄存器和內(nèi)存單元信息傳送給污染傳播管理模塊,若從危險規(guī)則庫得到危險反 饋,則將漏洞信息傳送給系統(tǒng)輸出。
所述的二進制代碼動態(tài)插入模塊包括=Intel開發(fā)的動態(tài)代碼插入工具Pin、自定 義程序分析文件。其中=Intel開發(fā)的動態(tài)代碼插入工具Pin能實現(xiàn)在程序運行時,在程序 的任意位置插入任意二進制代碼,這些插入代碼使得Pin能跟蹤API和系統(tǒng)信息、調(diào)用用戶 自定義程序分析文件中的分析函數(shù),從而完成特定的程序分析。用戶自定義程序分析文件 完成對Pin所提供的回調(diào)函數(shù)的實現(xiàn)。
所述的污染傳播初始化模塊包括用戶程序載入后的初始受污染的內(nèi)存地址空間 的定位、用戶程序載入后的初始受污染的寄存器的定位。
所述的信息流跟蹤模塊包括指令級分析模塊、API及庫函數(shù)級分析模塊。其中 指令級分析模塊根據(jù)每條匯編指令的操作碼確定相應的污染傳播方式、API及庫函數(shù)級分 析模塊根據(jù)API數(shù)據(jù)庫的相應記錄來直接獲得其污染傳播方式。
所述的API數(shù)據(jù)庫包含每個常見API和庫函數(shù)所涉及的計算機內(nèi)存單元和寄存器 的記錄。
所述的污染傳播管理模塊包括內(nèi)存污染管理模塊、寄存器污染管理模塊。其中 內(nèi)存污染管理模塊采用鏈式哈希表數(shù)據(jù)結(jié)構(gòu)記錄受污染的內(nèi)存地址空間、寄存器污染管理 模塊采用數(shù)組記錄系統(tǒng)中所有寄存器的污染狀態(tài)。
本實施例具體操作過程如下
初始狀態(tài)假定源數(shù)據(jù)是不可信數(shù)據(jù),被認為是污染數(shù)據(jù),則在用戶程序載入后, 二進制代碼動態(tài)插入模塊首先在用戶程序的二進制代碼中插入分析代碼或函數(shù)調(diào)用語句, 以此來在程序運行時動態(tài)跟蹤API和系統(tǒng)信息、調(diào)用用戶自定義的程序分析代碼,并將正 在執(zhí)行中的二進制指令所對應的匯編指令傳送給污染傳播初始化模塊和信息流跟蹤模塊
污染傳播初始化模塊從二進制代碼動態(tài)插入模塊接收到匯編指令后,分析該匯編 指令的操作數(shù),找到源數(shù)據(jù)hello所對應的內(nèi)存單元,將內(nèi)存單元的信息傳送給污染傳播 管理模塊
污染傳播模塊接收到污染傳播初始化模塊的信息,在本模塊所維護的計算機內(nèi) 存和寄存器的數(shù)據(jù)結(jié)構(gòu)中,將對應的內(nèi)存單元或寄存器打上污染標記信息流跟蹤模塊從 二進制代碼動態(tài)插入模塊接收匯編代碼,以用戶程序的每個基本塊為單位進行信息流跟 蹤,并在污染傳播管理模塊和漏洞規(guī)則庫的協(xié)作下,檢測程序漏洞。當分析到int Ien = strlen (strlnput)時,由于strlnput是污染變量,且Ien的值并不是由strlnput直接賦 值得到的,而是經(jīng)過對strlnput算術(shù)運算得到,因此被標記上“受控污染”標記。當分析到 foo (strlnput, Ien)時,信息流跟蹤模塊查詢本模塊內(nèi)的API數(shù)據(jù)庫,在發(fā)現(xiàn)無此API記錄后,fooO函數(shù)被認為是與污染傳播無關(guān)的API而被直接過濾,信息流跟蹤模塊進入foo函 數(shù)體繼續(xù)分析。當分析到lstrcpyn (buf,strhput,Ien)時,信息流跟蹤模塊查詢本模塊內(nèi) 的API數(shù)據(jù)庫,在識別出庫函數(shù)IstrcpynO后從API數(shù)據(jù)庫內(nèi)得到IstrcpynO在所涉及 的計算機內(nèi)存單元和寄存器的記錄,并將該信息傳入污染傳播模塊,查詢得到相應的內(nèi)存 單元和寄存器的污染狀態(tài),將返回的污染狀態(tài)信息和IstrcpynO的庫函數(shù)名傳入漏洞規(guī) 則庫進行檢索,發(fā)現(xiàn)滿足其中的漏洞規(guī)則,系統(tǒng)輸出模塊發(fā)出警報,漏洞發(fā)現(xiàn)。
在實施例中,軟件漏洞來源于語句Istrcpyn (buf,strlnput, len),此語句在實際 運行時會出現(xiàn)如下3種情況
如果源數(shù)據(jù)較長,使得strlnput的長度大于buf的長度,則在strlnput中的數(shù)據(jù) 復制到buf后,buf中的數(shù)據(jù)會覆蓋tmp的一部分,此時雖然fooO函數(shù)調(diào)用的返回地址未 被覆蓋,但仍存在較輕的緩存區(qū)溢出漏洞,如圖2中空心箭頭所示。
如果源數(shù)據(jù)較長,使得strlnput的長度大于buf的長度,則在strlnput中的數(shù)據(jù) 復制到buf后,buf中的數(shù)據(jù)會覆蓋到foo函數(shù)調(diào)用的返回地址,此時發(fā)生嚴重的緩存區(qū)溢 出漏洞,如圖2中實心箭頭所示。
如果源數(shù)據(jù)較短,使得strlnput的長度小于或等于buf的長度,則在strlnput中 的數(shù)據(jù)復制到buf后,buf中的數(shù)據(jù)不會覆蓋其他任何非buf所占的內(nèi)存區(qū)域,此時雖然程 序運行正常,但該程序仍存在潛在的緩存區(qū)溢出漏洞。
對于情況2),現(xiàn)有的基于動態(tài)污染傳播的軟件漏洞檢測系統(tǒng)都能發(fā)現(xiàn)并發(fā)出警 報,而對于其他兩種情況則不能處理。本系統(tǒng)通過引入API數(shù)據(jù)庫、漏洞規(guī)則庫、受控污 染狀態(tài)來實現(xiàn)對情況1)和幻的發(fā)現(xiàn)和報警。具體過程為通過查詢API數(shù)據(jù)庫,識別出 IstrcpynO庫函數(shù),并依照API數(shù)據(jù)庫中的記錄查詢污染傳播管理模塊,然后將查詢得到 的該庫函數(shù)所涉及的內(nèi)存和寄存器的污染信息傳入漏洞規(guī)則庫進行漏洞規(guī)則檢索,從而來 檢測是否存在漏洞。
通過測試,本實施例考慮了 “受控污染”這一新的狀態(tài),添加了對污染數(shù)據(jù)的其他 屬性的關(guān)注,提高了程序分析結(jié)果的精確度,并能在更廣的范圍內(nèi)發(fā)現(xiàn)軟件脆弱點和漏洞, 無關(guān)API過濾和基本塊執(zhí)行降低了本系統(tǒng)的運行資源和運行時間開銷。
權(quán)利要求
1.一種基于動態(tài)污染傳播的低計算機系統(tǒng)資源開銷的軟件漏洞檢測系統(tǒng),其特征在 于,包括二進制代碼動態(tài)插入模塊、污染傳播初始化模塊、信息流跟蹤模塊、污染傳播管理 模塊、漏洞規(guī)則庫,其中二進制代碼動態(tài)插入模塊負責在用戶程序運行過程中,在用戶程 序的二進制代碼中動態(tài)插入二進制代碼,并將用戶程序的二進制代碼轉(zhuǎn)化為匯編代碼傳送 給污染傳播初始化模塊和信息流跟蹤模塊;污染傳播初始化模塊從二進制代碼動態(tài)插入模 塊接收用戶程序的匯編代碼,并將存放源數(shù)據(jù)的寄存器和內(nèi)存單元信息傳送給污染傳播管 理模塊;信息流跟蹤模塊從二進制代碼動態(tài)插入模塊接收用戶程序的匯編代碼,提取匯編 代碼所使用的內(nèi)存單元和寄存器信息并查詢污染傳播管理模塊,將從污染傳播管理模塊得 到的查詢結(jié)果和匯編代碼的操作碼信息傳入漏洞規(guī)則庫,若未從漏洞規(guī)則庫處得到危險反 饋,則根據(jù)匯編代碼的操作碼信息確定污染傳播方式,并將受影響的寄存器和內(nèi)存單元信 息傳送給污染傳播管理模塊,若從危險規(guī)則庫得到危險反饋,則將漏洞信息傳送給系統(tǒng)輸 出O
2.根據(jù)權(quán)利要求1所述的基于動態(tài)污染傳播的低計算機系統(tǒng)資源開銷的軟件漏洞檢 測系統(tǒng),其特征是,所述的二進制代碼動態(tài)插入模塊包括=Intel開發(fā)的動態(tài)代碼插入工具 Pin、自定義程序分析文件。其中=Intel開發(fā)的動態(tài)代碼插入工具Pin能實現(xiàn)在程序運行 時,在程序的任意位置插入任意二進制代碼,這些插入代碼使得Pin能跟蹤API和系統(tǒng)信 息、調(diào)用用戶自定義程序分析文件中的分析函數(shù),從而完成特定的程序分析。用戶自定義程 序分析文件完成對Pin所提供的回調(diào)函數(shù)的實現(xiàn)。
3.根據(jù)權(quán)利要求1所述的基于動態(tài)污染傳播的低計算機系統(tǒng)資源開銷的軟件漏洞檢 測系統(tǒng),其特征是,所述的污染傳播初始化模塊包括用戶程序載入后的初始受污染的內(nèi)存 地址空間的定位、用戶程序載入后的初始受污染的寄存器的定位。
4.根據(jù)權(quán)利要求1所述的基于動態(tài)污染傳播的低計算機系統(tǒng)資源開銷的軟件漏洞檢 測系統(tǒng),其特征是,所述的信息流跟蹤模塊包括指令級分析模塊、API及庫函數(shù)級分析模 塊。其中指令級分析模塊根據(jù)每條匯編指令的操作碼確定相應的污染傳播方式、API及庫 函數(shù)級分析模塊根據(jù)API數(shù)據(jù)庫的相應記錄來直接獲得其污染傳播方式。
5.根據(jù)權(quán)利要求4所述的基于動態(tài)污染傳播的低計算機系統(tǒng)資源開銷的軟件漏洞檢 測系統(tǒng),其特征是,所述的API數(shù)據(jù)庫包含每個常見API和庫函數(shù)所涉及的計算機內(nèi)存單元 和寄存器的記錄。
6.根據(jù)權(quán)利要求1所述的基于動態(tài)污染傳播的低計算機系統(tǒng)資源開銷的軟件漏洞檢 測系統(tǒng),其特征是,所述的污染傳播管理模塊包括內(nèi)存污染管理模塊、寄存器污染管理模 塊。其中內(nèi)存污染管理模塊采用鏈式哈希表數(shù)據(jù)結(jié)構(gòu)記錄受污染的內(nèi)存地址空間、寄存器 污染管理模塊采用數(shù)組記錄系統(tǒng)中所有寄存器的污染狀態(tài)。
全文摘要
一種計算機技術(shù)領(lǐng)域的低計算機系統(tǒng)資源開銷的軟件漏洞檢測系統(tǒng)。二進制代碼動態(tài)插入模塊負責在用戶程序運行過程中,將用戶程序的二進制代碼轉(zhuǎn)化為匯編代碼傳送給污染傳播初始化模塊和信息流跟蹤模塊;污染傳播初始化模塊從二進制代碼動態(tài)插入模塊接收用戶程序的匯編代碼,并將存放源數(shù)據(jù)的寄存器和內(nèi)存單元信息傳送給污染傳播管理模塊;信息流跟蹤模塊接收用戶程序的匯編代碼,提取匯編代碼所使用的內(nèi)存單元和寄存器信息并查詢污染傳播管理模塊,將從污染傳播管理模塊得到的查詢結(jié)果和匯編代碼的操作碼信息傳入漏洞規(guī)則庫。本發(fā)明降低了系統(tǒng)資源開銷減少了在原程序代碼和分析代碼間頻繁發(fā)生的上下文切換的次數(shù),降低了系統(tǒng)資源開銷。
文檔編號G06F21/00GK102034045SQ201010587600
公開日2011年4月27日 申請日期2010年12月15日 優(yōu)先權(quán)日2010年12月15日
發(fā)明者倪康奇, 周侃, 張若愚, 王卓, 黃實秋 申請人:上海交通大學
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1