[發明專利]一種高效動態軟件漏洞挖掘方法有效
| 申請號: | 201010171996.4 | 申請日: | 2010-05-07 |
| 公開(公告)號: | CN101853200A | 公開(公告)日: | 2010-10-06 |
| 發明(設計)人: | 王鐵磊;李義春;韋韜;鄒維;戴帥夫;張超;丁羽 | 申請(專利權)人: | 北京大學 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 北京君尚知識產權代理事務所(普通合伙) 11200 | 代理人: | 馮藝東 |
| 地址: | 100871 北*** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 高效 動態 軟件 漏洞 挖掘 方法 | ||
技術領域
本發明屬于軟件工程和信息安全領域,具體涉及一種高效的動態軟件漏洞挖掘方法。
背景技術
計算機、網絡通信及軟件等信息技術的飛速發展與廣泛應用,推動了現代社會向信息社會的邁進,而其中存在的大量漏洞和隱患也使得當前信息安全形勢日益嚴峻,信息安全中的一個核心問題就是存在于計算機系統中的軟件安全漏洞,惡意的攻擊者可以利用這些安全漏洞提升權限,訪問未授權資源,甚至破壞敏感數據。軟件安全漏洞已經成為諸多系統安全問題的根源之一,因此如何發現軟件中的安全漏洞至關重要。
模糊測試(Fuzzing),作為一種黑盒測試技術,是一種著名的軟件安全漏洞動態挖掘技術。模糊測試以大量畸形數據作為目標程序輸入,觀測目標程序處理畸形數據時的表現,從而發掘目標程序內部潛在的缺陷或錯誤。模糊測試的工作流程包括以下幾步:
1)按照一定規則產生一批畸形輸入;
2)將畸形輸入逐一送入目標軟件進行處理,并監視軟件是否會拋出異常;
3)記錄軟件產生的錯誤信息,如寄存器狀態,棧狀態等;
4)向測試人員發送異常信息,以便進一步鑒定這些錯誤是否能被利用。
在上述模糊測試(Fuzzing)技術中,如何生成畸形數據是影響模糊測試效率的關鍵因素。
很多模糊測試工具通常采用對正常輸入進行隨機修改的方法生成畸形數據。例如,Idefense公司的FileFuzz可以將正常文件的每一個字節依次替換為隨機值或預定義的數值,進而生成畸形文件。但是,這樣生成的畸形數據缺乏針對性,很難觸發軟件安全漏洞,導致模糊測試工具效率低下。
另外,一些模糊測試工具可以根據預定義的規則,自動生成畸形數據。但是這類模糊測試工具嚴重依賴于人工定義畸形數據的生成規則。對于復雜的數據格式,人工定義生成規則面臨巨大的工作量,通常不可能完成;即使對于簡單的數據格式,人工定義規則也很容易引入錯誤,導致生成的畸形數據無法觸發安全漏洞。
發明內容
本發明的目的在于克服現有模糊測試技術中的不足,提供一種高效的軟件漏洞挖掘方法
為表述方便,目標軟件接收的各種類型的輸入(包括文件、命令行參數、網絡報文等)統稱為輸入數據。
為了實現本發明的目的,采用的技術方案概述如下:
一種高效動態軟件漏洞挖掘方法,其步驟包括:
1)目標軟件處理正常輸入數據,并收集正常輸入數據中傳播進入系統函數參數、庫函數參數的字節;
2)生成畸形數據;具體地,在正常輸入數據中,修改傳播進入系統函數、庫函數的字節,生成畸形數據;
3)對目標軟件測試;將生成的畸形數據輸入至目標軟件,如果目標軟件處理這些畸形數據時異常,則生成漏洞報告。
進一步地,上述步驟1)收集正常輸入數據中傳播進入系統函數參數、庫函數參數的字節的方法包括:
1.1)通過系統函數調用劫持技術(HOOK),劫持文件打開(例如UNIX系統里open()函數)、文件讀取(例如UNIX系統里read()函數)、文件關閉(例如UNIX系統中close()函數),以及網絡數據操作函數。根據操作系統不同以及對輸入數據關注點不同,可以對需要劫持的函數范圍適當修改,以達到最佳效果。
1.2)基于1.a)中工作,當目標程序將輸入數據讀入內存時,進一步地記錄相應內存地址與輸入數據之間的依賴關系。以每個字節在正常輸入數據中的位置偏移標示該字節,并記錄每個內存單元來源于哪些字節。
1.3)在程序執行過程中,跟蹤輸入數據的傳播;特別地,采用動態代碼插樁方法跟蹤正常輸入數據的傳播,根據每條機器指令(例如mov、add、pop)的語義信息,在運行時刻跟蹤、記錄每個內存單元依賴于哪些輸入字節。
1.4)調用系統函數或庫函數時,檢查相應參數是否依賴于輸入數據。如果依賴,進一步輸出相應參數依賴哪些輸入字節。特別地,對于簡單類型的參數(例如int,char類型),直接檢查參數數值是否依賴輸入數據;對于指針類型的數據(例如int*,char*類型),進一步檢查指針所指向的內存單元是否依賴輸入數據。對于其他復雜的函數參數,用戶可根據先驗知識和系統調用及庫函數的原型聲明,指定哪些系統調用和庫函數需要檢查以及相應的檢查策略,以達最佳效果。
所述正常輸入數據包括文件、命令行參數和網絡報文。
進一步地,上述步驟2)包括但不限于以下幾種修改模式:
2.1)對每個可以傳入系統調用、庫函數的字節逐一替換為隨機值;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京大學,未經北京大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201010171996.4/2.html,轉載請聲明來源鉆瓜專利網。





