新四季網

一種動靜態結合的軟體安全性測試方法

2023-10-11 13:39:24

專利名稱:一種動靜態結合的軟體安全性測試方法
技術領域:
本發明涉及一種計算機軟體安全性測試方法,尤其是涉及一種動靜態結合的軟體安全性測試方法。
背景技術:
軟體分析是檢測軟體漏洞、軟體惡意行為等安全性問題的基礎。從分析目標的不同,現有軟體分析方法一般分為面向原始碼的軟體分析和面向可執行程序的軟體分析。前者針對有原始碼的程序,相對而言,分析準確性更高。但是現有軟體多數不提供原始碼,同時,即使部分軟體提供了原始碼,也不能保證使用的可執行程序和原始碼之間的對應關係。 對於後者,首先將需要分析的二進位目標代碼反彙編,得到彙編代碼;然後對彙編代碼進行切片,即對某些上下文關聯密切、有意義的代碼進行匯聚,降低其複雜性;最後通過分析功能模塊,來判斷是否存在漏洞。可執行程序分析方法一般分為靜態方法和動態方法兩種。靜態分析方法使用反彙編手段,將可執行程序的二進位代碼轉變為彙編語言並以此為基礎進行分析。其優點在於可以較為全面的分析程序代碼,但是由於分析過程依賴於大量的推理和符號演算,因此效率較低。動態分析方法的基本思想是利用程序運行時的數據提高分析效率和準確性,同時避免由於變形等反靜態分析技術帶來的不可分析性。Fuzz技術屬於動態分析方法,是目前常用的一種重要的漏洞挖掘方法,原理是通過構造不同的輸入,嘗試觸發程序執行的各種不同路徑以暴露出程序潛在的安全問題。此類方法僅能窮舉有限個輸入,並不能對所有的輸入都進行測試。因此,通過此方法驗證的程序會有一定數量的漏報,而且會耗費大量時間重複已有測試結果,檢測效率低,檢測效果較差。

發明內容
本發明針對目前Fuzz動態測試技術的不足,提出一種動靜態結合的軟體安全性測試方法,有效地解決了 Fuzz技術中符號執行帶來的路徑空間爆炸問題,使軟體安全性測試工作效率顯著提高。本發明所採用的技術方案—種動靜態結合的軟體安全性測試方法,包括下述步驟1)將被測可執行程序(軟體)進行反彙編,得到彙編代碼;2)將彙編代碼轉換為統一的中間彙編語言形式,以屏蔽底層具體會變語言的差異;本步驟中,僅使用12條中間彙編語言語句,替代X86的CISC (Complex Instruction Set Computer)指令集的300多條指令;3)根據中間彙編語言形式,生成文件的函數調用圖(CG)和控制流圖(ere);4)定義敏感點函數特徵,通過對函數調用圖(CG)的靜態分析,找到系統脆弱點 (即敏感點)所處函數;
5)利用動態分析方法,構造合適的測試用例,運行被測可執行程序,生成並記錄執行路徑;6)根據函數調用圖(CG),以某個敏感點為起點,尋找其被調用的函數(父節點), 記錄該路徑,一直上溯找到某個祖先節點,如果該祖先節點處於步驟幻生成的執行路徑上,再根據控制流圖(CFG),在基本塊一級找到觸發該脆弱點的具體路徑,則該敏感點對應的漏洞挖掘過程結束;7)如果無法找到該路徑,則重新執行步驟幻,構造測試用例生成執行路徑,然後執行步驟6),如此往復循環,直至該敏感點對應的漏洞挖掘過程結束。所述的動靜態結合的軟體安全性測試方法,在步驟1)中,使用IDA PRO工具對被測可執行程序進行反彙編,得到具體的彙編代碼。所述的動靜態結合的軟體安全性測試方法,在步驟3)中,編寫IDA插件,實現被測程序控制流圖(CFGs)和函數調用圖(CG)的生成。此處的CF(}s表示生成的控制流圖CFG 有多個。所述的動靜態結合的軟體安全性測試方法,在步驟4)中,定義了兩類敏感點,分別是調用不安全函數和循環寫內存出錯。所述的動靜態結合的軟體安全性測試方法,在步驟5)中,隨機構造一個測試用例,儘可能覆蓋多的代碼樹分枝,用於生成執行路徑。所述的動靜態結合的軟體安全性測試方法,在步驟6)中,根據深度優先遍歷原則,尋找敏感點到已生成路徑某個節點的路徑。本發明的有益積極效果1、本發明動靜態結合的軟體安全性測試方法,針對目前Fuzz動態測試技術的不足,從靜態分析尋找敏感點位置入手,然後動態分析生成測試路徑,最後查找敏感點到測試路徑是否可達,從而更有針對性的完成漏洞挖掘工作,改變了軟體測試的盲目性,使軟體安全性測試工作效率顯著提高。2、本發明動靜態結合的軟體安全性測試方法,有效地改進了傳統漏洞挖掘方法, 較好地解決了單一依靠Fuzz動態測試技術中符號執行帶來的路徑狀態空間爆炸的問題, 大大提高了路徑覆蓋的命中率和軟體測試分析的效率。


圖1為當每次循環時,源、目的緩衝區的位移值都固定時,「循環寫內存」敏感點的發現的流程圖;圖2為當每次循環時,源、目的緩衝區的位移值都不固定時,「循環寫內存」敏感點的發現的流程圖;圖3為尋找敏感點到某個執行路徑上某節點的可能路徑的流程圖;圖4為本發明動靜態結合的軟體安全性測試方法流程方塊圖。
具體實施例方式實施例一參見圖4,本發明動靜態結合的軟體安全性測試方法,具體包括下述步驟
1)將被測可執行程序(軟體)進行反彙編,得到彙編代碼;2)將彙編代碼轉換為統一的中間彙編語言形式,以屏蔽底層具體會變語言的差

升;3)根據中間彙編語言形式,生成文件的函數調用圖(CG)和控制流圖(CFG);4)定義敏感點函數特徵,通過對函數調用圖(CG)的靜態分析,找到系統脆弱點 (即敏感點)所處函數;5)利用動態分析方法,構造合適的測試用例,運行被測可執行程序,生成並記錄執行路徑;6)根據函數調用圖(CG),以某個敏感點為起點,尋找其被調用的函數(父節點), 記錄該路徑,一直上溯找到某個祖先節點,如果該祖先節點處於步驟幻生成的執行路徑上,再根據控制流圖(CFG),在基本塊一級找到觸發該脆弱點的具體路徑,則該敏感點對應的漏洞挖掘過程結束;7)如果無法找到該路徑,則重新執行步驟幻,構造測試用例生成執行路徑,然後執行步驟6),如此往復循環,直至該敏感點對應的漏洞挖掘過程結束。在步驟1)中,可使用IDA PRO工具對被測可執行程序進行反彙編,得到具體的彙編代碼。實施例二 本實施例的動靜態結合的軟體安全性測試方法,與實施例一不同的是, 在步驟3)中,通過編寫IDA插件,實現被測程序控制流圖(CFGs)和函數調用圖(CG)的生成。具體的生成控制流圖時是特指的,因為有多個CFG,故用複數形式CFGs)。在步驟4)中, 定義了兩類敏感點,分別是調用不安全函數和循環寫內存出錯。實施例三本實施例的動靜態結合的軟體安全性測試方法,與實施例二不同的是, 在步驟幻中,隨機構造一個測試用例,儘可能覆蓋多的代碼樹分枝,用於生成執行路徑。在步驟6)中,根據深度優先遍歷原則,尋找敏感點到已生成路徑某個節點的路徑。本發明動靜態結合的軟體安全性測試方法,僅使用12條中間彙編語言語句,替代 X86 的 CISC (Complex Instruction Set Computer)指令集的 300 多條指令(步驟 2)中), 有效地改進了傳統漏洞挖掘方法,提高了軟體安全性測試效率。實施例四本實施例結合附圖,進一步說明本發明動靜態結合的軟體安全性測試方法的具體實現方式。參見圖1 圖4。所述的動靜態結合的軟體安全性測試方法,包括步驟一將被測可執行程序進行反彙編,並將彙編代碼轉換為統一的中間彙編語言形式,從而構建二進位文件的控制流圖和調用圖;步驟二 根據敏感點函數特徵,搜尋敏感點所處函數位置;步驟三構造合適的測試用例,運行被測程序,生成並記錄執行路徑;根據函數調用圖,尋找敏感點到某個執行路徑上某節點的可能路徑。下面詳細說明步驟一、步驟二、步驟三所包含的相關內容(一 )步驟一將可執行文件輸入IDA PRO中,IDA PRO識別二進位文件編譯的機器語言,將其反彙編成對應的X86。中間彙編翻譯模塊將反彙編代碼轉換成統一形式的中間彙編語言。中間彙編語言設計的主要原則如下(1)精簡指令集的設計思想;(2)足夠多的寄存器數量以適應各種硬體體系結構;(3)儘量簡單的尋址方式,去除不利於閱讀的複雜尋址方式;(4) 3-操作數指令格式。1.寄存器組的設計(1)通用寄存器組的設計。下表描述了通用寄存器組的設計。指令計數器為EIP, 棧幀指針為ESP。棧頂指針為EBP,用PC,FP, SP表示。
權利要求
1.一種動靜態結合的軟體安全性測試方法,其特徵是包括下述步驟1)將被測可執行程序進行反彙編,得到彙編代碼;2)將彙編代碼轉換為統一的中間彙編語言形式,以屏蔽底層具體會變語言的差異;3)根據中間彙編語言形式,生成文件的函數調用圖(CG)和控制流圖(CFG);4)定義敏感點函數特徵,通過對函數調用圖(CG)的靜態分析,找到系統脆弱點所處函數;5)利用動態分析方法,構造合適的測試用例,運行被測可執行程序,生成並記錄執行路徑;6)根據函數調用圖(CG),以某個敏感點為起點,尋找其被調用的函數,記錄該路徑,一直上溯找到某個祖先節點,如果該祖先節點處於步驟5)生成的執行路徑上,再根據控制流圖(CFG),在基本塊一級找到觸發該脆弱點的具體路徑,則該敏感點對應的漏洞挖掘過程結束;7)如果無法找到該路徑,則重新執行步驟5),構造測試用例生成執行路徑,然後執行步驟6),如此往復循環,直至該敏感點對應的漏洞挖掘過程結束。
2.根據權利要求1所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟1)中, 使用IDA PRO工具對被測可執行程序進行反彙編,得到具體的彙編代碼。
3.根據權利要求1或2所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟3)中,編寫IDA插件,實現被測程序控制流圖(CFGs)和函數調用圖(CG)的生成。
4.根據權利要求3所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟4)中, 定義了兩類敏感點,分別是調用不安全函數和循環寫內存出錯。
5.根據權利要求1或2所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟4)中,定義了兩類敏感點,分別是調用不安全函數和循環寫內存出錯。
6.根據權利要求5所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟5)中, 隨機構造一個測試用例,儘可能覆蓋多的代碼樹分枝,用於生成執行路徑。
7.根據權利要求6所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟6)中, 根據深度優先遍歷原則,尋找敏感點到已生成路徑某個節點的路徑。
8.根據權利要求1、2或4所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟5)中,隨機構造一個測試用例,儘可能覆蓋多的代碼樹分枝,用於生成執行路徑。
9.根據權利要求8所述的動靜態結合的軟體安全性測試方法,其特徵是,在步驟6)中, 根據深度優先遍歷原則,尋找敏感點到已生成路徑某個節點的路徑。
全文摘要
本發明涉及一種計算機軟體安全性測試方法。一種動靜態結合的軟體安全性測試方法,首先,將可執行程序進行反彙編及中間語言轉換,生成文件的函數調用圖和控制流圖;然後通過對函數調用圖的靜態分析,找到系統脆弱點,並利用動態分析方法構造測試用例生成執行路徑;再以函數調用圖為基礎,尋找其被調用的函數,如果該函數處於前述生成的執行路徑上,則控制流圖在基本塊一級找到觸發該脆弱點的具體路徑,則該敏感點對應的漏洞挖掘過程結束;如果無法找到該路徑,則重新構造測試用例生成執行路徑,尋找其被調用的函數,如此往復循環。本發明較好解決了單一依靠Fuzz動態測試帶來的路徑狀態空間爆炸的問題,大大提高了路徑覆蓋的命中率和軟體測試分析的效率。
文檔編號G06F11/36GK102360334SQ20111031584
公開日2012年2月22日 申請日期2011年10月17日 優先權日2011年10月17日
發明者劉傑, 尹中旭, 彭建山, 曹琰, 歐陽永基, 王清賢, 魏強 申請人:中國人民解放軍信息工程大學

同类文章

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

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有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-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀