[發(fā)明專利]計算機程序?qū)嶋H運行時觸發(fā)軟件漏洞的檢測系統(tǒng)無效
| 申請?zhí)枺?/td> | 201010513779.9 | 申請日: | 2010-10-21 |
| 公開(公告)號: | CN101968766A | 公開(公告)日: | 2011-02-09 |
| 發(fā)明(設計)人: | 張若愚;王卓;周侃;黃實秋;黃山 | 申請(專利權)人: | 上海交通大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 上海交達專利事務所 31201 | 代理人: | 王錫麟;王桂忠 |
| 地址: | 200240 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 計算機 程序 實際 運行 觸發(fā) 軟件 漏洞 檢測 系統(tǒng) | ||
技術領域
本發(fā)明涉及的是一種計算機技術領域的檢測系統(tǒng),具體是一種計算機程序?qū)嶋H運行時觸發(fā)軟件漏洞的檢測系統(tǒng)。
背景技術
程序分析技術是指針對計算機程序推導出其結構和數(shù)據(jù)流程的分析技術。在軟件維護檢測和軟件理解的過程中,我們需要對目標程序的結構和數(shù)據(jù)流程進行分析,程序分析系統(tǒng)的輸出一般為數(shù)據(jù)流圖和控制流圖。數(shù)據(jù)流圖以圖表的方法表達程序系統(tǒng)中信息的變換和傳遞過程,特別是數(shù)據(jù)被引用和被定義的情況;控制流圖經(jīng)常使用圖或抽象語法樹的形式刻畫程序結構。
動態(tài)程序分析技術是對實際執(zhí)行中的程序進行分析的技術,即在程序執(zhí)行的情況下,通過對程序的運行環(huán)境(環(huán)境變量、內(nèi)存、堆棧等)進行分析,來檢測程序是否存在漏洞的技術。動態(tài)程序分析技術能檢測到那些在程序?qū)嶋H運行時才會觸發(fā)的漏洞,不需要修改目標程序源代碼或其二進制代碼,在一定程度上提高了程序的保密性。與之相對的是靜態(tài)程序分析技術,指在不執(zhí)行程序的情況下獲得程序編譯時的信息,并根據(jù)這些信息對特定的漏洞模式進行檢測的技術,簡稱為靜態(tài)分析。大多數(shù)情況下,靜態(tài)分析的輸入都是程序的源代碼,只有少數(shù)情況會使用其二進制代碼。現(xiàn)階段,靜態(tài)分析技術越來越多地被應用到程序優(yōu)化、軟件錯誤檢測等領域。
但是,無論動態(tài)程序分析還是靜態(tài)程序分析,都有其無法克服的缺點。對于動態(tài)程序分析技術而言,因為程序在每一次動態(tài)執(zhí)行的過程中只能沿一條路徑執(zhí)行下去,所以為了能達到滿意的路徑覆蓋率,我們必須重復執(zhí)行動態(tài)分析足夠多的次數(shù),但即使這樣路徑覆蓋率也難以達到百分之百。對于靜態(tài)程序分析技術而言,雖然能夠達到百分之百的程序路徑覆蓋率,但是它并不能檢測到那些在程序?qū)嶋H運行時才會觸發(fā)的漏洞,并且一般漏洞的誤報率較高,同時,直接對整個大型程序進行靜態(tài)分析會導致很大的時間和系統(tǒng)資源開銷。更重要的一點是,現(xiàn)有的相關系統(tǒng)往往需要程序源代碼才能進行程序分析和漏洞檢測,并不能直接分析目標程序的二進制代碼,這個缺點也限制了這些系統(tǒng)的用途。
發(fā)明內(nèi)容
本發(fā)明針對現(xiàn)有技術中的系統(tǒng)上存在的上述不足,提出了一種計算機程序?qū)嶋H運行時觸發(fā)軟件漏洞的檢測系統(tǒng)。本發(fā)明通過結合動態(tài)程序分析和靜態(tài)分析路徑補全這兩種技術,既能檢測到那些在程序?qū)嶋H運行時才會觸發(fā)的漏洞,又能達到較高的程序路徑覆蓋率,對動態(tài)分析過程中沒有覆蓋到的路徑進行漏洞檢測,提高了漏洞檢測的成功率,降低了漏洞誤報率。同時,靜態(tài)分析路徑補全技術只分析動態(tài)分析未執(zhí)行到的路徑,而并非全部的程序路徑,這樣大大降低了時間和系統(tǒng)資源的開銷。
本發(fā)明是通過以下技術方案實現(xiàn)的:
本發(fā)明包括:二進制代碼動態(tài)插入模塊、程序基本塊識別模塊、函數(shù)調(diào)用圖構建模塊、控制流圖構建模塊、函數(shù)識別模塊、靜態(tài)分析模塊;二進制代碼動態(tài)插入模塊將用戶自定義的分析代碼插入程序的任意位置,并跟蹤程序調(diào)用的系統(tǒng)API,最后將分析結果通過自定義程序分析文件提供的回調(diào)函數(shù)返回并傳遞給程序基本塊識別模塊;程序基本塊識別模塊根據(jù)二進制代碼動態(tài)插入模塊傳遞的分析結果將目標程序按基本塊規(guī)則劃分,并將劃分的基本塊集合傳遞給函數(shù)調(diào)用圖構建模塊和控制流圖構建模塊;函數(shù)調(diào)用圖構建模塊對基本塊識別模塊傳遞過來的基本塊集合進行處理,得到基本的函數(shù)塊集合,并將此函數(shù)塊集合傳遞給函數(shù)識別模塊,根據(jù)返回的函數(shù)行為特征得到函數(shù)之間的相互調(diào)用關系,以此構建函數(shù)調(diào)用圖,并將函數(shù)調(diào)用信息傳遞給控制流圖構建模塊;控制流圖構建模塊根據(jù)程序基本塊識別模塊傳遞來的基本塊集合構建控制流節(jié)點集合并維護它們的相互關系,并將構建的節(jié)點集合和程序執(zhí)行時獲得的動態(tài)信息傳遞給靜態(tài)分析模塊,根據(jù)返回的包含未執(zhí)行路徑的完整執(zhí)行信息構建完整的程序控制流信息和程序控制流圖,并將此信息作為系統(tǒng)輸出傳遞給用戶;函數(shù)識別模塊提取函數(shù)調(diào)用圖構建模塊傳遞過來的基本函數(shù)塊的調(diào)用地址,根據(jù)此信息查找API數(shù)據(jù)庫獲得函數(shù)的索引值和行為特征,并將找到的函數(shù)索引值和行為特征作為輸出返回給函數(shù)調(diào)用圖構建模塊;靜態(tài)分析模塊接受控制流圖構建模塊傳遞來的節(jié)點集合和記錄的動態(tài)執(zhí)行路徑信息,補全未執(zhí)行到的路徑信息,生成完整的程序執(zhí)行路徑信息,并將這些信息作為輸出返回給控制流圖構建模塊。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海交通大學,未經(jīng)上海交通大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010513779.9/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。





