• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于S2E的Use-After-Free漏洞檢測方案

      2016-05-09 07:07:42王軼駿
      計算機應(yīng)用與軟件 2016年4期
      關(guān)鍵詞:指針插件漏洞

      馮 震 聶 森 王軼駿 薛 質(zhì)

      基于S2E的Use-After-Free漏洞檢測方案

      馮 震 聶 森 王軼駿 薛 質(zhì)

      (上海交通大學(xué)信息安全與工程學(xué)院 上海 200240)

      Use-After-Free漏洞是由程序試圖操作懸垂指針引起的。該類型漏洞近年來在針對瀏覽器客戶端的攻擊中變得愈發(fā)流行。提出一種針對Use-After-Free漏洞的檢測算法,并據(jù)此實現(xiàn)檢測方案UAFChecker。UAFChecker基于開源的多路徑軟件分析平臺S2E,它通過掛鉤關(guān)鍵的堆內(nèi)存操作函數(shù)監(jiān)控指針的生成,使用反匯編引擎BeaEngine在匯編層上跟蹤指針的傳播,通過收集和分析指針信息來檢測漏洞。實驗結(jié)果表明,配合Fuzzing技術(shù)UAFChecker成功定位和分析出IE8瀏覽器中存在的多個未被公開的Use-After-Free漏洞。

      Use-after-free漏洞 漏洞檢測 懸垂指針 污點傳播 符號執(zhí)行

      0 引 言

      近幾年來,各種應(yīng)用軟件和操作系統(tǒng)組件曝出UAF(Use-After-Free)漏洞的報道頻頻見諸報端。CVE(Common Vulnerabilities and Exposures)數(shù)據(jù)庫所記錄的UAF漏洞的條目,自2008年開始幾乎以每年翻一番的速度增長。而在各項黑客大賽中,各國安全團隊也經(jīng)常利用UAF漏洞攻破包括IE、Chrome和Safari在內(nèi)的主流瀏覽器客戶端。UAF漏洞已經(jīng)引起眾多安全人員和黑客們的關(guān)注。本文以S2E[1]為基礎(chǔ)設(shè)計并實現(xiàn)針對二進制程序UAF漏洞的檢測方案,介紹該方案的檢測算法、基本架構(gòu)和設(shè)計細節(jié),并對其進行了測試和評估。

      1 S2E平臺介紹

      S2E是選擇性符號執(zhí)行的英文縮寫,是面向二進制程序的多路徑符號執(zhí)行的軟件安全測試平臺[2]。S2E基于QEMU、KLEE和LLVM。其中,QEMU作為虛擬機運行目標(biāo)程序,KLEE用于符號執(zhí)行,而LLVM進行動態(tài)二進制翻譯。S2E能夠只對用戶關(guān)心的目標(biāo)代碼實施符號執(zhí)行,而對系統(tǒng)內(nèi)核代碼實施具體執(zhí)行,從而有效解決了路徑爆炸問題[3]。

      S2E提供了擴展性良好的插件系統(tǒng),用戶可以按需編寫自己的插件。S2E自帶五類插件供用戶使用,分別是系統(tǒng)事件監(jiān)控插件、執(zhí)行跟蹤插件、選擇性插件、分析插件和混合插件。本文的檢測方案就是以S2E插件的形式實現(xiàn)的。

      2 問題描述

      UAF漏洞涉及兩個事件:生成懸垂指針和使用懸垂指針。兩個事件在時間點上一般是分開的。

      2.1 漏洞解釋

      當(dāng)所指向的對象被釋放或者回收,但是對該指針沒有作任何修改,以至于該指針仍舊指向已經(jīng)回收的內(nèi)存地址,此情況下該指針便稱為懸垂指針(也叫迷途指針)。圖1展示了懸垂指針的生命周期。在t創(chuàng)建對象1被釋放,從而生成了懸垂指針。在t銷毀之前,如果程序又使用了懸垂指針,就會導(dǎo)致UAF漏洞[4]。此時,懸垂指針指向的內(nèi)存,或者未被分配,或者已經(jīng)另作他圖,并非程序原本期望的行為。攻擊者可以利用UAF漏洞讀取私密信息,重寫敏感信息,甚至執(zhí)行任意代碼[5]。

      圖1 懸垂指針生命周期

      2.2 技術(shù)現(xiàn)狀

      分析程序可以分為靜態(tài)和動態(tài)兩類。靜態(tài)分析程序能確保完備性但誤報較高。動態(tài)分析程序具體使用的方法則較為多樣,大致分為三類:影子內(nèi)存,即將程序所使用的內(nèi)存映射到可控內(nèi)存;動態(tài)插樁,即在指令之間插入分析代碼;Debug Allocators,即通過HOOK分配函數(shù),強制分配冗余數(shù)據(jù)。動態(tài)分析的局限在于代碼覆蓋率會比較低。

      動態(tài)插樁是目前最為流行的動態(tài)分析技術(shù)。在應(yīng)用該技術(shù)檢測UAF漏洞時,具體的檢測算法可分為空間算法和時間算法??臻g算法指的是處理懸垂指針指向的堆內(nèi)存(例如將其設(shè)置為無訪問權(quán)限或添加隔離區(qū)),從而確保目標(biāo)程序在試圖訪問該內(nèi)存時出錯。這種算法有兩個局限:一是只能在直接訪問堆內(nèi)存即發(fā)生UAF漏洞時觸發(fā);二是無法檢測堆內(nèi)存被重分配的情況。時間算法基于一個直覺,即長期存在的懸垂指針是不安全的。時間算法首先設(shè)置生命閾值,然后記錄和跟蹤所有懸垂指針的生命周期,并在該周期超過閾值時發(fā)出預(yù)警。時間算法能在早期檢測出懸垂指針,其代價是較大的開銷和一定的誤報率。

      2.3 檢測原理

      我們的檢測方法同樣采用了動態(tài)分析的插樁技術(shù)。為了提高代碼覆蓋率,首先我們選擇S2E作為開發(fā)平臺,發(fā)揮其強大的多路徑符號執(zhí)行能力;而在輸入復(fù)雜的情況下,通過和Fuzzing技術(shù)配合縮小需要符號化的數(shù)據(jù)。

      然后,我們重新設(shè)計了UAF檢測算法,基本流程是:HOOK堆管理API,以監(jiān)控堆內(nèi)存的分配和釋放;跟蹤指針的傳播,維護指針和堆內(nèi)存的映射關(guān)系;在堆內(nèi)存被釋放時把與其對應(yīng)的所有指針清零置空。下面用一段示例代碼予以說明:

      0A*a=newA();moveax,dwordptr[b]1B*b=newB();movecx,dwordptr[eax+4]2b->pa=a;moveax,dwordptr[ecx]3deletea;movedx,dwordptr[eax+4]4a=NULL;calledx5b->pa->f1();

      首先要說明的是右側(cè)的匯編語句和左側(cè)的C++語句并非一一對應(yīng),而且語句之間可能省略了部分代碼。如果a所使用的堆內(nèi)存被再分配,而且恰好也是一個包含虛函數(shù)的類對象,那么空間算法可能無法檢測出該UAF漏洞,結(jié)果是代碼調(diào)用了非預(yù)期對象的方法。如果再分配的目標(biāo)只是普通的對象,那么空間算法可能在匯編語句2、3、4報錯,這取決于再分配后堆內(nèi)存的內(nèi)容。如果堆內(nèi)存沒有再分配,那么空間算法可能在匯編語句3和4報錯。

      而在任何情況下,我們的檢測算法都能確保程序在匯編語句2報錯。這是因為指針清零后,無論是讀寫成員屬性,還是執(zhí)行成員方法,任何試圖對該指針的訪問都會被拒絕。

      檢測算法的關(guān)鍵在于清零置空和釋放堆塊對應(yīng)的所有指針,因此需要可靠的污點跟蹤功能,以獲取指向釋放堆塊的所有指針。該算法在一定程度上提前了UAF漏洞的發(fā)現(xiàn)時機,提高了漏洞的發(fā)現(xiàn)概率,同時完全解決了堆內(nèi)存再分配帶來的問題。而在具體實現(xiàn)檢測方案時,我們還結(jié)合了空間算法,以克服可能存在的指針遺漏問題。

      3 檢測方案

      以S2E平臺為基礎(chǔ)我們設(shè)計和實現(xiàn)了針對目標(biāo)二進制程序中UAF漏洞的檢測方案,我們將其命名為UAFChecker。

      3.1 架構(gòu)概述

      UAFChecker在功能邏輯上可以分為反匯編模塊、堆內(nèi)存監(jiān)控模塊、指針傳播跟蹤模塊和信息分析模塊四部分,基本架構(gòu)如圖2所示。

      圖2 UAFChecker架構(gòu)圖

      反匯編模塊負責(zé)獲取指令寄存器EIP對應(yīng)指令的匯編代碼;堆內(nèi)存監(jiān)控模塊通過掛鉤堆內(nèi)存操作函數(shù)監(jiān)控堆的分配和釋放,也就是正常指針(堆分配)和懸垂指針(堆釋放)的生成;指針傳播跟蹤模塊是基于反匯編模塊得到的匯編代碼,在匯編層上實現(xiàn)的一套污點跟蹤系統(tǒng)[6],指針是污點源;信息分析模塊收集和分析與指針相關(guān)的信息,并把分析結(jié)果寫入到日志文件中。

      3.2 模塊分析

      3.2.1 反匯編模塊

      我們把開源的反匯編引擎BeaEngine[7]編譯到S2E中。利用EIP地址獲得對應(yīng)匯編指令。這引入了非??捎^的開銷,幾乎導(dǎo)致QEMU一直處于假死狀態(tài)。為此,我們設(shè)置數(shù)目為4K的反匯編指令Cache,用于緩存至多4K條匯編指令,顯著提高了反匯編效率。反匯編模塊會分析匯編指令的操作符和操作數(shù),是其他三個功能模塊的基礎(chǔ)。

      3.2.2 堆內(nèi)存監(jiān)控模塊

      UAFChecker使用FunctionMonitor(S2E自帶插件)掛鉤了RtlAllocateHeap和RtlFreeHeap兩個Windows API。幾乎所有的堆分配函數(shù)最終都會使用這對API,例如malloc/free和new/delete,因此掛鉤RtlAllocateHeap/RtlFreeHeap后也能監(jiān)控到這些函數(shù)的調(diào)用。另外,IE瀏覽器在處理BSTR字符串時使用和維護了一個空閑堆塊的緩存,這和Windows操作系統(tǒng)的快表結(jié)構(gòu)很相似[8]。與此相關(guān)的API是AllocCachedMem和FreeCachedMem,具體細節(jié)會在第4節(jié)分析說明。

      3.2.3 信息分析模塊

      信息分析模塊共維護了三個隊列:分配隊列、指針隊列和反向隊列。其中,分配隊列記錄了所有分配的堆內(nèi)存塊;指針隊列記錄了所有指針;而反向隊列記錄了指向某一堆內(nèi)存的所有指針,用于查詢和清零懸垂指針。

      在堆塊被釋放時執(zhí)行下述操作:將反向隊列中的指向該堆內(nèi)存的所有指針清零置空,并將堆內(nèi)存數(shù)據(jù)區(qū)填充0xcc(中斷int 3的機器碼)。一方面,如果程序試圖訪問某懸垂指針,因為其指向的地址是0,所以會發(fā)生非法訪問;另一方面,如果程序執(zhí)行了call some_address而some_address位于釋放堆塊中,因為其數(shù)據(jù)一定是0xcccccccc,故程序會崩潰。

      3.2.4 指針傳播模塊

      該模塊是UAFChecker的核心部分,檢測算法高度依賴該模塊的準(zhǔn)確性和完備性。指針傳播模塊在反匯編模塊提供的匯編層上跟蹤指針的傳播,并向信息分析模塊提供輸入。

      我們首先定義了污點(指針)結(jié)構(gòu)體,包括start、offset和ext等成員。出于性能的考慮,幾乎所有的字節(jié)級的污點跟蹤程序都只能判斷某個字節(jié)是否是污點,即把所有的污點數(shù)據(jù)等同處理[9]。而我們使用start和offset,能夠提供污點源的精確位置:start表示堆內(nèi)存的起始地址,offset表示相對偏移。

      然后定義指針傳播的若干規(guī)則:MOVE、ADD、XCHG、LEA、CLS和NOP。X86指令集中的所有指令都會應(yīng)用某種規(guī)則或組合,并以模擬執(zhí)行的方式傳播污點[10]。表1列出了部分指令和規(guī)則的對應(yīng)關(guān)系。

      表1 x86指令、抽象和規(guī)則

      和污點傳播一樣,指針傳播也要解決線程切換和CPU狀態(tài)切換導(dǎo)致通用寄存器的內(nèi)容不一致的問題[11]。而與之不同,且更為關(guān)鍵的問題是如何識別堆管理結(jié)構(gòu)。

      測試的目標(biāo)軟件是Windows XP上的IE 8瀏覽器,因此我們要關(guān)注FreeList、LookasideList以及IE自身使用的堆管理結(jié)構(gòu)。這些數(shù)據(jù)結(jié)構(gòu)會記錄空閑堆塊信息,相關(guān)指針無須跟蹤,更不能清零,否則會引發(fā)異常。

      FreeList是雙向鏈表,所以能夠根據(jù)釋放堆塊得到前趨結(jié)點和后繼結(jié)點,進而計算出記錄指針的位置。LookasideList是單向鏈表,因此無法直接得到前驅(qū)結(jié)點,但是可以利用快表中至多存在一個結(jié)點指向釋放堆塊這一事實確保排除相應(yīng)指針。而在處理IE瀏覽器內(nèi)部的緩存數(shù)據(jù)結(jié)構(gòu)時,我們采用了攻擊者編寫EXP時才會使用的技巧,即通過預(yù)分配清空所有緩存。最終我們設(shè)計了如下算法:

      算法1 堆管理結(jié)構(gòu)處理算法。

      輸入:釋放堆塊

      輸出:記錄釋放堆塊的指針被刪除

      1) 調(diào)用flushCache方法,強制使用RtlAllocateHeap和RtlFreeHeap;

      2) 獲取釋放堆塊對應(yīng)的反向隊列中的末尾結(jié)點;

      3) 將末尾結(jié)點從指針隊列和反向隊列中刪除;

      4) 讀取釋放堆塊的前兩個DWORD,記為dw1和dw2;

      5) 分別比較dw1+4和dw2的內(nèi)容與釋放堆塊的地址,如果相等就從指針隊列和反向隊列中刪除。

      步驟1)中的flushCache方法通過分配一系列的堆塊,確保IE分配和釋放堆內(nèi)存時使用HOOK的API。步驟3)刪除的結(jié)點可能存在于FreeList或LookasideList中,該步驟能夠確??毂碇械挠涗浿羔槻槐恢羔槀鞑ツK跟蹤。而步驟4)和5)用來檢測釋放堆塊被添加至FreeList的情況,能夠刪除可能記錄在空表中的指針。

      4 方案評估

      在正式測試IE瀏覽器之前,我們首先進行了基準(zhǔn)測試,用來檢測UAFChecker的基礎(chǔ)性能。

      4.1 基準(zhǔn)測試

      基準(zhǔn)測試程序集中的樣本由SAVG(Systems Analysis and Verification Group)和LAV(一款開源的靜態(tài)程序錯誤檢測工具)提供[12]。在輸入比較簡單的情況下,UAFChecker能夠充分發(fā)揮S2E多路徑符號執(zhí)行的優(yōu)勢,將輸入符號化并約束求解關(guān)鍵路徑,檢測出可能存在的UAF漏洞。測試結(jié)果如表2所示。

      表2 基準(zhǔn)測試結(jié)果匯總

      表中DF和ML分別表示Double Free和Memory Leak。上述測試結(jié)果和基準(zhǔn)測試集的說明完全一致,無誤報和漏報情況,說明UAFChecker在輸入較簡單的情況下表現(xiàn)良好。更重要的是,這說明指針傳播模塊功能正常,確實能夠準(zhǔn)確地跟蹤和監(jiān)控指針的生成和傳播。

      4.2 測試IE瀏覽器

      實驗環(huán)境為Windows XP SP3全補丁,IE8.0.6001.18702,VMWare Workstation 8.0.2 build-591240虛擬機環(huán)境。

      瀏覽器的輸入是HTML文件,文本結(jié)構(gòu)復(fù)雜,不宜將其完全符號化直接測試。因此我們首先使用Fuzzing工具生成HTML樣本,然后再使用UAFChecker進行測試。使用這種方案我們得到了大量Crash文件,目前已經(jīng)分析和確認了3處UAF漏洞,如表3所示。

      表3 UAF漏洞信息匯總

      Crash文件名是Fuzzing工具自動生成的。上述漏洞還沒有被公開,都是IE8的0-day。有趣的是,這三個漏洞都和節(jié)點操作有關(guān),有相同的“漏洞框架”:Javascript代碼塊首先修改DOM樹結(jié)構(gòu),如appendChild和applyElement。這些語句執(zhí)行時修改了DOM樹結(jié)構(gòu),但是新創(chuàng)建的DOM元素或被修改的元素并未馬上得到渲染。接著,后續(xù)代碼把這些元素的屬性修改為已渲染,但瀏覽器不知道元素的釋放情況,也不會更新節(jié)點關(guān)系,從而導(dǎo)致Use-After-Free。我們已經(jīng)分別為上述漏洞編寫了EXP,成功地彈出計算器,即能夠?qū)崿F(xiàn)任意代碼執(zhí)行。

      值得一提的是,微軟6月發(fā)布的補丁引入了Isolated Heap,7月發(fā)布的補丁又引入了Deferred Free,這兩個補丁瞬間提高了UAF漏洞的利用門檻。Net Market Share今年5月的調(diào)查顯示,雖然微軟早已放棄了對XP系統(tǒng)的支持,但XP的市占率仍高達29.23%。絕大部分XP用戶不會下載和安裝這兩個補丁,所以上述三個漏洞仍然具有很大的威脅。而且,三個漏洞自身沒有被補掉,只是目前比較流行的漏洞利用技術(shù)難以克服新的安全機制而已[13]。

      4.3 相關(guān)工作

      SEA[14]是Symbolic Exploit Assistant的縮寫,采用Python編寫,目標(biāo)是輔助發(fā)現(xiàn)二進制程序中的各種內(nèi)存錯誤。SEA為面向二進制程序的分析工具提供了設(shè)計出色的架構(gòu)模型。目前SEA只支持分析目標(biāo)程序的REIL碼,而且要求輸入文件記錄了目標(biāo)程序所有的堆內(nèi)存操作。VSA[15]是一款針對UAF漏洞的靜態(tài)分析工具,因此具有靜態(tài)分析的優(yōu)勢和缺陷。Undangle提出和實現(xiàn)了時間算法,并成功地發(fā)現(xiàn)了Firefox 3中的6處危險指針,其分析效率和分析效果與參數(shù)設(shè)置密切相關(guān)。UAFChecker的優(yōu)勢一是利用S2E的多路徑符號執(zhí)行能力提高了代碼覆蓋率,二是檢測算法解決了堆內(nèi)存再分配的問題,并提高了UAF漏洞的發(fā)現(xiàn)概率。不過,UAFChecker對指針傳播模塊的依賴度較高,而后者的準(zhǔn)確性和完備性難以保證,由于采用了S2E,UAFChecker的開銷也比較大。

      5 結(jié) 語

      本文基于S2E平臺設(shè)計和實現(xiàn)了針對UAF漏洞的檢測方案UAFChecker。UAFChecker采用Cache和Hash算法極大地減少了使用BeaEngine反匯編帶來的開銷,然后在匯編指令層上實現(xiàn)了真正的字節(jié)級的指針傳播系統(tǒng)。漏洞檢測算法在一定程度上提前了UAF漏洞的發(fā)現(xiàn)時機,提高了漏洞的發(fā)現(xiàn)概率,并完全解決了堆內(nèi)存再分配的問題。配合Fuzzing工具,UAFChecker成功地在IE8中發(fā)現(xiàn)了多個未被公開的UAF漏洞。盡管UAFChecker已經(jīng)能夠基本滿足我們的需求,但是它在效率和完備性方面還存在諸多不足。在未來,我們將主要在如下三個方面開展研究工作:

      1) 在S2E的中間語言層上重新實現(xiàn)指針傳播模塊,從而能夠完全規(guī)避反匯編引入的開銷。

      2) 擴展和優(yōu)化檢測算法,一種可能的途徑是結(jié)合時間算法進一步提高UAF漏洞的發(fā)現(xiàn)概率。

      3) 優(yōu)化和改進堆管理結(jié)構(gòu)處理算法。

      [1] Vitaly Chipounov,Volodymyr Kuznetsov,George Candea. S2E: A Platform for In-Vivo Muti-Path Analysis of Software System[C]//New York: Newsletter ACM SIGPLAN Notices - ASPLOS ’12,2012,47(4):265-278.

      [2] Edward J Schwartz,Thanassis Avgerinos,David Brumley. All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask)[C]//Washington DC: Proceedings of the 2010 IEEE Symposium on Security and Pricacy,2010:317-331.

      [3] 王學(xué),李學(xué)新,周智鵬,等.S2E測試平臺及并行性性能分析[J].信息網(wǎng)絡(luò)安全,2012(7):16-19.

      [4] Victor van der Veen,Nitish dutt-Sharma,Lorenzo Cavallaro,et al. Memory errors: the past,the present and the future[C]//Berlin,Heidelberg: Proceddings of the 15th international conference on Research in Attacks,Intrusions,and Defenses,2012:86-106.

      [5] Juan Caballero,Gustavo Grieco,Mark Marron,et al. Undangling: Early Detection of Dangling Pointers in Use-After-Free and Double-Free Vulnerabilities[C]//New York: Proceedings of the 2012 International Symposium on Software Testing and Analysis,2012:133-143.

      [6] Eric Bosman,Asia Slowinska,Herbert Bos. Minemu: the world’s fastest taint tracker[C]//Berlin,Heidelberg: Proceedings of the 14th international conference on Recent Advances in Intrusion Detection,2011:1-20.

      [7] BeatriX,Igor Gutnik,JCie. BeaEngine: disassembler library x86 x86-x64[EB/OL]. (2010-1-6)[2014-1-3]http://beaengine.org.

      [8] Alexander Sotirov. Heap Feng Shui in JavaScript[C]//Las Vegas: BlackHat USA,2007.

      [9] Vasileios P Kemerlis,Georigios Portokalidis,Kangkook Jee,et al. libdft: Pratical Dydnamic Data Flow Tracking for Commodity Systems[C]//London: Preceedings of the 8th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environment,2012:121-132.

      [10] James Clause,Wanchun Li,Alessandro Orso. Dytan: a generic dynamic taint analysis framework[C]//New York: Proceedings of the 2007 international symposium on Software testing and analysis,2007:196-206.

      [11] David (Yu) Zhu,Jaeyeon Jung,Dawn Song,et al. TaintEraser: protecting sensitice data leaks using application-level taint tracking[C]//New York: Newsletter ACM SIGOPS Operating Systems Review,2011:142-154.

      [12] Milena,Vujosevic Janicic,Victor Kuncak. Development and evaluation of LAV: an SMT-based error finding platform[C]//Berlin,Heidelberg: Proceedings of the 4th intenational conference on Verified Software: theories,tools,experiments,2012:98-113.

      [13] 豬兒蟲小次郎(新浪微博網(wǎng)名).微軟最近干了些啥[EB/OL].[2014-7-16]http://t.cn/RP7Wimy.

      [14] Neuromancer. SEA: Symbolic Execution Assistant[EB/OL]. (2013-6-20)[2013-9-27]https://github.com/neuromancer/SEA.

      [15] Feist J,Mounier L,Potet M L. Statically Detecting Use After Free on Binary Code[J].Journal of Computer Virology and Hacking Techniques,2014,10(3):1-7.

      USE-AFTER-FREE VULNERABILITIES DETECTION SCHEME BASED ON S2E

      Feng Zhen Nie Sen Wang Yijun Xue Zhi

      (SchoolofInformationSecurityEngineering,ShanghaiJiaoTongUniversity,Shanghai200240,China)

      Use-After-Free vulnerabilities are caused by the attempt of a program to operate on a dangling pointer. This type of vulnerability is growing rapidly in popularity,especially for exploiting web browsers. In this paper we propose a new algorithm to detect Use-After-Free vulnerabilities and implement the detection scheme UAFChecker accordingly. UAFChecker is based on S2E,an open source platform for in-vivo multi-path analysis of software systems. It monitors the creation of pointers by hooking key heap-operating functions and tracks the propagation of all pointers by using BeaEngine on assembly code level. Then it detects vulnerabilities by collection and analysis of information of pointers. Experimental result indicates that by collaborating with Fuzzing technology,UAFChecker succeeds in locating and analysing multiple 0-day Use-After-Free vulnerabilities in IE8 browser.

      Use-after-free vulnerability Vulnerability detection Dangling pointer Taint propagation Symbolic execution

      2014-08-26。國家自然科學(xué)基金項目(61332010);高級XXX技術(shù)研究(秘密級)(CNITSEC-KY-2013-009/2)。馮震,碩士生,主研領(lǐng)域:信息安全。聶森,博士生。王軼駿,講師。薛質(zhì),教授。

      TP3

      A

      10.3969/j.issn.1000-386x.2016.04.064

      猜你喜歡
      指針插件漏洞
      漏洞
      自編插件完善App Inventor與樂高機器人通信
      電子制作(2019年22期)2020-01-14 03:16:34
      偷指針的人
      娃娃畫報(2019年5期)2019-06-17 16:58:10
      為什么表的指針都按照順時針方向轉(zhuǎn)動
      三明:“兩票制”堵住加價漏洞
      漏洞在哪兒
      兒童時代(2016年6期)2016-09-14 04:54:43
      MapWindowGIS插件機制及應(yīng)用
      高鐵急救應(yīng)補齊三漏洞
      基于改進Hough變換和BP網(wǎng)絡(luò)的指針儀表識別
      電測與儀表(2015年5期)2015-04-09 11:30:42
      基于Revit MEP的插件制作探討
      东乌珠穆沁旗| 改则县| 刚察县| 开化县| 天长市| 红桥区| 沈阳市| 林西县| 观塘区| 镇沅| 金平| 连城县| 安岳县| 隆德县| 杭州市| 南华县| 东乡族自治县| 庆安县| 黑河市| 天全县| 晋城| 塔河县| 库伦旗| 玉环县| 白水县| 遵义市| 洪江市| 海南省| 阿合奇县| 五河县| 应用必备| 石楼县| 宁远县| 武鸣县| 平果县| 漳州市| 长白| 东乌珠穆沁旗| 揭东县| 满洲里市| 佛山市|