亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于S2E的Use-After-Free漏洞檢測(cè)方案

        2016-05-09 07:07:42王軼駿
        關(guān)鍵詞:指針插件漏洞

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

        基于S2E的Use-After-Free漏洞檢測(cè)方案

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

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

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

        Use-after-free漏洞 漏洞檢測(cè) 懸垂指針 污點(diǎn)傳播 符號(hào)執(zhí)行

        0 引 言

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

        1 S2E平臺(tái)介紹

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

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

        2 問(wèn)題描述

        UAF漏洞涉及兩個(gè)事件:生成懸垂指針和使用懸垂指針。兩個(gè)事件在時(shí)間點(diǎn)上一般是分開(kāi)的。

        2.1 漏洞解釋

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

        圖1 懸垂指針生命周期

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

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

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

        2.3 檢測(cè)原理

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

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

        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();

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

        而在任何情況下,我們的檢測(cè)算法都能確保程序在匯編語(yǔ)句2報(bào)錯(cuò)。這是因?yàn)橹羔樓辶愫螅瑹o(wú)論是讀寫(xiě)成員屬性,還是執(zhí)行成員方法,任何試圖對(duì)該指針的訪(fǎng)問(wèn)都會(huì)被拒絕。

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

        3 檢測(cè)方案

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

        3.1 架構(gòu)概述

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

        圖2 UAFChecker架構(gòu)圖

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

        3.2 模塊分析

        3.2.1 反匯編模塊

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

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

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

        3.2.3 信息分析模塊

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

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

        3.2.4 指針傳播模塊

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

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

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

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

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

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

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

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

        輸入:釋放堆塊

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

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

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

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

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

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

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

        4 方案評(píng)估

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

        4.1 基準(zhǔn)測(cè)試

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

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

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

        4.2 測(cè)試IE瀏覽器

        實(shí)驗(yàn)環(huán)境為Windows XP SP3全補(bǔ)丁,IE8.0.6001.18702,VMWare Workstation 8.0.2 build-591240虛擬機(jī)環(huán)境。

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

        表3 UAF漏洞信息匯總

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

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

        4.3 相關(guān)工作

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

        5 結(jié) 語(yǔ)

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

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

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

        3) 優(yōu)化和改進(jìn)堆管理結(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測(cè)試平臺(tái)及并行性性能分析[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] 豬兒蟲(chóng)小次郎(新浪微博網(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。國(guó)家自然科學(xué)基金項(xiàng)目(61332010);高級(jí)XXX技術(shù)研究(秘密級(jí))(CNITSEC-KY-2013-009/2)。馮震,碩士生,主研領(lǐng)域:信息安全。聶森,博士生。王軼駿,講師。薛質(zhì),教授。

        TP3

        A

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

        猜你喜歡
        指針插件漏洞
        漏洞
        自編插件完善App Inventor與樂(lè)高機(jī)器人通信
        電子制作(2019年22期)2020-01-14 03:16:34
        偷指針的人
        為什么表的指針都按照順時(shí)針?lè)较蜣D(zhuǎn)動(dòng)
        三明:“兩票制”堵住加價(jià)漏洞
        漏洞在哪兒
        MapWindowGIS插件機(jī)制及應(yīng)用
        高鐵急救應(yīng)補(bǔ)齊三漏洞
        基于改進(jìn)Hough變換和BP網(wǎng)絡(luò)的指針儀表識(shí)別
        基于Revit MEP的插件制作探討
        亚洲av之男人的天堂| 亚洲啪啪视频一区二区| 久久天天躁狠狠躁夜夜躁2014| 精品香蕉久久久爽爽| 欧美综合图区亚洲综合图区| 亚洲av推荐网站在线观看| 国产乱子伦精品无码专区| 欧美jizzhd精品欧美| 男人天堂av在线成人av| 亚洲一二三四五中文字幕| 在线观看免费无码专区| 牛鞭伸入女人下身的真视频| 精品日韩欧美| 日本少妇熟女一区二区| 3d动漫精品啪啪一区二区免费| 亚洲av成本人无码网站| 日本亚洲成人中文字幕| 国产变态av一区二区三区调教| 中文无码久久精品| 亚洲两性视频一三区| 男女性生活视频免费网站| 亚洲成av人片乱码色午夜| 四虎影库久免费视频| 亚洲AV成人无码天堂| 亚洲sm另类一区二区三区| 亚洲成在人线在线播放无码| 亚洲手机国产精品| 日本超骚少妇熟妇视频| 免费不卡无码av在线观看| 欧美 国产 日产 韩国 在线| 亚洲综合网一区二区三区| 亚洲国产性夜夜综合另类| 狠狠色成人综合网| 亚洲中文字幕巨乳人妻| 国产一级一区二区三区在线播放| 亚洲a∨无码男人的天堂| 国产精品入口牛牛影视| 国产一区二区三区精品成人爱| 高h小月被几个老头调教| 亚洲久热无码av中文字幕| 亚洲视频在线观看青青草|