[發明專利]一種二進制程序漏洞自動化定位方法有效
| 申請號: | 201310104953.8 | 申請日: | 2013-03-28 |
| 公開(公告)號: | CN103198260A | 公開(公告)日: | 2013-07-10 |
| 發明(設計)人: | 陳愷;張穎君;趙險峰 | 申請(專利權)人: | 中國科學院信息工程研究所 |
| 主分類號: | G06F21/57 | 分類號: | G06F21/57;G06F17/30 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 余長江 |
| 地址: | 100093 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 二進制 程序 漏洞 自動化 定位 方法 | ||
技術領域
本發明主要涉及漏洞定位方法,更確切地是涉及一種二進制程序漏洞自動化定位方法,屬于網絡信息安全領域。
背景技術
漏洞已經給Internet帶來很大威脅:一方面,攻擊者可以利用漏洞入侵系統;另一方面,蠕蟲利用漏洞進行傳播,并產生破壞。近些年,軟件漏洞數量持續上漲,但是其補丁的生成需要很長時間,據分析微軟當前的21個漏洞(MS11-087~MS12-007)公布和補丁發布平均需要115天。補丁的生成需要較長時間的主要原因:首先,軟件越來越復雜,分析人員需要針對數以萬計的指令進行分析,因此,在軟件中快速定位漏洞代碼是困難的;其次,漏洞種類繁多,分析人員需要熟悉各種類型,也增加了查找漏洞的難度;最后,由于大部分程序并不開源,只有開發人員可以對漏洞分析并打補丁,降低了第三方專業人員的參與度,減少了發布補丁的有效通道。由此可見,需要很長時間來發布漏洞補丁,給用戶帶來了很大安全威脅。
為了解決上述問題,現有方法主要分為三類:1)一類方法主要針對單一類型的漏洞進行分析(如緩沖區溢出)定位并產生補丁,但是只能解決一種類型的漏洞且大多數方法需要源代碼的支持;2)一類方法從正常執行流中研究不變量來定位漏洞,但是這類方法無法尋找出漏洞的真正成因;3)差分切片可以在兩個相似的路徑中發現不同,幫助分析人員識別執行中的異常,但是需要一個正常執行流作比對,而不同程序輸入會使得執行流差異不可控,因此難以找到合適的用于比對的執行流。因此,如何對漏洞進行快速定位是當前補丁生成面臨的重要難題,也是當前研究的熱點。
發明內容
針對上述問題,本發明的目的在于面向無需源碼的二進制程序提供一種二進制程序漏洞自動化定位方法,它支持多種類型的漏洞,包括堆/棧/整數型/緩沖區溢出,內存泄漏,格式字符串等。通過對程序執行路徑進行記錄,進而對異常位置進行分析,產生的相應漏洞依賴樹(以下簡稱“依賴樹”),有效減少需要分析指令的數量,實現對漏洞位置的快速定位。在此基礎上,提出一種簡單有效的樣例補丁生成方法,有效保證系統不被惡意利用。
根據以上目的,實現本發明的技術方案是:
一種二進制程序漏洞自動化定位方法,其步驟為:
1)運行待檢測二進制程序,記錄從該程序開始運行到出錯過程中所有指令;
2)根據所記錄的指令構建漏洞依賴樹,并根據所構建漏洞依賴樹從所記錄指令中檢測指令中的漏洞指令;其中,構建所述漏洞依賴樹的過程中,每增加若干個節點檢查是否出現漏洞候選節點,如果出現,則產生該漏洞候選節點的臨時補?。?/p>
3)觀察該臨時補丁是否有效,如果有效則停止構建漏洞依賴樹,并作為定位到漏洞位置的依據;否則繼續構建漏洞依賴樹。
進一步的,所述漏洞依賴樹中的節點表示該程序中的指令,指令之間通過邊連接。
進一步的,所述漏洞依賴樹的構建方法為:
1)初始化一工作集wl為空集;對所記錄指令中每一執行路徑,從該執行路徑的最后一條指令開始,順次取出一指令i;
2)將指令i對應的指令地址加入漏洞依賴樹v,將由指令i使用的變量加入工作集wl;
3)初始化一變量branchNum=0;
4)如果指令i不為空且工作集wl不為空,則進行以下循環:如果指令i是依賴輸入數據的分支指令,則branchNum=branchNum+1,即對依賴于外部輸入的分支進行計數,i指向前一條指令,繼續循環過程;如果當前指令i定義的變量var和wl有交集,則從wl中移除這個變量var,并在wl中加入當前指令i使用的變量;計算邊長度edgeLen=branchNum-j為指令j到樹根的長度,指令j為漏洞依賴樹中使用var的節點;然后在漏洞依賴樹v中增加節點i,在漏洞依賴樹v中增加邊(j,i),其長度為edgeLen。
進一步的,所述每增加若干個節點檢查是否出現漏洞候選節點的方法為:a)每增加若干個節點后,檢測所述漏洞依賴樹中連接每一新增加節點的入邊和出邊,如果其長度的比值大于設定閾值則將此節點作為漏洞候選節點;b)選擇所增加若干個節點中改變變量范圍值超過設定比例的節點,將此節點作為漏洞候選節點。
進一步的,所述記錄從該程序開始運行到出錯過程中所有指令的方法為:首先設定一閾值;然后從該程序開始運行到出錯過程中,對每條指令進行記錄,包括每個分支指令和選用的分支進行記錄,當記錄指令超過設定閾值時則新記錄的指令將覆蓋最先記錄的指令,進行循環記錄。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學院信息工程研究所,未經中國科學院信息工程研究所許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201310104953.8/2.html,轉載請聲明來源鉆瓜專利網。





