史大偉,袁天偉
?
一種粗細粒度結合的動態(tài)污點分析方法
史大偉,袁天偉
(江南計算技術研究所,江蘇 無錫 214083)
針對當前污點分析工具不能兼顧速度和精確度的缺陷,研究并實現一種粗細粒度結合的二進制代碼動態(tài)污點分析方法。對比粗粒度污點分析和細粒度污點分析的實現過程,提出兩者結合的新型分析框架。預先在線執(zhí)行粗粒度污點分析以篩選有效指令,之后離線執(zhí)行細粒度污點分析以計算污點信息。根據粒度的差異分別建立粗細粒度污點數據的引入標記方法,制定粗細粒度條件下的數據流和控制流傳播策略,設計離線軌跡記錄結構作為粗細粒度污點分析的傳遞文件。在原型系統(tǒng)上的測試結果表明,該方法通過在線粗粒度模式保證了污點分析信息采集的快速性,同時采用離線細粒度模式以合理的時間消耗提升了污點分析的精確度。
粗粒度;細粒度;動態(tài)污點分析;離線軌跡;污點傳播;二進制
污點分析(taint analysis)是指對非信任來源的數據進行標記,并追蹤其在程序執(zhí)行中的傳播過程,以達到獲取關鍵位置與輸入數據關聯信息的分析方法[1]。隨著網絡化、信息化的不斷推進,來自于網絡的威脅越來越大,并逐漸呈現以下特征:惡意攻擊代碼變種越來越多,攻擊方式隱蔽性越來越高明,攻擊行為組織性專業(yè)性越來越強。網絡安全遭受的威脅日益加劇,防范難度日愈嚴峻。污點分析從網絡惡意攻擊的本質入手,以一種溯源式的方式判斷外部傳遞數據對跳轉地址、返回地址、函數指針的影響,直接檢測網絡惡意攻擊的進行。
動態(tài)污點分析(Dynamic Taint Analysis, DTA)[2]能夠在程序運行過程中,以運行時機器指令流為依據,對目標軟件的非信任數據進行信息流跟蹤,監(jiān)控軟件系統(tǒng)安全狀態(tài)。動態(tài)污點分析是污點分析的主要模式,被廣泛運用于信息安全驗證、惡意代碼分析[3]、隱私泄露分析、協議格式逆向分析[4]等領域。分析時,首先將未獲取安全認證的輸入數據標記為污染源,然后根據程序實時指令和運行時狀態(tài)信息,依據制定的污點流傳播規(guī)則,分析污染源數據在寄存器和內存中的傳播過程,同時在程序敏感字段設置檢測點,當檢測到有污染源數據導入時采取相應的安全決策措施。
當前動態(tài)污點分析技術按分析粒度可以劃分為細粒度(fine-grained)[5]動態(tài)污點分析技術和粗粒度(coarse-grained)[6]動態(tài)污點分析技術。粗粒度污點分析一般用于異常行為檢測,例如對于某一端口的惡意掃描或其他不正常行為;細粒度污點分析則主要用于檢測程序的脆弱性攻擊點。粗粒度污點分析具有分析速度快、占用存儲空間小的優(yōu)點,可用于檢測污點數據有無問題;細粒度污點分析精度高,可解決數據流的回溯問題?,F階段動態(tài)污點分析均采用單一解析模式,都會碰到污點分析不精確、驗證測試代價大或代碼解析效率低、空間需求過大的難題。
針對現有污點分析方法的不足,本文提出一種面向二進制代碼的粗細粒度結合的動態(tài)污點分析方法,利用粗粒度污點分析技術對目標程序進行實時監(jiān)控和預分析,實時記錄其執(zhí)行指令流及相關寄存器和內存信息,同時依據策略分析污點傳播狀態(tài)。當滿足中斷策略時,輸出現有指令流記錄信息至離線細粒度污點分析系統(tǒng),快速高效地分析字節(jié)粒度的污點源關聯性,并執(zhí)行測試驗證或安全修復。
動態(tài)污點分析的主要目的是解決軟件安全問題,而導致軟件安全性問題的主要原因是軟件自身在設計、實現和配置時引入的各種安全漏洞(也稱脆弱性)。安全漏洞是指軟件中違背安全策略并導致安全危害的不足或缺陷,在一般條件下,可信程序在無外界干預的條件下,其運行可認為是可控的。軟件安全漏洞的出現在于程序自身,而其利用則以外部數據為誘因。
動態(tài)污點分析以信息流傳播為主要分析對象,著重跟蹤外部引入數據在運行中的傳播活動,其主要的分析過程包括污點標記、污點傳播、污點檢測。運行時污點狀態(tài)信息是動態(tài)污點分析的基礎和對象,與污點分析的三大模塊密切相關。
定義1運行時污點狀態(tài)(taint status)。在污點標記和污點傳播中,對每個內存(MEM)、寄存器(REG)和標志位(eflags)獲取污點信息,該污點信息的集合統(tǒng)稱為運行時污點狀態(tài)。指令的運行會觸發(fā)的改變,在程序的運行過程中,隨著污點信息的不斷引入和傳播,最終形成狀態(tài)轉換序列:=01…。
動態(tài)污點分析的框架結構如圖1所示。
圖1 動態(tài)污點分析框架結構
污點數據標記、污點數據傳播和敏感點污點檢測為3個平行的污點操作活動。運用HOOK機制獲取指令流信息后,需結合當前運行時污點狀態(tài)和指令信息判斷:
(1)若該位置為敏感位置則進行污點檢測,如果存在污點信息的不當使用則輸出該信息。
(2)若為污點引入則采用污點標記策略,標記外部引入數據,同時更新。
(3)若為污點傳播則依據指令內含的信息流傳播策略指導執(zhí)行并更新。
運行時污點狀態(tài)提供了系統(tǒng)中的污點信息,依據記錄信息的精細劃分,將其區(qū)分為2種不同的粒度:粗粒度污點狀態(tài)和細粒度污點狀態(tài),其蘊含的信息量不同,對應的污點分析目的也有所區(qū)別。對兩者進行比較,結果如表1所示。
表1 粗細粒度污點分析對比
粗粒度污點分析是將所有外部輸入的不可信數據源均標記為污點源,該污點源的標記是采用一種粗放式的標識方法,所有污點源為不區(qū)分的單一模式。而對于每個寄存器、內存地址和標志位,均只有2種狀態(tài):untainted和tainted。
細粒度污點分析需要標定和追蹤每個污點數據單元。由于一個內存單元可能依賴于多個污點數據,因此需要用集合結構描述一個內存單元的污點屬性。由污點屬性可以回溯污點傳播源頭,在分析過程中,一般采用整型變量表示污點標簽,并建立變量索引表。本文采用的細粒度污點分析的污點數據標記和污點個體描述均是以字節(jié)為單位。
粗粒度污點分析污點標記簡單,污點信息存儲空間小,分析速率快,而細粒度污點分析精度高,針對性強。本文結合粗粒度污點分析的高效性與細粒度污點分析的精確性,提出粗細粒度結合污點分析框架,具體設計如圖2所示。
圖2 粗細粒度結合的動態(tài)污點分析框架
污點分析的主要分析模式遵循圖1的框架設計,本文按粗細粒度區(qū)分實現了2種污點分析方式,并以中斷策略作為時空間隔標準,先粗后細、先有無后精準地實現快速高效的污點分析過程。中斷策略可設置為程序運行結束或污點數據誤用敏感點。
在本文構建的粗細粒度污點分析框架中,目標程序運行于客戶操作系統(tǒng)中,以運行時的底層二進制執(zhí)行指令作為分析對象,具有較強的系統(tǒng)無關性,適用于Windows、Linux、Mac OS等多種操作系統(tǒng)。同時虛擬的隔離環(huán)境提供良好的透明性,能分析各種類型的應用程序軟件。該框架能較全面地應用于各類系統(tǒng)與軟件的安全性分析,具有較好的普適性與可擴展性。
程序監(jiān)控的指令流及運行時信息駁雜且繁多,其中包含眾多圖形界面接口調用、系統(tǒng)參數讀取等非污點傳播事務軌跡信息,真正有效的污點傳播指令流較少。本文將繁雜的初運行時信息和指令流用于簡單的粗粒度污點分析,以在線分析形式快速獲取指令污點傳播信息,同時記錄污點傳播的指令流及對應運行時信息,依據中斷策略導出,之后轉入離線狀態(tài)的細粒度污點分析模塊,利用高性能處理機進行分析。
污點標記是污點傳播的首要步驟,其標記方式極大地影響著污點傳播處理與污點信息存儲的效率。污點標記是將外部引入的數據標記為污點數據。本文采取粗細粒度區(qū)分的方式,制定2種污點標記策略:
(1)對于粗粒度污點分析,污點信息的標記值設定為tainted和untainted。污點源頭標記的依據源于對程序運行時系統(tǒng)調用函數的監(jiān)控,主要的監(jiān)控函數包括文件輸入open、read函數(Linux)、文件輸入OpenFile、ReadFile函數(Windows)、網絡輸入send、recv、sendto、recvfrom函數等。利用HOOK技術監(jiān)視系統(tǒng)調用,劫持目標系統(tǒng)函數調用信息,獲取函數參數,解析參數含義,轉向自定義函數調用處理,以獲取污點源頭輸入。
(2)對于粗粒度污點分析,內存標記的狀態(tài)空間僅為{tainted, untainted},同時污點數據的引入和傳播具有局部性的特征:污點數據通常分散存在于內存的某重點區(qū)域;污點數據的引入一般會集中在某塊區(qū)域。故相應的粗粒度污點分析內存標記模型采用精簡式集中管理,將所有涉污數據地址統(tǒng)一存儲,運用段式污點標記方法,標識污點信息流的作用空間,可一定程度上降低內存消耗。
在本文中,內存中涉污數據段采用數據結構
表2 粗粒度污點分析存儲模式
在細粒度污點分析中,以粗粒度分析后的涉污軌跡信息文件為對象,其污點的內存標記以字節(jié)為單位,并維護一個相對應的影子內存(shadow memory)[7]記錄內存地址和污點屬性的映射關系。影子內存為到的映射,記為{},其中,為單點鏈式傳播串中的狀態(tài)快照,包含源污點數據標識表和依賴污點源數據結構體。
本文采用字節(jié)粒度的污點數據標識,標識號應用順序整型的數字標號,標識號的集合構成源污點數據標識表,依賴污點源數據結構體采用有序二元決策圖(reduced ordered Binary Decision Diagram, roBDD)[8]。
動態(tài)污點分析的靈魂是污點信息流[9]的傳播,信息流的傳播是污染源在程序運行中擴散和蔓延的關鍵,污染源數據以信息流為載體,沿著信息流傳播方向傳遞。伴隨著信息流的不斷傳播,污點信息不斷產生、傳遞和使用,可以說,信息流是污點數據傳播的宿主,它是傳播的支配者,要分析污染源的傳播狀態(tài),需從宿主著手,分析信息流傳播的方向性、范圍度、時效性,進而重點跟蹤污染數據的路徑軌跡。本文動態(tài)污點分析的過程即從信息流傳播入手,以執(zhí)行時二進制匯編代碼為分析對象,研究信息流傳遞的時空特性,獲取狀態(tài)信息和傳播過程。
定義2污點信息流傳播(Taint-flow Propagation, TFP)是程序運行時污點狀態(tài)的變化過程,為運行時污點狀態(tài)序列=01…中相鄰鏈節(jié)點ts→ts+1的轉移過程,其前趨狀態(tài)ts為源狀態(tài),后趨狀態(tài)ts+1為目的狀態(tài)。
定義3污點傳播策略(Taint Propagation Strategy, TPS)是一種預設定的規(guī)則,為執(zhí)行指令操作到污點信息傳播形式的映射集合。TPS={data-flow strategy, control-flow strategy}包含數據流[10]分析策略和控制流[11]分析策略。污點傳播策略的完備性和正確性極大程度上決定了污點分析過程的精準度。
數據流分析主要分析由數據移動指令、算術邏輯運算指令引發(fā)的值轉移過程,控制流分析主要分析由指令跳轉引發(fā)的控制轉移過程。數據流分析的主要對象為顯式操作數(標準指令格式中的操作數)及隱式操作數(存在數據流轉移但未在指令中標示的操作數,以標志位為代表),其側重點是通過解析指令,依據污點傳播策略指導污染數據的傳播??刂屏鞣治龃蠖噌槍μD類指令,以分支路徑跳轉為研究內容,由于匯編指令中,條件跳轉多數以標志位為判斷,因此本文控制流分析的主要對象為跳轉指令中的標志位污點信息。
本文將策略定義為模式和行為實體的集合strategy=
表3 動態(tài)污點分析策略
控制流傳播分析旨在獲取當前執(zhí)行路徑的污點約束,粗粒度污點標記信息極簡單,其控制流污點信息只表明污點控制的有無性,分析意義并不明顯,因此,本文重點設計了CTDPS、FTDPS和FTCPS。
本文依據匯編指令執(zhí)行規(guī)則,將粗粒度分析條件下信息流傳播模式(CTDPM)區(qū)分為以下5種:data in, data clear, eflags in, eflags set, NULL。過程分析中的污點傳播模式均屬于該類間集合。data in為存儲單元數據流引入;data clear為存儲單元數據流清除;eflags in為標志位數據流引入;eflags clear為標志位清除;NULL是空模式,為無污點流傳遞。圖3展示了粗粒度信息流傳播模式及具體示例。
圖3 粗粒度數據流傳播模式
粗粒度污點分析下信息流傳播策略的行為實體極為簡略,其實體集合僅含{settainted, setuntainted, NULL}3類操作,分別表示污點屬性設定、污點屬性消除和空操作。粗粒度條件下,污點屬性信息為統(tǒng)一存儲維護的,所以,將依據污點屬性的更新,實時管理內存污點屬性標識鏈表、寄存器污點屬性標識順序表和標志位污點屬性字節(jié)。
細粒度分析條件下數據流傳播模式(FTDPM)區(qū)分為以下6種:data in, data add, data clear, eflags in, eflagsclear, NULL。data in為存儲單元數據流模式;data add為存儲單元數據流添加;data clear為存儲單元數據流清除;eflags in為標志位數據流引入;eflags clear為標志位清除;NULL為空模式。圖4展示了細粒度信息流傳播模式及具體示例。
圖4 細粒度信息流傳播模式
行為實體是針對污點屬性的具體操作,本文在細粒度分析條件下,共定義了7種行為實體。該行為實體適用于數據流分析策略和控制流分析策略。其中,()為當前指令執(zhí)行中引入的源污點數據條目;()為當前污染源集合,公式中行為實體5和行為實體6的主要區(qū)別是實體5是面向data add模式,而實體6是面向data in模式。細粒度污點信息流傳播中污點屬性的行為實體操作及應用條件如表4所示。
表4 細粒度污點信息流傳播行為實體操作
細粒度分析條件下控制流傳播只包含一種模式,即控制流添加模式control add,隨著執(zhí)行路徑的深入,控制流污點信息是一個將當前路徑約束逐步添加到全局路徑約束的不可逆過程,其行為實體如下:
對比可見,文中所提出的細粒度條件下污點傳播策略較粗粒度條件下擴展了模式類別,細化了行為實體。此舉既提升了在線模式下污點分析的效率和規(guī)模,同時應用離線細粒度污點分析,提高了分析的精準度。
執(zhí)行軌跡信息是動態(tài)污點分析的基礎,污點分析過程中污點屬性的獲取和傳播、污點信息的讀取和寫入都依賴于執(zhí)行軌跡信息。在線粗粒度污點分析過程中,執(zhí)行軌跡信息是通過HOOK機制獲取的,包括指令流的提取,內存、寄存器內容讀取,可以根據需要實時獲取運行時狀態(tài)信息,信息量足以滿足粗粒度污點分析的需要。而細粒度污點分析以包含有限信息的離線軌跡文件為唯一依據,離線軌跡文件信息的完備性和精準性在細粒度污點分析中起了決定性作用。
離線軌跡文件的記錄關鍵在于需求信息的全面性,但完整記錄程序運行時的狀態(tài)信息是不現實的,因此,本文從污點分析的實質出發(fā),以污點為中心,將污點相關作為記錄標準,重點執(zhí)行如表5所示的策略。
表5 污點記錄策略
指令運行時狀態(tài)參數指導行為實體具體執(zhí)行,同樣是污點分析的必要信息。因此,本文的離線軌跡信息文件從污點分析需求出發(fā),著重記錄指導污點傳播策略制定的污點屬性標識、設定污點引入操作的源污點標識、定位污點傳播操作的地址信息等,具體結構如表6所示。
表6 離線軌跡文件記錄結構
該結構所記錄的文件內容都是指令執(zhí)行前的狀態(tài)參數,離線分析系統(tǒng)掃描一行軌跡信息后,提取其源污點標識,依據標識有無采用污點標記策略或污點傳播策略。獲取指令助記符、操作數和污點屬性,可確定完整的污點傳播策略。提取內容和獲取信息的對應關系如表7所示。
表7 離線軌跡文件信息提取
污點數據的超權限使用是污點分析檢查的重點,本文在粗粒度污點分析模塊和細粒度污點分析模塊中均設置了敏感點檢測,以制定的策略檢查污點數據的異常使用。針對當前軟件安全的主要威脅點,本文主要對污點數據作為跳轉地址、污點數據作為執(zhí)行代碼和污點數據的受控寫入等異常以為敏感點。著重檢測JMP類、MOV類、CALL、RET指令的污點信息。
本文實現的敏感點檢測模式包括:粗粒度敏感點檢測(coarse-grained sensitive point detection),細粒度敏感點檢測(fine-grained sensitive point detection),人工檢測(manual- control detection),3種模式均為可選模式,功能分別為:(1)粗粒度敏感點檢測:監(jiān)控程序運行狀態(tài)中的異常,防范惡意攻擊。(2)細粒度敏感點檢測:獲取敏感位置污點信息,用于脆弱點驗證。(3)人工檢測:獲取運行時污點狀態(tài)信息。
本文基于QEMU虛擬機[12]開發(fā)實現了粗細粒度結合動態(tài)污點分析原型系統(tǒng)。利用虛擬化技術透明地監(jiān)視目標程序的運行狀態(tài),通過HOOK機制監(jiān)控執(zhí)行指令、參數及存儲狀態(tài)信息等。基本軟/硬件運行環(huán)境如表8所示。
表8 實驗基本軟/硬件環(huán)境
原型系統(tǒng)采用前述的框架設計,使用自編譯程序test.exe、windows系統(tǒng)自帶記事本程序和安裝第三方軟件Adobe Reader作為測試實例。
在粗粒度污點分析中,將外部引入數據標記為污點源,包括test.exe的輸入字符、記事本文件test.txt以及PDF文件test.pdf。使用CTDPS與CTCPS指導污點傳播過程,并維護一個共用的污點記錄結構,運行過程中依文件記錄策略記錄離線軌跡文件,具體實例如下:
<7c93017b: IsSource; ADD EAX, [EBX];
REG@EAX[0x00250680]$4T MEM@0x0012fa78 [0x0012fb20] $4T FLAG@EFLAGS[0xffffffa0]$4T>
<7c9301b4: JNZ 0x7c930719; FLAG@EFLAGS[0xfffffcd1] $4T>
<7c872993:CALL 0x7c93069c; REG@0x7c93069c [8ac38ec2]$4N>
監(jiān)控程序主進程Test.exe、Notepad.exe、AcroRd32.exe,獲取并記錄其運行指令,提取污點相關指令,同時記錄粗粒度污點分析的耗時。表9展示了離線軌跡文件采集過程的統(tǒng)計信息。從實驗結果可以看出,隨著監(jiān)控程序的增大和污點數據源的擴大,監(jiān)控指令數和污點相關指令數均會大幅增加,粗粒度污點分析的耗時也會增加。分析觀察數據,發(fā)現Adobe Reader 7.0的污點相關指令數占進程相關指令數的比例較大,而其他兩者均相對較小。原因在于,test.pdf相對于其他兩個輸入污點文件,其包含了許多閱讀器所需的參數,這些參數和用戶寫入的PDF文件內容一同被標記為污點數據,同時在文件打開閱讀的過程中,被大量使用,故導致污點相關指令數比例的大幅增加。如何篩選污點引入數據,減少污點相關指令數將是筆者下一步工作需要解決的問題。
表9 離線軌跡采集的實驗數據
輸出離線軌跡文件至離線分析機,通過細粒度污點分析模塊進一步進行細粒度污點分析,以FTDPS與FTCPS為指導策略,依次序讀取指令流,獲取指令參數及存儲狀態(tài)信息,計算并更新內存、寄存器、標志位的污點狀態(tài),并將其存儲在相應影子內存中。在離線分析過程中,可設置停止位、暫停污點分析、查詢污點狀態(tài)、在離線文件 27 658行查詢寄存器EAX、內存地址0x00250680和符號位ZF的污點信息值,結果如下:
line27658EAX:tainted{1,2,3,4,7,8}
line27658 0x00250680:untainted
line27658ZF:tainted{5,6,7,8}
對比粗粒度污點分析污點記錄和細粒度污點分析污點查詢信息,可以看出污點狀態(tài)基本一致,但其中也存在個別位置污點屬性不統(tǒng)一的情況,主要原因是兩者的污點傳播策略不一致,粗粒度污點分析以快速方便為目標,相對而言分析的精確度不高,例如有些污點清除策略未制定全面。細粒度分析的策略則相對全面,因此,在具體分析過程中會有些許區(qū)別。
在對離線軌跡文件進行細粒度污點分析過程中,本文在表10中記錄了細粒度污點分析模塊的運行性能。
表10 細粒度污點的分析性能
可以看出,隨著應用程序規(guī)模的擴大,執(zhí)行指令數增加,污點分析的耗時也隨之增大。細粒度污點分析的主要時間消耗在于:(1)指令條目解析;(2)污點存儲模塊讀寫;(3)污點信息集合運算。前兩條的耗時與離線軌跡文件中指令數成正比,集合運算耗時與污點源大小關聯,所以,細粒度污點分析的耗時與目標軟件大小與污點源規(guī)模正相關。同時對比該表數據與表9可見細粒度污點分析的耗時和粗粒度污點分析差距不大,在只分析污點相關指令的情況下時間還能進一步縮短,驗證了粗細粒度結合的動態(tài)污點分析方法具有較高的準確性和快速性。
本文提出一種粗細粒度結合的二進制代碼動態(tài)污點分析方法,以動態(tài)污點分析為基礎,重點設計了先粗粒度后細粒度分析的新型框架結構,同時結合分析特性與需求,分別制定了粗細粒度條件下的信息流分析策略,并通過一種松耦合的方式,利用離線軌跡文件來傳遞分析信息。通過對原型系統(tǒng)的測試,驗證了該方法兼有粗粒度和細粒度污點分析的優(yōu)點,可實現高效、快捷、精確的分析。下一步將研究污點信息的精準化定位和污點傳播路徑的回溯,提高對大型程序的分析效能。
[1] Lam M S, Martin M C, Livshits V B, et al. Securing Web Applications with Static and Dynamic Information Flow Tracking[C]//Proc. of 2008 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-based Program Manipulation. New York, USA: ACM Press, 2008: 3-12.
[2] Newsome J, Song D. Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software[C]//Proc. of the 12th Annual Network and Distributed System Security Symposium. San Diego, USA: 2005.
[3] Sharif M, Lanzi A, Giffin J, et al. Automatic Reverse En- gineering of Malware Emulators[C]//Proc. of 2009 IEEE Symposium on Security and Privacy. Oakland, USA: IEEE Press, 2009: 94-109.
[4] Comparetti P M, Wondracek G, Kruegel C, et al. Prospex: Protocol Speci?cation Extraction[C]//Proc. of the 30th IEEE Symposium on Security and Privacy. Washington D. C., USA: IEEE Computer Society, 2009: 110-125.
[5] Yin Heng, Song D, Egele M, et al. Panorama: Capturing System-wide Information Flow for Malware Detection and Analysis[C]//Proc. of ACM Conference on Computer and Communication Security. Alexandria, USA: ACM Press, 2007: 116-127.
[6] Kohli P. Coarse-grained Dynamic Taint Analysis for Defeating Control and Non-control Data[EB/OL]. (2009-06-24). http:// arxiv.org/abs/0906.4481.
[7] Nethercote N, Seward J. How to Shadow Every Byte of Memory Used by a Program[C]//Proc. of the 3rd International ACM SIGPLAN/SIGOPS Conference on Virtual Execution
Environments. San Diego, USA: ACM Press, 2007: 65-74.
[8] Bryant R E. Symbolic Boolean Manipulation with Ordered Binary-decision Diagrams[J]. ACM Computing Surveys, 1992, 24(3): 293-318.
[9] 黃 強, 曾慶凱. 基于信息流策略的污點傳播分析及動態(tài)驗證[J]. 軟件學報, 2011, 22(9): 2036-2048.
[10]Denning D E. A Lattice Model of Secure Information Flow[J]. Communications of the ACM, 1976, 19(5): 236-243.
[11]Kang M G, McCamant S, Poosankam P. DTA++: Dynamic Taint Analysis with Targeted Control-Fow Pro- pagation[C]// Proc. of the 18th Annual Network and Distributed System Security Symposium. San Diego, USA: [s. n.], 2011.
[12]Bellard F. Qemu: A Fast and Portable Dynamic Translator[C]// Proc. of USENIX’05. Berkeley, USA: [s. n.], 2005: 41-46.
編輯 金胡考
A Dynamic Taint Analysis Method Combined with Coarse-grained and Fine-grained
SHI Da-wei, YUAN Tian-wei
(Jiangnan Institute of Computing Technology, Wuxi 214083, China)
Combination of coarse-grained and fine-grained Dynamic Taint Analysis(DTA) is developed to take speed and accuracy both into account. By comparing the realization process of coarse-grained DTA and fine-grained DTA, this paper proposes a new analysis framework. It executes online coarse-grained DTA to filter useful instruction, uses offline fine-grained DTA to calculate taint information. Coarse-grained and fine-grained taint mark methods are established respectively by comparing the difference of taint analysis. Data-flow property strategy and control-flow property strategy are developed under the condition of coarse-grained DTA and fine-grained DTA. As a transfer file, offline track record structure is designed to provide necessary information for fine-grained analysis. A prototype system is implemented and the experimental result proves that this method can ensure the rapid collection of taint information through online coarse-grained mode, and use offline fine-grained mode to improve the accuracy with accepted time consumption.
coarse-grained; fine-grained; Dynamic Taint Analysis(DTA); offline track; taint propagation; binary
國家“863”計劃基金資助項目(2012AA7111043)。
史大偉(1989-),男,碩士研究生,主研方向:軟件安全;袁天偉,高級工程師。
2013-10-17
2013-11-22 E-mail:sdave@126.com
1000-3428(2014)03-0012-06
A
TP309.2
10.3969/j.issn.1000-3428.2014.03.003