[發(fā)明專利]一種針對堆可控分配漏洞的檢測方法及系統(tǒng)有效
| 申請?zhí)枺?/td> | 201310277696.8 | 申請日: | 2013-07-03 |
| 公開(公告)號: | CN103389939A | 公開(公告)日: | 2013-11-13 |
| 發(fā)明(設計)人: | 陳渝;肖奇學;郭世澤;史元春;徐永健;茅俊杰;趙靜;陳韜 | 申請(專利權)人: | 清華大學;中國人民解放軍總參謀部第五十四研究所 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36;G06F21/57 |
| 代理公司: | 北京理工大學專利中心 11120 | 代理人: | 高燕燕 |
| 地址: | 10008*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 針對 可控 分配 漏洞 檢測 方法 系統(tǒng) | ||
技術領域
本發(fā)明涉及一種針對堆可控分配漏洞的檢測方法及系統(tǒng),屬于操作系統(tǒng)漏洞檢測領域。
背景技術
內(nèi)存管理方面的安全問題是操作系統(tǒng)安全領域非常重要的一部分,內(nèi)存分配以及內(nèi)存訪問安全問題的研究非常重要。一般來說漏洞挖掘的方法分為靜態(tài)檢測和動態(tài)運行測試。它們分別指:
靜態(tài)檢測:主要是通過對軟件系統(tǒng)的源代碼進行安全掃描,根據(jù)程序中數(shù)據(jù)流,控制流,語義等信息與其特有軟件安全規(guī)則庫進行匹對,從中找出代碼中潛在的安全漏洞。靜態(tài)的源代碼安全測試是非常有用的方法,它可以在編碼階段找出所有可能存在安全風險的代碼,這樣開發(fā)人員可以在早期解決潛在的安全問題。
動態(tài)測試:動態(tài)檢測技術是一種不同于靜態(tài)檢測技術的動態(tài)的檢測技術,它通過調(diào)試器運行被檢測的軟件的某項功能,檢查運行結果與預期結果的差距,來確定被測軟件此功能是否存在安全缺陷。這是一種針對軟件功能的檢測技術,它主要由構造測試用例,調(diào)試軟件程序,分析軟件程序三個部分構成。
現(xiàn)有的漏洞檢測技術主要是基于源代碼的靜態(tài)分析、基于二進制代碼的靜態(tài)分析、Fuzzing測試技術。單純的靜態(tài)檢測準確度低、誤報率高,而動態(tài)測試的覆蓋率又比較低,漏報較多。
可控堆分配漏洞定義:當一個函數(shù)調(diào)用,在某個分支或路徑上進行堆分配操作(即malloc),在linux內(nèi)核中一般調(diào)用kmalloc來實現(xiàn)。而此時要分配的大小可由函數(shù)傳入的參數(shù)來控制的,那么該函數(shù)存在可控堆分配漏洞。攻擊者可以通過構造相應的輸入使得kmalloc的大小為0或者很大的數(shù),從而使得程序的運行得到意想不到的結果。如果此時的可控分配大小還可以存在整數(shù)溢出,使得通過一個較大的輸入因子溢出后分配的結果為較小的值,而這種情況容易被程序員疏忽,在后面進行內(nèi)存操作時發(fā)生錯誤。如cve-2004-1334、cve-2004-2013、cve-2011-1746,皆為這類型漏洞。
可控堆分配漏洞并不被認為是一種新的漏洞類型(像緩沖區(qū)溢出漏洞一樣)。但是我們認為這是一種新的類型的代碼缺陷,類似整數(shù)溢出,許多時候會發(fā)生,但是是合法的,且不會導致漏洞。但這種缺陷發(fā)生的同時,還有整數(shù)溢出發(fā)生,那么之后發(fā)生堆緩沖區(qū)溢出的可能性將大大增加,從而導致嚴重的安全隱患。
發(fā)明內(nèi)容
本發(fā)明提供一種針對堆可控分配漏洞的檢測方法及系統(tǒng),基于融合了使用虛擬機技術動態(tài)執(zhí)行測試和使用符號執(zhí)行靜態(tài)分析技術的通用測試平臺,覆蓋率比Fuzzing等動態(tài)測試技術高,并且同時具備動態(tài)檢測的準確性,誤報率低。
該針對堆可控分配漏洞的檢測方法包括以下步驟:
第一步:對目標分析文件進行逆向分析,通過反匯編、反編譯、調(diào)試分析手段,對目標分析文件進行信息的獲取和還原,獲取的信息包括文件的執(zhí)行流程信息、函數(shù)名稱、參數(shù)信息、資源信息;
第二步:對需要分析的文件的函數(shù)參數(shù)進行符號化;
第三步:利用符號執(zhí)行引擎對目標分析文件進行具體執(zhí)行和符號執(zhí)行相結合的分析,從而遍歷所有路徑;
第四步:利用二進制翻譯方法對堆分配函數(shù)進行監(jiān)控分析;
第五步:在目標分析文件執(zhí)行到被監(jiān)控的堆分配函數(shù)處時,對堆分配函數(shù)進行分析,通過堆棧獲取堆分配函數(shù)需要分配的大小,并判斷是否為符號值,如果是具體值,則繼續(xù)運行,跳轉至第八步;如果是符號值,則報告該路徑所達的堆分配函數(shù)是存在可控堆分配漏洞,返回第三步;
第六步:對符號值進行分析求解,如果size可以等于0,則表示通過設置相關參數(shù),可以使得堆分配函數(shù)分配大小為0的內(nèi)存,則報告中等危險漏洞;
第七步:對符號值size進行整數(shù)溢出分析,并結合該路徑上對size的約束,檢測是否存在通過設定相應的變量,使得該符號值size存在整數(shù)溢出的可能,如果存在,則報告高等危險漏洞,并結束該路徑。
本發(fā)明的優(yōu)點在于將選擇性符號執(zhí)行和整數(shù)溢出錯誤檢測結合,在脫離了源碼依賴的基礎上又提高了檢測結果的正確性和全面性,而且在時間消耗上也比完全符號執(zhí)行更有優(yōu)勢,這是目前單純的動態(tài)和靜態(tài)整數(shù)溢出錯誤檢測所無法同時達到的。
附圖說明
圖1是本發(fā)明所提出方法工作流程圖;
圖2為本發(fā)明針對堆可控分配漏洞的檢測系統(tǒng)結構圖。
具體實施方式
下面結合具體實施例和附圖詳細說明本發(fā)明,但本發(fā)明并不僅限于此。
如圖1所示,本發(fā)明將提出的針對可控堆分配漏洞進行檢測的方法,包括以下步驟:
1、對目標分析文件進行逆向工程,獲取需要分析的函數(shù)和參數(shù)信息;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于清華大學;中國人民解放軍總參謀部第五十四研究所,未經(jīng)清華大學;中國人民解放軍總參謀部第五十四研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310277696.8/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種納米機器人控制設備
- 下一篇:一種加強結構的三維測量劃線機水平臂





