[發明專利]一種進行模糊測試的方法及系統有效
| 申請號: | 200910131170.2 | 申請日: | 2009-04-07 |
| 公開(公告)號: | CN101859274A | 公開(公告)日: | 2010-10-13 |
| 發明(設計)人: | 唐文 | 申請(專利權)人: | 西門子(中國)有限公司 |
| 主分類號: | G06F11/36 | 分類號: | G06F11/36 |
| 代理公司: | 暫無信息 | 代理人: | 暫無信息 |
| 地址: | 100102 *** | 國省代碼: | 北京;11 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 進行 模糊 測試 方法 系統 | ||
技術領域
本發明涉及軟件測試技術領域,特別涉及一種進行模糊測試的方法及系統。
背景技術
軟件(包括:應用程序、協議等)的安全性測試實際上是在軟件輸入空間中的一種探測。軟件的輸入空間由該軟件的所有可能的輸入、或所有可能的輸入的組合構成。以下將軟件的每一個可能的輸入稱為一個輸入點。窮舉是驗證軟件行為正確性的一種最直接的方法,然而,窮舉對大部分案例來說不具備可操作性,因為通常情況下,軟件程序的輸入空間非常巨大。相比于窮舉的方法來說,模糊測試(Fuzz?Testing)是一種更具可行性的黑盒測試方法。
模糊測試是一種軟件測試技術,該技術構造一些隨機或半隨機的數據(稱為fuzz)作為被測試軟件程序的輸入,并觀察被測試軟件程序的工作狀況。模糊測試是檢查程序容錯性的一種重要的測試手段。如果被測軟件程序出錯(例如:崩潰了或導致內置的斷言驗證代碼為假),就表明檢測出了缺陷。用于產生fuzz數據的程序稱為模糊測試器(Fuzzers),模糊測試器是進行滲透測試或其它測試的有效工具。
作為一種黑盒測試工具,模糊測試通常用于大型軟件開發項目。模糊測試被認為能夠提高軟件的安全性,這是因為:模糊測試總是能檢測出一些測試人員未能發現的缺陷,這些缺陷往往會被軟件測試工程師所忽略。目前,最常用的模糊測試是基于字符的,基于字符的模糊測試提供隨機數據流(從文件或其它數據流中提供,例如:從套接字中提供)作為被測軟件程序的輸入,基于字符的模糊測試正廣泛應用于協議或網絡服務器的安全性測試。
模糊測試的優勢在于:進行測試的成本相對較低、且完全可以自動實現;并且,模糊測試經常能找出比較嚴重、且可被利用的缺陷(bug),這些bug可被攻擊者加以利用。模糊測試的主要問題在于:它大部分時候只能找出一些很簡單的缺陷。這是因為:現有模糊測試器大都比較簡單、不具備智能性,它們通常都是基于預先定義的模式,并依靠一些雜亂無章的輸入去試圖找出被測軟件程序中新的缺陷,它不具備任何從以往的測試中學習可以幫助它選擇出更好的測試用例的能力。
美國專利號為US5805795-A1,發明名稱為“用于產生包含計算機程序產品最佳測試用例集的計算機程序產品測試的方法和計算機程序產品,以及選擇SAME的方法”的專利中公開了一種方法,該方法包括:1)識別程序執行過程中所獲取到的程序塊;2)執行遺傳算法(GA:Genetic?Algorithm)以確定一個測試用例集,該算法能夠在最短的時間內獲取到最多的被識別的塊,并為每一個測試子集確定一個適應度,然后檢驗測試子集是否包含在另一個表達中從而計算一個新的適應度,直至獲取到所有測試用例的適應度。該方法需要獲取被測軟件程序的源代碼,顯然,它已經不是一種黑盒測試方案。
http://www.chinaecnet.com/sjyy/sj004632.asp上登載了一篇題為“黑盒測試中遺傳算法的應用”的文章。該文章中描述了一種采用遺傳算法為測試輸入劃分等價類,以加速黑盒測試速度的方法。該方法旨在提高測試的功能與效率,并不涉及任何與安全性測試相關的技術內容。
http://www.blackhat.com/presentations/bh-usa-06/BH-US-06Embleton.pdf上登載了一篇題為“sidewinder-一種惡意輸入技術的進化向導系統”的文章。該文章描述了一種類似于上述美國專利號為US5805795-A1的專利申請的技術,該技術采用遺傳算法作為啟發式方法來充當模糊測試的向導。遺傳算法的適應度也基于代碼覆蓋,例如:具有大的代碼覆蓋率的有用的輸入可以達到前所未有的控制流程圖區域(CFG:Control?FlowGraph)。該技術與美國專利號為US5805795-A1的技術的唯一不同之處在于:該技術無需獲取源代碼,取而代之的是使用交互式反匯編(IDA)的插件軟件微分分析(SDA),對軟件進行反編譯,并構造相應的控制流程圖。但是,對于大部分案例而言,根據軟件構造其準確的控制流程圖不具備可操作性,而沒有控制流程圖就無法使用代碼覆蓋率對遺傳算法的適應度進行計算。
由上述可見,盡管相對于完全預先定義的測試用例來說,模糊測試通過隨機化處理能夠找出一些被忽略的安全缺陷,但是,模糊測試仍然是一種基于預先定義的測試規則的測試,因此,模糊測試仍然過于簡單,無法用于在輸入空間進行啟發式的探測,因而無法保證被測軟件程序的安全性。
發明內容
有鑒于此,本發明的主要目的在于提供一種進行模糊測試的方法,以提高被測軟件程序的安全性。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于西門子(中國)有限公司,未經西門子(中國)有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910131170.2/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:一種圖像檢索方法
- 下一篇:一項分級別異常處理技術





