999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于異常分布導向的智能Fuzzing方法

2015-12-13 11:45:30歐陽永基王清賢尹中旭
電子與信息學報 2015年1期
關鍵詞:程序模型

歐陽永基 魏 強 王清賢 尹中旭

1 引言

Fuzzing[1]測試是軟件測試中一種很重要的測試方法,它使用大量隨機變異的用例作為輸入,監視所檢測程序是否在運行這些用例時發生異常。以zzuf[2], MiniFuzz[3]等為代表的傳統 Fuzzing測試方法廣泛應用于代碼的檢測中,它們可以挖掘出其他檢測方法無法檢測的脆弱點。但是傳統的 Fuzzing測試方法的缺陷也很明顯:由于測試數據的構造方法過于隨機簡單,以及測試具有盲目性,導致測試速度快但效率低;難以確定覆蓋率,導致無法對Fuzzing結果進行評估;由于不能保證充分的代碼覆蓋導致漏報率高;由于測試數據的相互獨立,導致難以發現復雜的脆弱點等。以EFS[4]和peach[5]等為代表的智能 Fuzzing測試工具,根據對測試程序的分析、理解,利用啟發式算法、結構化的數據構造描述,能夠構造豐富多樣的測試數據,但仍然忽視了已有異常對潛在異常的指示作用,往往不能在宏觀層面上研究測試數據的構造。而以Ruijters[6]等為代表的研究人員,探索了利用馬爾科夫鏈建模等技術進行更有效測試的可行性,雖然他們的模型可以生成大量有差異的樣本,并能有效評估覆蓋率,但是他們依然沒有建立程序異常和測試因素的整體關系模型,局限于改善某個、或某幾個測試因素,對Fuzzing測試的貢獻有限。

為了克服現有 Fuzzing技術對目標程序缺乏理解、測試完全隨機且盲目的缺點,研究者提出了許多新技術和新方法[7,8],基于動態符號執行的智能測試技術逐漸成為其中的研究熱點。其具體做法是首先通過靜態分析獲得危險點,然后通過符號執行收集路徑條件,最后利用約束求解工具求解能夠執行到指定路徑的測試數據進行測試。微軟公司軟件可靠性部門Godefroid等人[9]設計的SAGE,加州大學伯克利分校的Molnar等人[10]在Valgrind基礎之上設計開發的CatchConv,斯坦福大學Engler等人開發的ARCHER以及威斯康星大學Balakrishnan等人[11]開發的 CodeSurfer/x86,北京大學 Wang等人[12]所開發 TaintScope,阿姆斯特丹自由大學[13]開發的Dowser,上述軟件測試模型采用中間表示、污點傳播分析、符號執行、執行路徑遍歷、路徑約束求解等思想,不同程度上改進了以peach為代表的Fuzzing技術的弊端,反映了軟件脆弱性測試由模糊化測試向精確化測試轉變的趨勢。然而不同于Fuzzing技術,基于動態符號執行測試中的關鍵技術,如符號執行、約束求解等技術都需要大量計算資源,并且技術實現較為復雜,不利于大規模推廣應用。迄今為止,安全社區最具代表性的開源原型工具Fuzzgrind, Pingrind, avalanche和KLEE,尚無法對大型應用程序進行有效測試,例如 WPS office 2013軟件、暴風影音5媒體播發軟件、PDF閱讀軟件SumatraPDF等。實際應用中,安全研究人員發現脆弱點普遍存在出錯代碼區域重合、觸發原理相似的現象。例如研究人員Exodusintel利用對CVE-2013-3147脆弱點的分析,采用與之相似的對編輯聚焦事件處理的方法構造了能觸發新脆弱點的樣本。同時,Arcuri等人通過分析、研究現有隨機測試的因素,提供了一種新穎的評估隨機測試有效性的理論,它為建立程序異常和測試因素的關系模型提供了理論基礎[14]。

本文的主要貢獻如下:(1)綜合Fuzzing技術和動態符號執行技術的優缺點,并考慮已發現脆弱點和潛在脆弱點的相關性,提出了一種基于異常分布導向的樣本構造模型 TGM(Testcase Generation Model)。TGM 模型能夠優先選擇異常概率高與基本塊覆蓋多的樣本進行數據變異,并可以根據測試結果迭代更新模型參數,使模型不斷趨近實際測試樣本異常分布。(2)在TGM模型基礎上,設計并構建了智能 Fuzzing框架,并對其中測試輸入參數對應屬性的處理等關鍵問題進行了解決,為合理利用TGM 模型進行程序測試提供了基礎。(3)實現了基于 TGM 的模糊測試器 CombFuzz,利用該系統分別對BegBunch[15]測試集和WPS等大型應用程序進行了測試,并與現有工具進行了對比,實驗表明基于TGM模型的智能Fuzzing測試方法有著較強的異常挖掘能力和代碼覆蓋能力。

2 基于異常分布導向的樣本構造模型

為了優先選擇異常觸發概率高的樣本進行測試,本文對一些開源軟件的Bug庫進行了統計分析,從中發現已測試出的安全缺陷存在一定的隱含規律。例如,在Mozilla的Bugzilla中,我們發現,有近200個安全問題發生在assertion語句周圍。因此,考慮到安全缺陷發生的規律性,本文提出一種基于異常分布導向的樣本構造模型 TGM(Testcase Generation Model)。

為了更好地對模型進行敘述,我們以文件測試為例進行說明,下面給出模型適用于文件測試的一些重要概念的定義:(1)文件偏移:測試文件的基本組成單元,記為r;(2)文件類型:即測試文件的結構,記為cat; (3)文件:由m個偏移組成,表示為s={r1, r2, … ,rm|m > 0 且 m ∈ N}; (4)測試集:由n 個測試文件組成,表示為 S = {s1, s2,… ,sn|n > 0 且 n ∈N}。

在單個 Fuzzing測試中,如果將產生異常標記為事件A,沒有產生異常記為A,則發生異常的概率可以記為p( A)。如果以該次Fuzzing測試的特征(如測試文件偏移 r1, r2,…,rm和測試文件類型cat)為先驗,則測試發生異常的概率可以表示為 p ( A|r1, r2,… ,rm,cat)。顯然單個Fuzzing測試為伯努利實驗,如果對所有 ri, cat的組合都進行無窮次測試,那么就可以精確地獲得在給定文件偏移、文件類型的前提下,事件A發生的概率。然而出于測試成本的考慮,重復進行大量實驗是不可取的。因而可利用泊松分布在一定的置信區間計算出異常觸發的概率,進而選擇概率高的樣本進行測試。

基于該測試思想,本文建立了TGM樣本構造模型,輔助 Fuzzing方法進行程序測試,其概率圖表示如圖1所示,其中,t表示脆弱性模式,I表示測試輸入參數對應屬性,θ表示I可能觸發的異常概率,α表示θ的概率分布。

圖1 TGM概率圖

在TGM模型中,將脆弱性模式t和異常觸發的相對強弱α作為樣本構造的先驗條件,由參數(,)tα可以獲得測試輸入參數I可能觸發的異常概率θ。采用TGM模型構造測試樣本,用戶首先對測試樣本集進行去重等預處理,根據要測試的脆弱性模式,選擇I中的測試樣本,如對于緩沖區溢出檢測,用戶可選擇樣本中能污染strcpy函數中長度參數的偏移,并以遞增和遞減該偏移的方式選取待測偏移集合,然后在測試中,根據這些偏移觸發的異常數量,迭代調整參數α,θ值,并優先選擇異常觸發概率高的樣本進行測試。

對于Fuzzing測試,最重要的是基于TGM模型選擇參數I,然后通過改變屬性中的元素來構造新的樣本。I的取值可以為多種屬性,例如,對于本文研究的文檔類Fuzzing 測試,I的取值為文檔類型cat和偏移r兩種屬性。具體而言,給定一組測試樣本,首先根據選定的屬性I進行分組,如根據樣本覆蓋的基本塊數目、指令條數、執行時間、樣本文件類型、覆蓋函數的偏移等進行分類;然后從組中挑選樣本進行測試,并計算可能的異常概率分布;最后,建立合適的模型分析該分布的分布來指導測試器選擇下一個待測試的樣本。若一個測試集中包含k個屬性類型,總的異常數量Q,每種類型的異常數量為q,則每種類型的異常概率為 qk/Q。我們將I可能觸發的異常概率表示為θ,顯然θ服從多項分布(multinomial distribution)。對于不同的脆弱性模式,異常觸發的概率分布一般并不相同,因此,我們以α表示在不同脆弱性模式下異常觸發的相對強弱。由于狄利克雷分布是多項分布的共軛先驗分布,我們假定α服從狄利克雷分布。綜上所述,TGM 模型將按照以下步驟來構造新的樣本:(1)θ ~ Dir(α); (2)I~Multinomial(θ); (3)根據I 構造新樣本。

若總共有M個屬性,即I={ r , cat, …},則TGM的概率模型可表示為

如果對于每一個脆弱性模式都訓練一個 TGM模型,則可以去掉參數t來簡化模型,即式(1)可轉化為式(2):

其中θ服從分布Dir()α,即

對于某個Dir()α分布,則對應輸入參數I以ip觸發異常的概率為

為提高模糊測試器發現測試程序異常的效率,我們首先根據初始測試樣本的測試結果,初始化TGM 模型的參數α和θ,然后根據已初始化的模型,選擇屬性I進行新樣本構造,并利用新的樣本測試結果,對概率模型參數進行更新,使得模型更準確地反映出偏移、類型對異常觸發的影響程度,進而指導測試器選取更有效的測試樣本。迭代進行屬性選擇、新樣本構造與測試、模型更新的過程,直到達到預定測試效果或測試時間結束為止。

3 基于TGM的模糊測試器設計

基于TGM模型,本文設計了針對文件處理軟件的測試器,其總體框架如圖2所示。

圖2 模糊測試器總體框架

該測試器主要由數據分析、變異策略、樣本構造、Fuzzing 4個主要部分組成。其中,數據分析主要負責對樣本集合進行去重、優化、以及樣本屬性的信息收集;變異策略根據TGM模型選擇樣本屬性作為候選變異對象;樣本構造通過畸形的數據替換構造新的樣本;Fuzzing主要包括執行測試和crash捕獲兩個主要功能。下面將詳細描述基于TGM模型的測試器所涉及的關鍵算法與技術。

3.1 樣本集去重

在 Fuzzing測試中,如果重疊樣本過多,將會嚴重影響測試效率和樣本概率的統計。因此,本文的首要目標就是要確保在達到同樣測試效果的前提下減少樣本集的規模,提高測試用例的構造效率。為了完成上述目的,本文設計了一種基于貪心算法的樣本去重算法,該算法每次都在剩下的樣本中選取最大的樣本進行去重,并記錄基本塊的地址,防止重復比較,與開源社區peach的MinSet相比,改善了它簡單遍歷基本塊的模式,減少了優化時間。經過上述處理,在達到同樣測試效果的前提下,樣本集中的樣本間將不會存在執行路徑完全相同的兩個樣本,緩解了相同效果樣本的干擾,為后面樣本的異常概率統計提高了準確度。

3.2 樣本變異屬性選取

在基于變異的 Fuzzing測試中,測試樣本類型和變異偏移是 Fuzzing的兩個重要測試輸入參數,也是影響測試效率的主要因素。合適的參數選取將會大大提高測試的效率,本節將敘述如何盡可能選取觸發異常概率大的測試樣本。

3.2.1 樣本類型選取算法 由于本文選取樣本類型和偏移兩種屬性來指導數據的變異,為了區分二者的順序,本文將樣本類型作為第一主要因素來指導測試文件的選取。根據已訓練好的TGM模型,可以獲得異常觸發的概率分布情況,利用概率分布能快速地計算出文件類型的異常觸發概率,因而,模糊測試器依據此信息可選擇更合適的樣本進行測試,樣本類型選取具體算法如表1所示。

模糊測試器根據上述算法選取合適的樣本類型進行優先測試,其下一步的任務是如何在選取的樣本上進行變異,使得測試效果更好。

3.2.2 樣本偏移選取 對于測試的目標,無論是文件處理程序、協議或者其它的程序,都有著千差萬別的數據結構類型。有些可能是一個“頭部+數據”的簡單格式,而大多數的格式卻更加復雜。本節要解決的主要問題是如何恰當選取樣本偏移,既不破壞格式語義,又具備較佳測試效果。為了解決該問題,本文提出了基于快慢表的污點分析技術,首先分析程序中函數的輸入偏移,然后根據得到的偏移對輸入樣本進行變異,采用與文件類型選取相似的算法構造測試數據。

表1 樣本類型選取算法

(1)基于快慢表的污點分析:污點分析是一種有效確認變量間是否相關的方法,為了獲得樣本對于程序的影響情況,本文利用該技術對程序執行進行精確分析。其主要思想是將不受信任的輸入源標記為污點(taint),然后跟蹤這類數據在程序中的執行情況,并把與這些數據具有傳播關系的數據同樣標記為污點,最后進行安全分析等需要的操作。根據該思想,研究人員開發了大量的污點分析工具,例如DTA++[16]與libdft[17]等現代污點分析工具,但是依然存在污點分析效率問題,尤其忽視了對污點分析關鍵模塊影子內存[18]的優化。

考慮到程序執行時往往具備局部性原理,即在一段時間內,整個程序的執行僅限于程序中的某一部分。相應地,執行所訪問的存儲空間也局限于某個內存區域。為了提高效率,我們可利用頁式存儲結構的思想來設計影子內存。因此,本文在 libdft的基礎上,設計了基于快慢表影子內存的細粒度污點分析方法,該方法以快慢表的結構跟蹤每一個輸入字節的污點傳播過程,記錄任意被污染內存的污點標簽(輸入偏移),為偏移的選取提供可選依據。本文設計的基于快慢表的影子內存包含兩個數據結構:污點位圖(快表)和污點源映射表(慢表)。污點位圖是一段靜態分配的內存,其每一位對應4 GB虛擬內存中的每一字節,標識其是否被污染。因而采用移位操作可以迅速判斷某一內存是否被污染。對于線性地址x處單字節,判斷其是否被污染的公式為

式(5)中 BIT_MAP_SIZE 為污點位圖大小,IsTainted標識該內存是否被污染。污點位圖理論大小為4 GB/8=512 MB。但在實際測試中,將污點位圖設置為64 M,這樣會導致多個虛擬地址映射到位圖同一位的情況。但由于污點數據僅在寄存器和堆棧區域之間傳播,而堆棧區域僅占總內存較小的比例,污點數據在位圖中由于更新而產生地址碰撞的可能性極小。此外,如果產生地址碰撞,可以查詢污點源映射表進行二次確認。污點源映射表是一張哈希表,用于維護污點單元(包括寄存器和內存)地址和污點源之間的映射關系。實際實現時,只有通過位圖判斷存在某一內存或寄存器存在污點數據處理時,才更新污點映射表,即添加一個地址項和對應的輸入偏移的集合。由于程序執行過程中訪問的污點內存只占總內存較小比例,因此可以通過污點位圖表快速定位某一內存是否被污染,如果沒有被污染(絕大多數情況),則不必查詢污點源映射表,加快污點分析速度。

(2)偏移分析:設計完污點分析策略之后,為了確定偏移的范圍,需要對測試程序的執行數據流處理的相關信息進行記錄,以供后續模塊參考和使用。考慮到函數和指令是處理數據的主體,所以分別對指令和函數進行記錄,然后分析它們與偏移位置的映射關系來確定偏移。

(a)指令記錄:在程序的執行流中,函數間將包含許多指令,為了分析清楚輸入源和函數處理的關系,需要對輸入源在程序中的加載處和函數間的指令進行記錄,然后在此基礎上對每條指令的源操作數和目的操作數進行分析,獲取輸入源的處理偏移。現實中,程序執行的指令規模十分巨大,為了減少記錄規模,本文采用只記錄跟污點相關的操作指令。對于每一條污點處理指令,污點來源記錄方式如下所示:

該記錄所表示的含義為:0x5adc4324指令處理的污點來源為偏移0x7處的連續4個字節,表示為taintsrc(0x 5 a dc4 324)= {0x 7 ,0x 8 ,0x 9 ,0x a }。

因此,通過上述的指令記錄方式,可以很快地找尋到程序中某個函數處理的輸入來源于樣本的哪些字節,即這些字節在樣本中所處的偏移。

(b)函數記錄:函數記錄用于記錄程序內部某一子函數的污染數據來源,給 Fuzzing器提供變異偏移的可選方式。由于測試程序中的函數會頻繁地調用系統庫函數,因此,該類型函數的調用需要特殊處理。本文主要采用函數摘要的方式對庫函數的污點傳播進行封裝,減少頻繁在庫函數內部的跟蹤次數。在提高效率的同時,記錄特定庫函數的污染來源。

(3)偏移選取算法:通過污點跟蹤和偏移的分析,可以得到輸入源一系列的文件偏移。測試時,可以根據實際的情況,適當選取偏移,然后讓測試器依次變異這些偏移。對于不同的文件,其偏移的適應度各有差異,偏移選取算法正是為了指導測試器選取最優的偏移進行測試。對于給定的樣本文件si,其偏移集合為 R = {r1, r2,… ,rm|m > 0 且 m ∈ N},根據TGM模型,統計每個偏移r在測試過程中觸發異常的概率大小,根據概率的大小選取下一次測試變異的偏移。具體實現類似于樣本類型選取算法,此處不再贅述。

4 實驗與分析

為驗證方法的有效性和正確性,本文構建了實驗環境,并開發了基于異常分布導向的智能Fuzzing原型工具 CombFuzz,選取真實的測試用例進行分析與驗證。

4.1 已有安全異常檢測能力測試

為了驗證本文方法對已有安全異常的檢測能力,我們選用了 Begbunch提供的測試用例作為測試對象,并與zzuf, Fuzzgrind和KLEE工具進行了對比,實驗數據如表2所示。

經實驗測試,本文提出的基于異常分布的智能Fuzzing方法能正確發現Begbunch測試集中的67個安全脆弱點,并沒有產生誤報,同時可以覆蓋176532個基本塊。對比其它3個工具,CombFuzz在脆弱點檢測的正確性方面,明顯強于 zzuf,基本能達到以Fuzzgrind和KLEE為代表的精細化測試工具的異常檢測水平。同時,在代碼覆蓋方面,CombFuzz能比zzuf多覆蓋50000多個基本塊,但是卻比Fuzzgrind和KLEE覆蓋的基本塊少。分析上述原因,zzuf是傳統的Fuzzing技術,它忽視了程序執行信息對測試的反饋能力。Fuzzgrind是一種典型的基于動態符號執行的智能測試技術,但它的符號執行設計較為簡單,實際執行過程中,對于復雜的程序,無法有效生成能覆蓋預期目標的用例,導致其無法發現更多的異常。KLEE相較于Fuzzgrind有較大的提升,但由于符號執行技術固有的缺陷,它依然無法擺脫需要大量計算資源的現實要求,對于大型應用程序的測試仍較為勉強。總的來說,CombFuzz原型工具在對已有安全異常的檢測能力和代碼覆蓋能力都有較好表現。

表2 多個工具對比測試結果

4.2 未知安全異常檢測能力測試

該實驗選用了暴風影音5,WPS office 2013和SumatraPDF作為安全測試對象,同時,利用微軟SDL實驗室的MiniFuzz和開源工具Pingrind分別對上述3個軟件進行測試,然后對三者的測試結果進行比較,表3為三者測試的結果。

表3 CombFuzz, MiniFuzz和Pingrind測試發現缺陷數

從表3可以看出,在給定相同的時間下,本方法相比MiniFuzz的Fuzzing技術,異常發現效率平均提高近18倍,并且對于SumatraPDF的測試,CombFuzz發掘了 MiniFuzz無法發現的異常,而Pingrind基本無法找出程序缺陷。對于Pingrind工具,其測試思想與 Fuzzgrind相同,因此,對于大型應用程序進行測試時,為了順利進行,需對約束進行一定的限制,本文將約束設置為500和1000分別進行了測試,但都沒測試到有效缺陷,可見對于大型應用程序,在有限的測試資源下,基于符號執行的Fuzzing技術作用有限;對于MiniFuzz,它是一款用于簡化模糊測試部署的模糊測試工具,其中心思想是構造豐富的測試數據對程序進行測試,它關注隨機化數據的樣式,卻沒有分析數據和程序本身的相關性,更缺乏對已有測試數據的反饋學習。同時,為了驗證本文方法發掘異常的危害程度,我們通過MSEC和人工驗證,發現CombFuzz挖掘出了7個未公開的“可利用”脆弱點,高達16個“可能可利用”和“可能不可利用”脆弱點。

另一方面,在利用傳統的 Fuzzing方法進行程序,由于樣本文件、偏移變異范圍選取不夠合適,容易發生長時間無法發現異常的情況,無法判斷測試終止條件,影響測試效率。為了驗證本文方法對該缺陷的改進,我們對異常發現的時間進行了記錄,圖3是利用CombFuzz工具對WPS office 2013、暴風影音5和SumatraPDF測試產生異常的數量隨時間的分布情況。

圖3 異常隨時間分布情況

從圖3可以看出,除了對暴風影音5的測試結果,其它兩個結果都表明CombFuzz能較長時間地發現程序的異常,并且,它也能以較短的時間使得異常發現的速度達到最大值。同時,從圖3可以發現,在后面的測試時間段里,發現異常的數量明顯減少,主要可能的因素:一是本文原型工具在測試策略中,采用隨機變異的方式存在一定的局限;二是在偏移選取中,不是對每個基本塊或函數采取定制的變異范圍,而是為方便概率統計和實現,每次變異都采用了同等長度,犧牲了精度;三是沒有對程序路徑進行分析,無法反饋執行信息,更新偏移范圍。

5 結束語

從軟件安全測試的角度來看,利用已發現的異常觸發概率分布,以盡量覆蓋更多的基本塊,有針對性地構造測試用例,并優先測試異常概率高的樣本,可以顯著提高軟件測試的效率。本文提出了TGM樣本構造模型,設計并實現了基于該模型的異常分布導向智能 Fuzzing測試器,首先通過隨機收集測試對象程序的樣本集,然后,利用樣本去重算法去除冗余測試樣本,最終,在基于 TGM模型的樣本文件類型選取算法和偏移選取算法的支持下,指導測試器優先測試異常概率高的樣本。從理論分析和實驗數據看,本文給出的基于異常分布導向的智能 Fuzzing方法,相對微軟 SDL實驗室的MiniFuzz 模糊測試器具有更高的異常發現效率,并在幾款具有代表性的常用應用軟件中發現了未公開的脆弱點,有效驗證了本文方法的正確性。但依然存在一些問題,如對于已經發現的異常,沒有對其產生機理進行詳細分析,若產生缺陷的代碼具有相關性,能對TGM模型進行如何改進等,還需要在接下來的工作中進一步研究。

[1] Sutton M, Greene A, and Amini P. Fuzzing: Brute Force Vulnerability Discovery[M]. New Jersey: Pearson Education,2007.

[2] Hocevar S. zzuf multi-purpose fuzzer[OL]. http://caca.zoy. org/wiki/zzuf, 2013.

[3] Microsoft SDL. MiniFuzz tool[OL]. http://technet.microsoft.com/en-us/edge/minifuzz-overview-and-demo.aspx, 2013.3.

[4] DeMott J, Enbody R, and Punch W F. Revolutionizing the field of grey-box attack surface testing with evolutionary fuzzing[OL]. https://www.blackhat.com/html/bh-mediaarchives/bh-archives-2007.html, 2007.

[5] Michael Eddington, Peach[OL]. http://peachfuzzer.com.2013.10.

[6] Ruijters E. [Master dissertation], Model-checking Markov chains using interval arithmetic[D]. [Master dissertalion],Maastricht University, 2013.

[7] 孫浩, 李會朋, 曾慶凱. 基于信息流的整數漏洞插裝和驗證[J].軟件學報, 2013, 24(12): 2767-2781.Sun Hao, Li Hui-peng, and Zeng Qing-kai. Statically detect and run-time check integer-based vulnerabilities with information flow[J]. Journal of Software, 2013, 24(12):2767-2781.

[8] 崔寶江, 梁曉兵, 王禹, 等. 基于回溯與引導的關鍵代碼區域覆蓋的二進制程序測試技術研究[J]. 電子與信息學報, 2012,34(1): 108-114.Cui Bao-jiang, Liang Xiao-bing, Wang Yu. The study of binary program test techniques based on backtracking and leading for covering key code area[J]. Journal of Electronics &Information Technology, 2012, 34(1): 108-114.

[9] Godefroid P, Levin M Y, and Molnar D. Sage: whitebox fuzzing for security testing[J]. Queue, 2012, 10(1): 20.

[10] Molnar D A and Wagner D. Catchconv: symbolic execution and run-time type inference for integer conversion errors[R].EECS Department, University of California, Berkeley,Technical Report No. UCB/EECS-2007-23, 2007.

[11] Balakrishnan G, Gruian R, and Reps T. CodeSurfer/x86 a platform for analyzing x86 executables[C]. Compiler Construction. Springer Berlin Heidelberg, 2005: 250-254.

[12] Wang T, Wei T, Gu G, et al.. TaintScope. a checksum-aware directed fuzzing tool for automatic software vulnerability detection[C]. 2010 IEEE Symposium on Security and Privacy(SP), Oakland, USA, 2010: 497-512.

[13] Haller I, Slowinska A, Neugschwandtner M, et al.. Dowsing for overflows: a guided fuzzer to find buffer boundary violations[C]. Proceedings of the 22nd USENIX conference on Security, Washington D.C, 2013: 49-64.

[14] Arcuri A, Iqbal M Z, and Briand L. Random testing:theoretical results and practical implications[J]. IEEE Transactions on Software Engineering, 2012, 38(2): 258-277.[15] Cifuentes C, Hoermann C, and Keynes N. BegBunch:benchmarking for C bug detection tools[C]. Proceedings of the 2nd International Workshop on Defects in Large Software Systems: Held in conjunction with the ACM SIGSOFT International Symposium on Software Testing and Analysis(ISSTA 2009), Chicago, 2009: 16-20.

[16] Kang M G, McCamant S, and Poosankam P. DTA++:Dynamic taint analysis with targeted control-flow propagation[R]. Proceedings of the 18th Annual Network and Distributed System Security Symposium, San Diego, 2011: 2.[17] Kemerlis V P, Portokalidis G, and Jee K. libdft: practical dynamic data flow tracking for commodity systems[C].Proceedings of the 8th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments(VEE), London, UK, 2012: 121-132.

[18] Min J W, Choi Y H, and Eom J H. Explicit Untainting to Reduce Shadow Memory Usage and Access Frequency in Taint Analysis[M]. Ho Chi Minh City: Springer Berlin Heidelberg, 2013: 175-186.

猜你喜歡
程序模型
一半模型
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
3D打印中的模型分割與打包
創衛暗訪程序有待改進
中國衛生(2015年3期)2015-11-19 02:53:32
FLUKA幾何模型到CAD幾何模型轉換方法初步研究
主站蜘蛛池模板: 亚洲无码精品在线播放| 亚洲男人的天堂久久香蕉| 2048国产精品原创综合在线| 97国内精品久久久久不卡| 综合成人国产| 成年女人a毛片免费视频| 午夜激情福利视频| 亚洲人成网站在线播放2019| 亚洲AV无码乱码在线观看代蜜桃| 好紧好深好大乳无码中文字幕| 不卡无码网| 最新无码专区超级碰碰碰| 1769国产精品视频免费观看| 色欲综合久久中文字幕网| 911亚洲精品| 欧美一级特黄aaaaaa在线看片| 国模视频一区二区| 久久九九热视频| 午夜无码一区二区三区在线app| 免费国产无遮挡又黄又爽| 久久国产乱子伦视频无卡顿| 国产精品亚洲综合久久小说| 亚洲欧美日韩天堂| 99尹人香蕉国产免费天天拍| 久久久国产精品无码专区| 精品国产中文一级毛片在线看| 国产最新无码专区在线| 国内毛片视频| 欧美日韩精品一区二区在线线| 中文国产成人精品久久| 国产乱人乱偷精品视频a人人澡| 久久亚洲国产最新网站| 好久久免费视频高清| 亚洲中文制服丝袜欧美精品| 国产精品自在线天天看片| 亚洲AV无码一区二区三区牲色| 免费高清自慰一区二区三区| 伊人久久大香线蕉影院| 亚洲人成人无码www| 亚洲人成网站在线观看播放不卡| 狠狠做深爱婷婷综合一区| 一本久道久综合久久鬼色| 国产老女人精品免费视频| 日本免费a视频| 国产无码制服丝袜| 国产乱子伦视频三区| 91精品国产一区| 欧美日韩亚洲综合在线观看| 天堂中文在线资源| 国精品91人妻无码一区二区三区| 亚洲成a人片在线观看88| 亚洲国产中文欧美在线人成大黄瓜| 亚洲综合亚洲国产尤物| 中文国产成人精品久久一| 最新亚洲av女人的天堂| 国产精品 欧美激情 在线播放| 成人韩免费网站| 一本色道久久88| 精品国产成人av免费| 日韩一区二区三免费高清| 亚洲永久视频| a在线观看免费| 72种姿势欧美久久久大黄蕉| 亚洲乱伦视频| 日韩不卡高清视频| 婷婷六月天激情| 国产精品天干天干在线观看| 亚洲高清在线播放| 久久久波多野结衣av一区二区| 曰韩免费无码AV一区二区| 国产激情无码一区二区免费| 日本精品视频| 亚洲黄网在线| 国产一区二区三区日韩精品 | 亚洲精品波多野结衣| 婷婷中文在线| 99999久久久久久亚洲| 中文字幕有乳无码| 国产欧美日韩精品综合在线| 欧美一区福利| 拍国产真实乱人偷精品| 国产精品三级av及在线观看|