新四季網

一種產生測試用例的方法及裝置的製作方法

2023-06-28 01:59:56 1

專利名稱:一種產生測試用例的方法及裝置的製作方法
技術領域:
本發明涉及軟體安全性測試技術領域,特別涉及一種產生測試用例的方法及裝置。
背景技術:
軟體(包括應用程式、協議等)的安全性測試實際上是在軟體輸入空間中的一種 探測。軟體的輸入空間由該軟體的所有可能的輸入、或所有可能的輸入的組合構成。窮舉是 驗證軟體行為正確性的一種最極端的方法,然而,窮舉對大部分案例來說不具備可操作性, 因為通常情況下,軟體程序的輸入空間非常巨大,甚至可能是無窮大。相比於窮舉的方法來 說,模糊測試(Fuzz Testing)作為一種隨機樣本方法,是一種更具可行性的黑盒測試方法。模糊測試是一種軟體測試技術,該技術構造一些隨機或半隨機的數據(稱為 fuzz,以下稱為模糊數據)作為被測試軟體程序的輸入,並觀察被測試軟體程序的工作狀 況。模糊測試是檢查程序容錯性的一種重要的測試手段。如果被測軟體程序出錯(例如 崩潰了或導致內置的斷言驗證代碼為假),就表明檢測出了缺陷。用於產生fuzz數據的程 序稱為模糊測試器(Fuzzers),模糊測試器是進行滲透測試或其它測試的有效工具。作為一種黑盒測試工具,模糊測試通常用於大型軟體開發項目。模糊測試被認為 能夠提高軟體的安全性,這是因為模糊測試總是能檢測出一些測試人員未能發現的缺陷, 這些缺陷往往會被軟體測試工程師所忽略。目前,最常用的模糊測試是基於字符的,基於字 符的模糊測試提供隨機數據流(從文件或其它數據流中提供,例如從套接字中提供)作 為被測軟體程序的輸入,基於字符的模糊測試正廣泛應用於協議或網絡伺服器的安全性測 試ο雖然模糊測試具有上述種種優勢,然而,當模糊測試的測試對象為協議(當然也 包括對應於協議的應用或產品等)時,採用任意的輸入作為測試用例就稍顯不夠了。這是 因為在進行協議測試時,交互的報文(或消息)必須符合相應的協議規範,因此,一次完 整、有效的模糊測試需要基於協議規範進行,而非基於任意的隨機輸入進行。協議規範定義了通信雙方之間所交互的報文之間的關係、以及報文的格式,例如 哪個/哪些響應報文是對應於給定輸入報文的。因此,只有輸入適當的報文序列才能使協 議產品進入隨後的相應狀態,而只有進入了這些狀態,才有可能對這些狀態下協議產品的 行為進行測試。在不理解協議規範的相關知識的情況下,模糊測試只能採用任意的輸入作 為第一個報文來測試協議產品的初始狀態,因此,這種模糊測試無法完整、有效地評估協議 產品的安全性。

發明內容
有鑑於此,本發明實施例提供一種產生測試用例的方法,以在無需理解協議規範 的相關知識的情況下,完整、有效地評估協議產品的安全性。本發明實施例還提供一種產生測試用例的裝置,以在無需理解協議規範的相關知
5識的情況下,完整、有效地評估協議產品的安全性。本發明實施例提供的一種產生測試用例的方法,用於對協議進行模糊測試,包 括A、採用協議分析器抓取並記錄協議雙方之間交互的報文;B、採用協議分析器對所述記錄的報文進行解析,得到報文的各個欄位;C、根據各個欄位的類型,以相應類型的模糊數據填充所述欄位得到測試報文。較佳地,所述協議雙方為客戶端和伺服器;在所述A之後可以進一步包括將所述記錄的報文中由客戶端發送給伺服器的報 文按照發送的先後次序進行排列,得到第一合法報文序列;所述B為對所述第一合法報文序列中的報文進行解析,得到所述第一合法報文 序列中各個報文的各個欄位;所述C為根據所述第一合法報文序列中各個報文的各個欄位的類型,依次以相 應類型的模糊數據填充所述欄位得到對應的測試報文,並依次以所述得到的每一個測試報 文替換所述第一合法報文序列中的對應報文得到對應的報文序列,將所述得到的報文序列 作為測試報文序列。進一步地,該方法可以包括預先設置需要進行模糊化的欄位的類型,所述類型至 少為一種;並針對每一種類型設置相應的模糊數據;所述C可以包括Cl、將所述第一合法報文序列中的第一個報文作為當前報文,將當前報文的第一 個欄位作為當前欄位,將從所述第一合法報文序列中的第一個報文開始至當前報文為止的 報文序列作為當前合法報文序列;C2、判斷所述預先設置的需要進行模糊化的欄位的類型中是否存在與當前欄位的 類型相同的類型,若不存在,繼續執行C3,若存在,繼續執行C4 ;C3、判斷當前欄位是否為當前報文的最後一個欄位,若不是,則將當前欄位的下一 個欄位作為當前欄位,返回C2 ;若是,繼續判斷當前報文是否為第一合法報文序列中的最 後一個報文,若是最後一個報文,則結束本方法流程,若不是最後一個報文,則將當前報文 的下一個報文作為當前報文,將當前報文的第一個欄位作為當前欄位,將從所述第一合法 報文序列中的第一個報文開始至當前報文為止的報文序列作為當前合法報文序列,返回 C2 ;C4、根據當前欄位的類型從所述預先設置的模糊數據中確定對應的模糊數據,依 次將所述模糊數據中的每一個填充到當前報文的當前欄位,得到對應的報文,並依次以所 述得到的每一個測試報文替換所述當前合法報文序列中的當前報文得到對應的報文序列, 將所述得到的各個報文序列作為測試報文序列,返回C3。所述C4中在得到對應的報文之後、並在依次以所述得到的每一個測試報文替換 所述第一合法報文序列中的當前報文之前,可以進一步包括判斷所述得到的報文的長度與所述當前報文的長度是否相等,若不相等,則將所 述得到的報文的長度欄位的值置為所述得到的報文的長度。在所述得到第一合法報文序列之後,可以進一步包括將所述記錄的報文中由服 務器返回給客戶端的響應報文按照對應於所述第一合法報文序列的順序進行排列,得到第二合法響應序列;在所述C之後進一步包括依次將每一個測試報文序列作為當前測試報文序列, 執行D F D、將當前測試報文序列發送給所述伺服器;E、將對應於所述當前測試報文序列的合法報文序列發送給所述伺服器,並接收所 述伺服器返回的響應序列;F、根據所述第二合法響應序列確定對應於所述合法報文序列的合法響應序列,判 斷所述伺服器返回的響應序列與所述合法響應序列是否相同,若不相同,則記錄當前測試 報文序列以及所述伺服器返回的響應序列。本發明實施例提供的一種產生測試用例的裝置,用於對協議進行模糊測試,該裝 置包括協議分析器410和模糊測試器420,其中所述協議分析器410,用於抓取並記錄協議雙方之間交互的報文,並用於對所述記 錄的報文進行解析,得到報文的各個欄位;所述模糊測試器420,用於根據各個欄位的類型,以相應類型的模糊數據填充所述 欄位得到測試報文。較佳地,所述協議雙方為客戶端和伺服器;所述協議分析器410,還可以用於將所述記錄的報文中由客戶端發送給伺服器的 報文按照發送的先後次序進行排列,得到第一合法報文序列,並用於對所述第一合法報文 序列中的報文進行解析,得到所述第一合法報文序列中各個報文的各個欄位;所述模糊測試器420,還可以用於根據所述第一合法報文序列中各個報文的各個 欄位的類型,依次以相應類型的模糊數據填充所述欄位得到對應的報文,並依次以所述得 到的每一個測試報文替換所述第一合法報文序列中的對應報文得到對應的報文序列,將所 述得到的報文序列作為測試報文序列。較佳地,該裝置中還可以包括存儲器430,用於存儲預先設置的需要進行模糊化 的欄位的類型,所述類型至少為一種;以及用於存儲針對每一種類型設置的相應的模糊數 據;所述模糊測試器420中進一步包括初始化模塊421、類型匹配模塊422、遍歷模塊 423和模糊化模塊424,其中所述初始化模塊421,用於將所述第一合法報文序列中的第一個報文作為當前報 文,將當前報文的第一個欄位作為當前欄位,將從所述第一合法報文序列中的第一個報文 開始至當前報文為止的報文序列作為當前合法報文序列,通知類型匹配模塊422工作;所述類型匹配模塊422,用於根據所述初始化模塊421或所述遍歷模塊423的通 知,判斷所述存儲器430中預先存儲的需要進行模糊化的欄位的類型中是否存在與當前字 段的類型相同的類型,在不存在時,通知遍歷模塊423工作,在存在時,通知模糊化模塊424 工作;所述遍歷模塊423,用於根據所述類型匹配模塊422或所述模糊化模塊424的通知 判斷當前欄位是否為當前報文的最後一個欄位,在不是時,用於將當前欄位的下一個欄位 作為當前欄位,通知類型匹配模塊422工作;在是時,還用於判斷當前報文是否為第一合法 報文序列中的最後一個報文,在是最後一個報文時,結束本裝置的操作,在不是最後一個報文時,用於將當前報文的下一個報文作為當前報文,將當前報文的第一個欄位作為當前字 段,將從所述第一合法報文序列中的第一個報文開始至當前報文為止的報文序列作為當前 合法報文序列,通知類型匹配模塊422工作;所述模糊化模塊424,用於根據所述類型匹配模塊422的通知,並根據當前欄位的 類型從所述存儲器430中獲取預先存儲的對應於所述類型的模糊數據,依次將所述模糊數 據中的每一個填充到當前報文的當前欄位,得到對應的報文,並依次以所述得到的每一個 測試報文替換所述當前合法報文序列中的當前報文得到對應的報文序列,將所述得到的各 個報文序列作為測試報文序列,通知遍歷模塊423工作。較佳地,所述模糊化模塊424,還可以用於在得到對應的報文之後,判斷所述得到 的報文的長度與所述當前報文的長度是否相等,在不相等時,用於將所述得到的報文的長 度欄位的值置為所述得到的報文的長度。較佳地,所述協議分析器410,還可以用於將所述記錄的報文中由伺服器返回給客 戶端的響應報文按照對應於所述第一合法報文序列的順序進行排列,得到第二合法響應序 列;所述模糊測試器420中進一步包括測試模塊425,所述測試模塊425用於依次將每 一個測試報文序列作為當前測試報文序列發送給所述伺服器;並用於將對應於所述當前測 試報文序列的合法報文序列發送給所述伺服器,接收所述伺服器返回的響應序列;還用於 根據所述第二合法響應序列確定對應於所述合法報文序列的合法響應序列,判斷所述服務 器返回的響應序列與所述合法響應序列是否相同,在不相同時,記錄當前測試報文序列以 及所述伺服器返回的響應序列。由上述技術方案可見,本發明利用協議分析器抓取並記錄被測協議產品接收和發 送的合法的報文序列,並採用協議分析器對這些報文進行解析,將解析後的報文提供給模 糊測試器,由模糊測試器對解析後的報文中的某些欄位進行一些改變,從而構造出有針對 性的測試報文。由於本發明所提供的技術方案中,測試報文序列由模糊測試器根據協議分 析器所提供的解析後的報文構造得到,無需基於對協議規範的理解人工構造測試報文序 列,這不僅節約了大量的時間成本和人力成本,而且提高了模糊測試的有效性,是一種快 速、簡便的用於對網絡協議產品進行模糊測試的方案。


下面將通過參照附圖詳細描述本發明的示例性實施例,使本領域的普通技術人員 更清楚本發明的上述及其他特徵和優點,附圖中圖1為本發明產生測試用例的方法的流程示意圖;圖2為本發明一較佳實施例中進行模糊測試的方法的流程示意圖;圖3為本發明一較佳實施例中追蹤文件的數據結構Caputrue_file的示意圖;圖4為本發明一較佳實施例中產生測試用例的裝置的組成結構示意圖。
具體實施例方式為使本發明的目的、技術方案及優點更加清楚明白,以下參照附圖並舉實施例,對 本發明進一步詳細說明。
雖然對於一次有效的模糊測試來說,理解協議規範的相關知識是必須的,但是,這 是一項耗時、費力的任務,特別是對於複雜的協議而言。而且,它還需要花費大量的精力去 人工記錄用於測試協議產品不同狀態的報文序列。將協議分析器用於網絡故障檢測、網絡分析、軟體和通信協議開發、教育等領域由 來已久。協議分析器(也稱為網絡嗅探器、網絡分析器或報文嗅探器等)是一種計算機軟 件程序或計算機硬體,它能夠抓取並記錄流經整個數字網絡或網絡中某一局部區域內的數 據流。隨著數據流流經網絡,協議分析器抓取每一個報文,並根據相應的規範對報文的內 容進行解析、分析。目前,最流行的開源協議分析器包括:WireShark(也就是Ethereal)、 Tcpdump等。由於這些開源協議分析器本身已經集成有眾多協議的規範知識,因此,開源協 議分析器不僅可以抓取流經網絡的報文,而且還可以基於這些協議規範對所抓取的報文進 行解析。本發明的主要思想在於利用協議分析器抓取並記錄被測協議產品接收和發送 的合法的報文序列,並使用報文解析器(即經改進之後具備報文解析功能的協議分析器) 對這些報文進行解析,將解析後的報文提供給模糊測試器,由模糊測試器對解析後的報文 中的某些欄位進行一些改變,從而構造出有針對性的測試報文。由於本發明所提供的技術 方案中,測試報文序列由模糊測試器根據協議分析器所提供的解析後的報文構造得到,無 需基於對協議規範的理解人工構造測試報文序列,這不僅節約了大量的時間成本和人力成 本,而且提高了模糊測試的有效性,是一種快速、簡便的用於對網絡協議產品進行模糊測試 的方案。圖1為本發明產生測試用例的方法的流程示意圖。參見圖1,該方法包括步驟101 採用協議分析器抓取並記錄協議雙方之間交互的報文;步驟102 採用協議分析器對所述記錄的報文進行解析,得到報文的各個欄位;步驟103 根據各個欄位的類型,以相應類型的模糊數據填充所述欄位得到測試 報文。採用本發明圖1所示方法產生模糊測試的測試用例時,無需了解被測協議的協議 規範相關信息,只需根據由協議分析器解析得到的報文的各個欄位的類型,以相應類型的 模糊數據對該欄位進行填充,這樣得到的報文是個別欄位被模糊化了的報文,以這樣的報 文對被測協議進行模糊測試,一方面,在不具備被測協議的協議規範的相關知識的情況下 實現了模糊測試,另一方面,這樣的報文並非任意的隨機輸入,而是對合法報文的某些欄位 進行了有針對性的改變之後得到的報文,因此能夠對被測協議的相關狀態進行測試,保證 了模糊測試的完整性和有效性。本發明所述協議雙方實際上是客戶端和伺服器,由於伺服器的安全性和可靠性是 保證協議產品正常運行的基礎,因此,協議測試的主要測試目標是伺服器。鑑於此,在構造 測試用例時,可以對由客戶端發送給伺服器的報文、以及伺服器返回給客戶端的報文進行 區分,並對由客戶端發送給伺服器的報文的某些欄位採取本發明方法進行模糊化得到測試 報文,並用所得到的測試報文對被測伺服器進行測試,從而提高模糊測試的效率。下面通過一個具體實施例對本發明產生測試用例的方法及利用所產生的測試用 例進行模糊測試的方法的具體實施方式
進行詳細說明。圖2為本發明一較佳實施例中進行模糊測試的方法的流程示意圖。本方法中,將協議雙方分別稱為客戶端和被測伺服器,該客戶端和被測伺服器支持同一協議,該協議為 被測協議。參見圖2,該方法包括步驟201 預先設置需要進行模糊化的欄位的類型,並針對每一種類型設置相應 的模糊數據。本步驟需要根據實際應用的需要設置需要進行模糊化的欄位的類型,以使所產生 的測試用例更具針對性。這裡,用戶無需理解報文中每個欄位的語義,只需定義用戶所關注 的欄位的類型名即可。例如欄位長度、字符串、字節串等。用戶所關注的這些欄位的類型 名可以在配置文件中進行設置。如此,報文解析器在解析當前報文時,只需根據配置文件查 看報文欄位的類型名即可。當然,如果沒有進行本步驟的設置,本發明方法根據報文中每一 個欄位的類型以相應類型的模糊數據填充該欄位也可以實現本發明的發明目的。本步驟中,在設置模糊數據時,可以指定一個資料庫、或一個文件或其他數據源作 為模糊數據。步驟202 採用協議分析器抓取並記錄某一客戶端與被測伺服器之間交互的報文。本步驟中,為了覆蓋被測伺服器的各種不同的協議狀態,需要令客戶端以儘可能 多的、各種不同的方式接入被測伺服器。例如以初始狀態時、數據傳輸時、結束通信時等多 種方式向被測伺服器發送對應的報文。由於此時的客戶端與被測伺服器之間的交互是基於雙方所運行的協議正常地進 行,因此,該客戶端與被測伺服器之間交互的報文為合法的報文,這些合法的報文序列必將 令被測伺服器遍歷協議規範所定義的各種協議狀態。因此,一個報文序列可被當作模糊測 試中的測試樣本,用於構造符合協議規範的報文序列,去探測和測試被測伺服器的不同協 議狀態。本步驟中,所抓取的這些報文序列可由協議分析器當作追蹤文件保存下來。步驟203 協議分析器將所記錄的報文中由客戶端發送給伺服器的報文按照發送 的先後次序進行排列,得到第一合法報文序列;將所記錄的報文中由伺服器返回給客戶端 的響應報文按照對應於該第一合法報文序列的順序進行排列,得到第二合法響應序列。在模糊測試中,經改進之後具備報文解析功能的協議分析器充當報文解析器的角 色,用於解析追蹤文件以獲取報文序列。由於追蹤文件中既包含所有自客戶端發出的報文, 也包含所有自被測伺服器發出的報文,而只有從客戶端發送給被測伺服器的報文可用於本 發明的模糊測試,因此,報文解析器需要從追蹤文件中找出從客戶端發送給被測伺服器的 報文,並將它們按照如(1)所示形式進行排列P1, P2, · · ·,Pm (1)(1)就是第一合法報文序列,在(1)中,P1是客戶端發給被測伺服器的第一個報 文,P2是客戶端發給被測伺服器的第二個報文,依此類推,Pffl是客戶端發給被測伺服器的第 m個報文。同理,可將被測伺服器返回給客戶端的響應報文按照如(2)所示形式進行排列R1, R2, ... , Rm(2)(2)就是第二合法響應序列,在(2)中,R1是被測伺服器返回給客戶端的對應於P1 的響應報文,R2是被測伺服器返回給客戶端的對應於P2的響應報文,依此類推,Rffl是被測服 務器返回給客戶端的對應於Pm的響應報文。
10
下面以Wireshark為例,說明在實際應用中如何從追蹤文件中得到如(1)和(2) 所示的報文序列。由於Wireshark是一種開源的協議分析器,因此,可以將Wireshark中一些與本 發明不相關的組件去除,而只保留與本發明有關的組件,例如可以保留用於解析追蹤文件 以獲取報文序列的組件。基於Wireshark中的可解析各種協議的報文的解析器,報文解析 器將追蹤文件導入如圖3所示的數據結構Caputrue_file中。該數據結構Caputrue_file 用於以分級的方式存儲協議頭和各欄位。由於Wireshark中集成有上百種協議的解析器功 能,這些解析器可以根據給定的協議將報文解析到欄位級別,圖3中,結構epan_diSSeCt_t 示出了哪種協議需要被分析。追蹤文件中的每一個報文將被存儲為pr0t0_tree的結構,在 該結構中,每一個欄位以field_info這種數據結構的形式表示,並被存儲為樹型結構。在 每一個field_inf0中,header_field_inf0用於描述欄位屬性信息(例如欄位名、欄位類 型等),fvalUe_t用於存儲實際的欄位值。這裡,對於圖3中與本發明無關的數據結構未進 行詳細說明。基於Wireshark的上述信息,報文解析器可以根據每個報文的地址欄位(例如 IP位址欄位)將由客戶端發送給伺服器的報文、以及由伺服器返回給客戶端的報文區分開 來,並按照先後次序排列為如⑴和⑵所示的報文序列。步驟204 對第一合法報文序列中的報文進行解析,得到第一合法報文序列中各 個報文的各個欄位。由於協議分析器集成了對應於協議報文的格式信息,因此,協議分析器可以作為 報文解析器對當前報文進行解析得到該報文的每一個欄位。以上為本發明產生測試用例的預備操作,以下將根據第一合法報文序列中的每一 個報文Pi, i = 1,2,…,m,進行產生測試用例的操作。步驟205 進行初始化設置,即將第一合法報文序列中的第一個報文P1作為當前 報文,將當前報文的第一個欄位作為當前欄位,將從第一合法報文序列中的第一個報文開 始至當前報文為止的報文序列作為當前合法報文序列。步驟206 判斷預先設置的需要進行模糊化的欄位的類型中是否存在與當前欄位 的類型相同的類型,若不存在,繼續執行步驟207,若存在,跳到步驟211。本步驟中,可以根據預先設置的需要進行模糊化的欄位的類型與當前欄位的類型 進行比較,從而確定該欄位是否需要進行模糊化,以用於進行模糊測試。對於需要進行模 糊化的欄位,跳到步驟211進行模糊化,對於不需要進行模糊化的欄位,無需進行模糊化操 作,直接進入步驟207,對下一個欄位或下一個報文進行判斷。步驟207 判斷當前欄位是否為當前報文的最後一個欄位,若不是當前報文的最 後一個欄位,則繼續步驟208,若是當前報文的最後一個欄位,繼續步驟209。步驟208 將當前欄位的下一個欄位作為當前欄位,返回步驟206。步驟209 判斷當前報文是否為第一合法報文序列中的最後一個報文,若是最後 一個報文,結束產生測試用例的操作,跳到步驟212,繼續進行採用測試用例進行模糊測試 的操作,若不是最後一個報文,則繼續步驟210。本步驟中,若當前報文已經是第一合法報文序列的最後一個報文、且當前欄位已 經是當前報文的最後一個欄位,表明已對第一合法報文序列的各個報文中的各個可被模糊化的欄位進行了模糊數據的填充,以產生了足夠多的符合條件的測試用例,因此,可以結束 產生測試用例的操作,繼續進行採用測試用例進行模糊測試的操作。步驟210 將當前報文的下一個報文作為當前報文,將當前報文的第一個欄位作 為當前欄位,將從第一合法報文序列中的第一個報文開始至當前報文為止的報文序列作為 當前合法報文序列,返回步驟206。舉例而言,假設當前報文為Pi,那麼當前合法報文序列就是P1, P2,... , Pi。步驟211 根據當前欄位的類型從預先設置的模糊數據中確定對應的模糊數據, 依次將該模糊數據中的每一個填充到當前報文的當前欄位,得到對應的報文,並依次以所 得到的每一個測試報文替換當前合法報文序列中的當前報文得到對應的報文序列,將得到 的各個報文序列作為測試報文序列,返回步驟207。本步驟中,如果當前報文的當前欄位的類型名與預設於配置文件中的某一個類型 名匹配,則需要對該當前欄位進行模糊數據填充。具體而言假設當前報文為Pi,模糊測試 器將首先從預設的模糊數據中(例如一個預設的資料庫或文件中)選取所有符合該類型 的測試用例,然後對於每一個測試用例,將其填充到當前報文的當前欄位中得到測試報文 Pi',以所得到的每一個Pi'替換當前合法報文序列中的當前報文Pi即可得到一個新的報文 序列,該報文序列就是本發明的測試報文序列。在必要時,模糊測試器可能需要對報文P/的長度欄位進行適當的修改,因為測試 用例的長度可能與Pi中該欄位的原始內容的長度不相等。具體來說,就是判斷所得到的報 文的長度與當前報文的長度是否相等,若不相等,則將所得到的報文的長度欄位的值置為 所得到的報文的長度。通過上述步驟,產生了大量的測試報文序列,下面可以採用這些測試報文序列對 被測伺服器進行測試。具體而言,在進行測試時,可以依次將每一個測試報文序列作為當前 測試報文序列,執行步驟212 步驟214。步驟212 模糊測試器向被測伺服器發送當前測試報文序列。本步驟中,假設當前測試報文序列為P1, P2, ... , Ph,Pi'。步驟213 將對應於該當前測試報文序列的合法報文序列發送給被測伺服器,並 接收被測伺服器返回的響應序列。本步驟中,模糊測試器可以啟動與被測伺服器的另一個連接,並通過該連接向被 測伺服器發送諸如P1, P2,...,Pi-!, Pi此類的正確的探測報文序列,該探測報文序列是合法 的報文序列。步驟214 判斷被測伺服器是否返回正確的響應報文,若是,表明被測伺服器依然 操作正常,若不是,則表明被測伺服器在當前測試報文序列的測試下出現了異常,記錄當前 測試報文序列以及所述伺服器返回的響應序列。本步驟中,可以根據第二合法響應報文確定對應於P1, P2, ... , Ph,Pi的正確的響 應報文應當為R1;R2,...,Ri,如果被測伺服器沒有正常響應探測報文序列,表明被測伺服器 在當前測試報文序列的攻擊下出現了異常狀態,模糊測試器將該測試報文序列P1, P2,..., Ρη,Ρ/作為能夠觸發被測伺服器的安全漏洞的報文序列進行保存,以供進一步分析。然後, 重啟被測伺服器以進行進一步測試,並返回步驟212對下一個測試用例在Pi報文的當前可 模糊化的欄位進行嘗試。如果被測伺服器正常響應了探測報文序列,則返回步驟212對下
12一個測試用例在Pi報文的當前可模糊化的欄位進行嘗試。如果所有測試用例均以嘗試完 畢,返回步驟212對當前報文Pi的下一個可模糊化的欄位進行嘗試。在對當前報文所有可模糊化的欄位採用所有測試用例進行測試之後,對當前報文 的下一個報文進行測試。如果每一個報文均已被測試,則結束模糊測試,並報告所發現的安 全漏洞。對應於上述方法,本發明還公開了一種產生測試用例的裝置,該裝置用於對協議 進行模糊測試。圖4為本發明一較佳實施例中產生測試用例的裝置的組成結構示意圖。圖 4中的裝置包括協議分析器(410)和模糊測試器(420),其中協議分析器(410),用於抓取並記錄協議雙方之間交互的報文,並用於對所述記錄 的報文進行解析,得到報文的各個欄位;模糊測試器(420),用於根據各個欄位的類型,以相應類型的模糊數據填充所述字 段得到測試報文。較佳地,協議雙方為客戶端和伺服器;圖4所示裝置中的協議分析器(410),還用於將所記錄的報文中由客戶端發送給 伺服器的報文按照發送的先後次序進行排列,得到第一合法報文序列,並用於對該第一合 法報文序列中的報文進行解析,得到該第一合法報文序列中各個報文的各個欄位;相應地,圖4所示裝置中的模糊測試器(420),還用於根據第一合法報文序列中各 個報文的各個欄位的類型,依次以相應類型的模糊數據填充該欄位得到對應的報文,並依 次以所得到的每一個測試報文替換該第一合法報文序列中的對應報文得到對應的報文序 列,將所得到的報文序列作為測試報文序列。圖4所示裝置中還可以包括存儲器(430),用於存儲預先設置的需要進行模糊化 的欄位的類型,所設置的類型至少為一種;以及用於存儲針對每一種類型設置的相應的模 糊數據;模糊測試器(420)中可以進一步包括初始化模塊(421)、類型匹配模塊(422)、遍 歷模塊(423)和模糊化模塊(424),其中初始化模塊(421),用於將第一合法報文序列中的第一個報文作為當前報文,將當 前報文的第一個欄位作為當前欄位,將從第一合法報文序列中的第一個報文開始至當前報 文為止的報文序列作為當前合法報文序列,通知類型匹配模塊(422)工作;類型匹配模塊(422),用於根據初始化模塊(421)或遍歷模塊(423)的通知,判斷 存儲器(430)中預先存儲的需要進行模糊化的欄位的類型中是否存在與當前欄位的類型 相同的類型,在不存在時,通知遍歷模塊(423)工作,在存在時,通知模糊化模塊(424)工 作;遍歷模塊(423),用於根據類型匹配模塊(422)或模糊化模塊(424)的通知判斷 當前欄位是否為當前報文的最後一個欄位,在不是時,用於將當前欄位的下一個欄位作為 當前欄位,通知類型匹配模塊(422)工作;在是時,還用於判斷當前報文是否為第一合法報 文序列中的最後一個報文,在是最後一個報文時,結束本裝置的操作,在不是最後一個報文 時,用於將當前報文的下一個報文作為當前報文,將當前報文的第一個欄位作為當前欄位, 將從第一合法報文序列中的第一個報文開始至當前報文為止的報文序列作為當前合法報 文序列,通知類型匹配模塊(422)工作;
模糊化模塊(424),用於根據類型匹配模塊(422)的通知,並根據當前欄位的類型 從存儲器(430)中獲取預先存儲的對應於該類型的模糊數據,依次將該模糊數據中的每一 個填充到當前報文的當前欄位,得到對應的報文,並依次以所得到的每一個測試報文替換 該當前合法報文序列中的當前報文得到對應的報文序列,將所得到的各個報文序列作為測 試報文序列,通知遍歷模塊(423)工作。圖4所示裝置中的模糊化模塊(424),還用於在得到對應的報文之後,判斷所得到 的報文的長度與當前報文的長度是否相等,在不相等時,用於將所得到的報文的長度欄位 的值置為所得到的報文的長度。圖4所示裝置中,協議分析器(410),還用於將所記錄的報文中由伺服器返回給客 戶端的響應報文按照對應於第一合法報文序列的順序進行排列,得到第二合法響應序列;模糊測試器(420)中進一步包括測試模塊(425),所述測試模塊(425)用於依次將 每一個測試報文序列作為當前測試報文序列發送給伺服器;並用於將對應於當前測試報文 序列的合法報文序列發送給伺服器,接收伺服器返回的響應序列;還用於根據第二合法響 應序列確定對應於該合法報文序列的合法響應序列,判斷伺服器返回的響應序列與所述合 法響應序列是否相同,在不相同時,記錄當前測試報文序列以及伺服器返回的響應序列。由上述實施例可見,本發明利用協議分析器抓取並記錄被測協議產品接收和發送 的合法的報文序列,並採用協議分析器對這些報文進行解析,將解析後的報文提供給模糊 測試器,由模糊測試器對解析後的報文中的某些欄位進行一些改變,從而構造出有針對性 的測試報文。由於本發明所提供的技術方案中,測試報文序列由模糊測試器根據協議分析 器所提供的解析後的報文構造得到,無需基於對協議規範的理解人工構造測試報文序列, 這不僅節約了大量的時間成本和人力成本,而且提高了模糊測試的有效性,是一種快速、簡 便的用於對網絡協議產品進行模糊測試的方案。以上所述僅為本發明的較佳實施例而已,並非用於限定本發明的保護範圍。凡在 本發明的精神和原則之內所作的任何修改、等同替換、改進等,均應包含在本發明的保護範 圍之內。
權利要求
一種產生測試用例的方法,用於對協議進行模糊測試,其特徵在於,包括A、採用協議分析器抓取並記錄協議雙方之間交互的報文;B、採用協議分析器對所述記錄的報文進行解析,得到報文的各個欄位;C、根據各個欄位的類型,以相應類型的模糊數據填充所述欄位得到測試報文。
2.根據權利要求1所述的方法,其特徵在於所述協議雙方為客戶端和伺服器;在所述A之後進一步包括將所述記錄的報文中由客戶端發送給伺服器的報文按照發 送的先後次序進行排列,得到第一合法報文序列;所述B為對所述第一合法報文序列中的報文進行解析,得到所述第一合法報文序列 中各個報文的各個欄位;所述C為根據所述第一合法報文序列中各個報文的各個欄位的類型,依次以相應類 型的模糊數據填充所述欄位得到對應的測試報文,並依次以所述得到的每一個測試報文替 換所述第一合法報文序列中的對應報文得到對應的報文序列,將所述得到的報文序列作為 測試報文序列。
3.根據權利要求2所述的方法,其特徵在於,該方法進一步包括預先設置需要進行模 糊化的欄位的類型,所述類型至少為一種;並針對每一種類型設置相應的模糊數據;所述C包括Cl、將所述第一合法報文序列中的第一個報文作為當前報文,將當前報文的第一個字 段作為當前欄位,將從所述第一合法報文序列中的第一個報文開始至當前報文為止的報文 序列作為當前合法報文序列;C2、判斷所述預先設置的需要進行模糊化的欄位的類型中是否存在與當前欄位的類型 相同的類型,若不存在,繼續執行C3,若存在,繼續執行C4 ;C3、判斷當前欄位是否為當前報文的最後一個欄位,若不是,則將當前欄位的下一個字 段作為當前欄位,返回C2 ;若是,繼續判斷當前報文是否為第一合法報文序列中的最後一 個報文,若是最後一個報文,則結束本方法流程,若不是最後一個報文,則將當前報文的下 一個報文作為當前報文,將當前報文的第一個欄位作為當前欄位,將從所述第一合法報文 序列中的第一個報文開始至當前報文為止的報文序列作為當前合法報文序列,返回C2 ;C4、根據當前欄位的類型從所述預先設置的模糊數據中確定對應的模糊數據,依次將 所述模糊數據中的每一個填充到當前報文的當前欄位,得到對應的報文,並依次以所述得 到的每一個測試報文替換所述當前合法報文序列中的當前報文得到對應的報文序列,將所 述得到的各個報文序列作為測試報文序列,返回C3。
4.根據權利要求3所述的方法,其特徵在於,所述C4中在得到對應的報文之後、並在依 次以所述得到的每一個測試報文替換所述第一合法報文序列中的當前報文之前,進一步包 括判斷所述得到的報文的長度與所述當前報文的長度是否相等,若不相等,則將所述得 到的報文的長度欄位的值置為所述得到的報文的長度。
5.根據權利要求2至4任一項所述的方法,其特徵在於在所述得到第一合法報文序列之後,進一步包括將所述記錄的報文中由伺服器返回 給客戶端的響應報文按照對應於所述第一合法報文序列的順序進行排列,得到第二合法響應序列;在所述C之後進一步包括依次將每一個測試報文序列作為當前測試報文序列,執行 D F D、將當前測試報文序列發送給所述伺服器;E、將對應於所述當前測試報文序列的合法報文序列發送給所述伺服器,並接收所述服 務器返回的響應序列;F、根據所述第二合法響應序列確定對應於所述合法報文序列的合法響應序列,判斷所 述伺服器返回的響應序列與所述合法響應序列是否相同,若不相同,則記錄當前測試報文 序列以及所述伺服器返回的響應序列。
6.一種產生測試用例的裝置,用於對協議進行模糊測試,其特徵在於,該裝置包括協 議分析器410和模糊測試器420,其中所述協議分析器410,用於抓取並記錄協議雙方之間交互的報文,並用於對所述記錄的 報文進行解析,得到報文的各個欄位;所述模糊測試器420,用於根據各個欄位的類型,以相應類型的模糊數據填充所述欄位 得到測試報文。
7.根據權利要求6所述的裝置,其特徵在於所述協議雙方為客戶端和伺服器;所述協議分析器410,還用於將所述記錄的報文中由客戶端發送給伺服器的報文按照 發送的先後次序進行排列,得到第一合法報文序列,並用於對所述第一合法報文序列中的 報文進行解析,得到所述第一合法報文序列中各個報文的各個欄位;所述模糊測試器420,還用於根據所述第一合法報文序列中各個報文的各個欄位的類 型,依次以相應類型的模糊數據填充所述欄位得到對應的報文,並依次以所述得到的每一 個測試報文替換所述第一合法報文序列中的對應報文得到對應的報文序列,將所述得到的 報文序列作為測試報文序列。
8.根據權利要求7所述的裝置,其特徵在於,該裝置中還包括存儲器430,用於存儲預 先設置的需要進行模糊化的欄位的類型,所述類型至少為一種;以及用於存儲針對每一種 類型設置的相應的模糊數據;所述模糊測試器420中進一步包括初始化模塊421、類型匹配模塊422、遍歷模塊423 和模糊化模塊424,其中所述初始化模塊421,用於將所述第一合法報文序列中的第一個報文作為當前報文,將 當前報文的第一個欄位作為當前欄位,將從所述第一合法報文序列中的第一個報文開始至 當前報文為止的報文序列作為當前合法報文序列,通知類型匹配模塊422工作;所述類型匹配模塊422,用於根據所述初始化模塊421或所述遍歷模塊423的通知,判 斷所述存儲器430中預先存儲的需要進行模糊化的欄位的類型中是否存在與當前欄位的 類型相同的類型,在不存在時,通知遍歷模塊423工作,在存在時,通知模糊化模塊424工 作;所述遍歷模塊423,用於根據所述類型匹配模塊422或所述模糊化模塊424的通知判 斷當前欄位是否為當前報文的最後一個欄位,在不是時,用於將當前欄位的下一個欄位作 為當前欄位,通知類型匹配模塊422工作;在是時,還用於判斷當前報文是否為第一合法報文序列中的最後一個報文,在是最後一個報文時,結束本裝置的操作,在不是最後一個報文 時,用於將當前報文的下一個報文作為當前報文,將當前報文的第一個欄位作為當前欄位, 將從所述第一合法報文序列中的第一個報文開始至當前報文為止的報文序列作為當前合 法報文序列,通知類型匹配模塊422工作;所述模糊化模塊424,用於根據所述類型匹配模塊422的通知,並根據當前欄位的類型 從所述存儲器430中獲取預先存儲的對應於所述類型的模糊數據,依次將所述模糊數據中 的每一個填充到當前報文的當前欄位,得到對應的報文,並依次以所述得到的每一個測試 報文替換所述當前合法報文序列中的當前報文得到對應的報文序列,將所述得到的各個報 文序列作為測試報文序列,通知遍歷模塊423工作。
9.根據權利要求8所述的裝置,其特徵在於所述模糊化模塊424,還用於在得到對應的報文之後,判斷所述得到的報文的長度與所 述當前報文的長度是否相等,在不相等時,用於將所述得到的報文的長度欄位的值置為所 述得到的報文的長度。
10.根據權利要求7至9任一項所述的裝置,其特徵在於所述協議分析器410,還用於將所述記錄的報文中由伺服器返回給客戶端的響應報文 按照對應於所述第一合法報文序列的順序進行排列,得到第二合法響應序列;所述模糊測試器420中進一步包括測試模塊425,所述測試模塊425用於依次將每一個 測試報文序列作為當前測試報文序列發送給所述伺服器;並用於將對應於所述當前測試報 文序列的合法報文序列發送給所述伺服器,接收所述伺服器返回的響應序列;還用於根據 所述第二合法響應序列確定對應於所述合法報文序列的合法響應序列,判斷所述伺服器返 回的響應序列與所述合法響應序列是否相同,在不相同時,記錄當前測試報文序列以及所 述伺服器返回的響應序列。
全文摘要
本發明公開了一種產生測試用例的方法,該方法用於對協議進行模糊測試,該方法首先採用協議分析器抓取並記錄協議雙方之間交互的報文;然後採用協議分析器對所記錄的報文進行解析,得到報文的各個欄位;最後根據各個欄位的類型,以相應類型的模糊數據填充該欄位得到測試報文。本發明還公開了一種產生測試用例的系統。應用本發明能夠在無需理解協議規範的相關知識的情況下,產生完整有效的測試用例,以完整、有效地評估協議產品的安全性。
文檔編號H04L29/06GK101902367SQ20091014382
公開日2010年12月1日 申請日期2009年5月31日 優先權日2009年5月31日
發明者唐文 申請人:西門子(中國)有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀