• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向動(dòng)態(tài)生成代碼的攻防技術(shù)綜述

    2016-03-01 10:26:44煒,霍瑋,鄒
    信息安全學(xué)報(bào) 2016年4期
    關(guān)鍵詞:代碼生成控制流編譯器

    吳 煒,霍 瑋,鄒 維

    中國(guó)科學(xué)院信息工程研究所 北京 中國(guó) 100093中國(guó)科學(xué)院網(wǎng)絡(luò)測(cè)評(píng)技術(shù)重點(diǎn)實(shí)驗(yàn)室 北京 中國(guó) 100195網(wǎng)絡(luò)安全防護(hù)技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室 北京 中國(guó) 100195中國(guó)科學(xué)院大學(xué) 北京 中國(guó) 100049

    面向動(dòng)態(tài)生成代碼的攻防技術(shù)綜述

    吳 煒,霍 瑋,鄒 維

    中國(guó)科學(xué)院信息工程研究所 北京 中國(guó) 100093中國(guó)科學(xué)院網(wǎng)絡(luò)測(cè)評(píng)技術(shù)重點(diǎn)實(shí)驗(yàn)室 北京 中國(guó) 100195網(wǎng)絡(luò)安全防護(hù)技術(shù)北京市重點(diǎn)實(shí)驗(yàn)室 北京 中國(guó) 100195中國(guó)科學(xué)院大學(xué) 北京 中國(guó) 100049

    動(dòng)態(tài)代碼生成技術(shù)廣泛使用在瀏覽器、Flash播放器等重要日常軟件中,近年來(lái)其中曝出嚴(yán)重的安全問(wèn)題,為控制流劫持攻擊和相應(yīng)的防御提供了新機(jī)會(huì),受到越來(lái)越多的關(guān)注。針對(duì)動(dòng)態(tài)生成代碼在數(shù)據(jù)區(qū)且可被執(zhí)行和直接依賴輸入的特性,本文從代碼注入攻擊和代碼重用攻擊兩個(gè)角度總結(jié)分析了控制流劫持攻擊新技術(shù),并從強(qiáng)制性防御和閃避防御(Moving target defense)兩個(gè)角度對(duì)相關(guān)的主要防御新方法進(jìn)行了闡述。同時(shí)提出動(dòng)態(tài)代碼生成系統(tǒng)安全性的衡量模型,對(duì)代表性防御技術(shù)進(jìn)行對(duì)比分析和評(píng)估,并探討了面向動(dòng)態(tài)生成代碼攻防技術(shù)的發(fā)展趨勢(shì)和下一步的研究方向。

    軟件安全; 即時(shí)編譯; 動(dòng)態(tài)二進(jìn)制翻譯; 控制流劫持; 防御技術(shù)

    1 引言

    瀏覽器、Flash播放器、虛擬機(jī)和模擬器已成為互聯(lián)網(wǎng)時(shí)代廣泛使用的基礎(chǔ)性軟件,它們普遍采用即時(shí)編譯(Just-In-Time compilation)和動(dòng)態(tài)二進(jìn)制翻譯(Dynamic binary translation)等動(dòng)態(tài)代碼生成(Dynamic code generation)技術(shù)。該技術(shù)可在軟件系統(tǒng)運(yùn)行過(guò)程中動(dòng)態(tài)產(chǎn)生或修改可執(zhí)行代碼[1-5],稱為動(dòng)態(tài)生成代碼(Dynamic generating code)。

    控制流劫持[6]是一種經(jīng)典且有效的攻擊方法,攻擊者通過(guò)改變目標(biāo)程序正常的執(zhí)行流程并進(jìn)行控制從而達(dá)到攻擊的目的??刂屏鹘俪值姆椒ǚ譃閮纱箢? 注入式和非注入式。傳統(tǒng)的注入式攻擊[7]需要同時(shí)滿足三個(gè)攻擊條件: 1)掌握可注入攻擊代碼的漏洞; 2)控制程序原有執(zhí)行流程并成功跳轉(zhuǎn)到攻擊代碼起始處; 3)攻擊代碼可被執(zhí)行。非注入式攻擊,如代碼重用攻擊(Code reuse attack)[8,9],降低了傳統(tǒng)注入式攻擊的攻擊條件。通過(guò)重用目標(biāo)程序中的工具代碼片段(Gadget)構(gòu)造攻擊代碼,既避免注入攻擊代碼又可保證攻擊代碼的可執(zhí)行性。但可被利用的代碼數(shù)量和串接難度成為代碼重用攻擊有效的關(guān)鍵因素。然而,利用動(dòng)態(tài)生成代碼,既不需依賴漏洞注入攻擊代碼,也不需依賴程序中是否存在合法的攻擊代碼段,僅通過(guò)精心設(shè)計(jì)程序輸入就可以完成攻擊代碼注入或者攻擊代碼段構(gòu)造,同時(shí)可以繞過(guò)數(shù)據(jù)執(zhí)行保護(hù)(Data execution prevention)和地址隨機(jī)化(Address space layout randomization)等防御技術(shù),大大降低了控制流劫持的技術(shù)難度。

    動(dòng)態(tài)代碼生成技術(shù)使得傳統(tǒng)代碼安全防護(hù)技術(shù)的有效性也面臨著挑戰(zhàn)。由于攻擊代碼可與動(dòng)態(tài)生成的正常代碼存儲(chǔ)在同一數(shù)據(jù)區(qū),數(shù)據(jù)執(zhí)行保護(hù)無(wú)法阻止攻擊代碼的執(zhí)行??蓤?zhí)行代碼在運(yùn)行時(shí)被動(dòng)態(tài)生成,因此依賴靜態(tài)分析與靜態(tài)插裝的控制流完整性(Control flow integrity)[10]保護(hù)難以實(shí)施,基于靜態(tài)分析和靜態(tài)二進(jìn)制變換的軟件多樣化(Software diversification)[11]技術(shù)也同樣難以應(yīng)用。

    圍繞動(dòng)態(tài)生成代碼的攻防對(duì)抗新技術(shù)和新方法成為近年來(lái)的研究熱點(diǎn)。2010年Blazakis在Black Hat會(huì)議上首先提出了針對(duì)Flash播放器中動(dòng)態(tài)生成代碼的攻擊方法[12],隨后這種攻擊方法被擴(kuò)展到各種動(dòng)態(tài)代碼生成系統(tǒng)。安全研究人員相繼在Pwn2Own、Black Hat和NDSS等頂級(jí)會(huì)議上提出了面向動(dòng)態(tài)生成代碼的一系列新攻擊方式[13-18]。同時(shí),研究人員也提出了許多針對(duì)動(dòng)態(tài)生成代碼的新防御技術(shù)[18-28]。本文圍繞動(dòng)態(tài)生成代碼,從攻擊與防御兩方面對(duì)近年來(lái)的研究成果進(jìn)行總結(jié)歸納,概述技術(shù)的基本原理和應(yīng)用效果,并建立適用于面向動(dòng)態(tài)生成代碼攻防技術(shù)的衡量模型,對(duì)代表性技術(shù)進(jìn)行對(duì)比分析和評(píng)價(jià),通過(guò)分析潛在的攻擊手段,指出提高動(dòng)態(tài)生成代碼安全性的發(fā)展方向。本文的主要貢獻(xiàn): 1)分類闡述針對(duì)動(dòng)態(tài)代碼生成技術(shù)的攻擊技術(shù); 2)分類論述加固動(dòng)態(tài)代碼生成系統(tǒng)的防御技術(shù)的原理和研究進(jìn)展; 3)提出面向動(dòng)態(tài)生成代碼系統(tǒng)的安全度量模型,并基于該模型對(duì)防御技術(shù)進(jìn)行了對(duì)比分析; 4)對(duì)基于動(dòng)態(tài)生成代碼的攻防技術(shù)的發(fā)展趨勢(shì)進(jìn)行了展望。

    本文首先對(duì)動(dòng)態(tài)生成代碼及相關(guān)攻防技術(shù)的背景和術(shù)語(yǔ)進(jìn)行了介紹(第2節(jié)),然后對(duì)動(dòng)態(tài)生成代碼的原理進(jìn)行了概括,揭示動(dòng)態(tài)生成代碼的特性(第 3節(jié))。從代碼注入攻擊和代碼重用攻擊兩個(gè)角度介紹了動(dòng)態(tài)代碼生成技術(shù)為攻擊者帶來(lái)的新機(jī)會(huì)(第 4節(jié))。從強(qiáng)制性防御和閃避防御兩個(gè)角度闡述了針對(duì)動(dòng)態(tài)代碼生成的防御技術(shù)的原理、挑戰(zhàn)和研究進(jìn)展(第5節(jié))?;诜烙杀竞头烙Ч?衡量了動(dòng)態(tài)代碼生成系統(tǒng)的安全性(第6節(jié)),最后總結(jié)并給出了研究發(fā)展建議。

    2 研究背景

    動(dòng)態(tài)生成代碼主要存在于即時(shí)編譯系統(tǒng)和動(dòng)態(tài)二進(jìn)制翻譯系統(tǒng)中。即時(shí)編譯系統(tǒng)廣泛存在于電腦和移動(dòng)終端,可顯著提高動(dòng)態(tài)語(yǔ)言解釋執(zhí)行的效率。隨著JavaScript語(yǔ)言廣泛使用于動(dòng)態(tài)網(wǎng)頁(yè)中[68],當(dāng)前主流瀏覽器,如Chrome、Safari、IE、Firefox等都對(duì)JavaScript程序提供支持,并采用了即時(shí)編譯技術(shù)提高 JavaScript的執(zhí)行效率[1,2],如在特定情況下可使Google V8引擎速度提高12倍。Adobe Flash播放器幾乎安裝在所有的電腦和移動(dòng)終端,其也采用即時(shí)編譯技術(shù)加速ActionScript的解釋執(zhí)行來(lái)為用戶帶來(lái)更好的多媒體體驗(yàn)。此外,JVM和.NET CLR等虛擬機(jī)均使用了即時(shí)編譯技術(shù)。動(dòng)態(tài)二進(jìn)制翻譯[29]廣泛使用在跨平臺(tái)支持[5,30]、遺產(chǎn)軟件移植、動(dòng)態(tài)程序分析[31]和安全防御[32,33]中以增強(qiáng)可移植性與安全性。二進(jìn)制翻譯技術(shù)作為虛擬化軟件Qemu[5]的核心技術(shù),隨著云計(jì)算的發(fā)展而被廣泛使用。由于動(dòng)態(tài)生成代碼直接受控于軟件輸入并存儲(chǔ)于內(nèi)存堆區(qū),傳統(tǒng)的攻防技術(shù),如控制流劫持、數(shù)據(jù)執(zhí)行保護(hù)、內(nèi)存完整性檢測(cè)、閃避防御等在應(yīng)用原理、應(yīng)用場(chǎng)景和應(yīng)用效果等方面都面臨新的挑戰(zhàn),面向動(dòng)態(tài)生成代碼的攻防技術(shù)和方法成為新的研究熱點(diǎn)。

    在針對(duì)動(dòng)態(tài)生成代碼的攻擊技術(shù)中,控制流劫持攻擊是研究的熱點(diǎn)。控制流劫持攻擊通過(guò)劫持函數(shù)返回地址或代碼指針將控制流跳轉(zhuǎn)到攻擊者指定的代碼地址并執(zhí)行,從而完成攻擊。根據(jù)攻擊代碼來(lái)源的不同,又可進(jìn)一步分為代碼注入攻擊和代碼重用攻擊。在代碼注入攻擊中,需要利用目標(biāo)程序漏洞將包含Shellcode的代碼注入到內(nèi)存可執(zhí)行區(qū)域并讓Shellcode得到執(zhí)行機(jī)會(huì)。代碼重用攻擊則利用程序中現(xiàn)有“合法”代碼,繞過(guò)數(shù)據(jù)執(zhí)行保護(hù)完成攻擊,返回導(dǎo)向編程(Return oriented programming,簡(jiǎn)稱ROP)[8]攻擊是其中的典型。ROP尋找程序內(nèi)部的工具代碼片段組合形成ROP鏈(ROP chain)。工具代碼片段是以返回指令結(jié)尾的若干連續(xù)指令,將多段工具代碼片段精心組合可以構(gòu)造等效于 Shellcode的ROP鏈直接完成攻擊,或者僅通過(guò)構(gòu)造ROP鏈調(diào)用VirtualProtect等函數(shù)關(guān)閉Shellcode所在頁(yè)面的數(shù)據(jù)執(zhí)行保護(hù),進(jìn)而執(zhí)行Shellcode間接完成攻擊。文獻(xiàn)[34]對(duì) ROP的利用條件進(jìn)行了建模分析。為使用 ROP技術(shù),需要利用目標(biāo)程序漏洞控制程序執(zhí)行流程,依次執(zhí)行工具代碼片段完成攻擊。

    數(shù)據(jù)執(zhí)行保護(hù)和地址空間隨機(jī)化是廣泛應(yīng)用于現(xiàn)代操作系統(tǒng)中的兩種防御技術(shù)。數(shù)據(jù)執(zhí)行保護(hù)將內(nèi)存頁(yè)設(shè)置為可執(zhí)行的代碼段或不可執(zhí)行的數(shù)據(jù)段,一種常見的數(shù)據(jù)執(zhí)行保護(hù)“W⊕X”可以防止內(nèi)存頁(yè)被同時(shí)設(shè)置為可寫和可執(zhí)行,能夠有效防御傳統(tǒng)代碼注入攻擊。地址空間隨機(jī)化將程序、鏈接庫(kù)的加載位置和堆、棧的起始地址隨機(jī)化,使攻擊者難以預(yù)測(cè)目標(biāo)指令的地址位置,很大程度上提高了攻擊的門檻。然而,地址隨機(jī)化也有兼容性、熵值小和易受到信息泄露攻擊的缺點(diǎn)。一些程序和動(dòng)態(tài)鏈接庫(kù)不兼容地址隨機(jī)化保護(hù),容易被ROP攻擊直接利用。在32位操作系統(tǒng)中,地址隨機(jī)化為堆提供的隨機(jī)性不足,低熵的隨機(jī)化易受到暴力枚舉的攻擊[35]。堆噴射(Heap spray)是繞過(guò)32位地址隨機(jī)化的有效方式。同時(shí),研究者發(fā)現(xiàn)了利用程序漏洞泄露內(nèi)存地址從而繞過(guò)地址隨機(jī)化的方式[36-39]。

    控制流完整性[10,41-43]保護(hù)是一類通過(guò)檢查控制流非正常跳轉(zhuǎn)從而防止程序控制流被劫持的防御方法。但傳統(tǒng)控制流完整性防護(hù)技術(shù)只能保護(hù)靜態(tài)編譯產(chǎn)生的代碼。閃避防御技術(shù)(Moving Target Defense)[44]是一種新興的防御技術(shù),其中包括軟件多樣化技術(shù)[11]。將軟件多樣化技術(shù)應(yīng)用到動(dòng)態(tài)代碼生成上可以增加生成代碼的不確定性,生成多變的不同形態(tài)的但功能相同的代碼,減少攻擊者對(duì)于生成代碼的知識(shí),從而降低攻擊成功的概率[24,25]。

    3 動(dòng)態(tài)代碼生成技術(shù)原理

    動(dòng)態(tài)代碼生成技術(shù)能夠在運(yùn)行時(shí)新產(chǎn)生并執(zhí)行優(yōu)化的本地機(jī)器碼,被廣泛應(yīng)用于即時(shí)編譯系統(tǒng)和動(dòng)態(tài)二進(jìn)制翻譯系統(tǒng)中以提高系統(tǒng)性能、可移植性和安全性。盡管該技術(shù)在不同的動(dòng)態(tài)代碼生成器中實(shí)現(xiàn)方式不同,但其基本行為特征是相同的,都是對(duì)輸入程序代碼,在運(yùn)行時(shí)直接翻譯生成本地機(jī)器碼執(zhí)行或動(dòng)態(tài)優(yōu)化已生成的本地機(jī)器碼并執(zhí)行。

    現(xiàn)代代碼解釋器中廣泛使用了動(dòng)態(tài)代碼生成技術(shù)。解釋型語(yǔ)言通常會(huì)將程序編譯為其自定義的字節(jié)碼并執(zhí)行。當(dāng)字節(jié)碼在解釋器虛擬機(jī)中運(yùn)行時(shí),即時(shí)編譯器開始為其動(dòng)態(tài)生成語(yǔ)義等價(jià)且運(yùn)行速度更快的可執(zhí)行代碼,通常生成宿主機(jī)的本地機(jī)器碼。

    一個(gè)具體的例子如圖 1所示,在上層語(yǔ)言ActionScript中的一段源碼被動(dòng)態(tài)翻譯成了對(duì)應(yīng)的本地代碼。

    圖1 動(dòng)態(tài)代碼生成實(shí)例

    軟件動(dòng)態(tài)翻譯器對(duì)動(dòng)態(tài)生成代碼主要有四類操作: 生成、修改、刪除和調(diào)用。如圖2所示,軟件動(dòng)態(tài)翻譯器[18]讀入待翻譯的源程序,優(yōu)化編譯器以函數(shù)為單位根據(jù)輸入程序生成本地代碼到堆上的代碼緩存(Code cache,又稱Code heap[42]、JIT buffer[15])中,并通過(guò)執(zhí)行器調(diào)用動(dòng)態(tài)生成代碼。對(duì)于輸入程序的某一個(gè)函數(shù),軟件動(dòng)態(tài)翻譯器生成的本地代碼的語(yǔ)義與輸入函數(shù)應(yīng)當(dāng)是等價(jià)的。由于本地代碼會(huì)在運(yùn)行時(shí)生成并被調(diào)用執(zhí)行,因此代碼緩存區(qū)域需被設(shè)置為可寫且可執(zhí)行。優(yōu)化編譯器還可以收集輪廓信息修改動(dòng)態(tài)生成代碼,進(jìn)行代碼優(yōu)化。垃圾回收器對(duì)代碼緩存進(jìn)行自動(dòng)內(nèi)存管理,對(duì)動(dòng)態(tài)生成代碼進(jìn)行刪除。

    因此,動(dòng)態(tài)生成代碼具有兩個(gè)特性: 1)直接受控于輸入; 2)存儲(chǔ)于可執(zhí)行的數(shù)據(jù)區(qū)。

    圖2 動(dòng)態(tài)代碼生成技術(shù)基本框架

    4 動(dòng)態(tài)代碼生成的攻擊威脅

    控制流劫持漏洞是一類危害嚴(yán)重的漏洞??刂屏鹘俪止羰且环N最常見的利用控制流劫持漏洞進(jìn)行軟件攻擊的手段,可導(dǎo)致攻擊者獲得任意代碼執(zhí)行能力從而安裝木馬、病毒,對(duì)計(jì)算機(jī)和網(wǎng)絡(luò)系統(tǒng)的機(jī)密性、可用性和完整性造成破壞。控制流劫持攻擊一般可分為代碼注入攻擊(Code injection attack)和代碼重用攻擊[6]。傳統(tǒng)代碼注入攻擊可以被數(shù)據(jù)執(zhí)行保護(hù)防御,但是動(dòng)態(tài)生成代碼位于可執(zhí)行的數(shù)據(jù)區(qū),因此向代碼緩存注入的惡意代碼可以繞過(guò)數(shù)據(jù)執(zhí)行保護(hù)。同時(shí),動(dòng)態(tài)生成代碼直接受控于輸入的特性使攻擊者可以操縱輸入程序生成所需的工具代碼,更易于實(shí)施代碼重用攻擊。動(dòng)態(tài)代碼生成提供了新的攻擊方式,近年來(lái)研究者們發(fā)現(xiàn)許多利用動(dòng)態(tài)生成代碼進(jìn)行攻擊的機(jī)會(huì)[12,16-18]。

    4.1 控制流劫持漏洞

    控制流劫持攻擊的必要條件是存在控制流劫持漏洞。出于性能考慮,動(dòng)態(tài)代碼翻譯器(如即時(shí)編譯器)往往用C或C++語(yǔ)言編寫。由于動(dòng)態(tài)代碼翻譯器的復(fù)雜性,代碼量往往高達(dá)數(shù)十萬(wàn)行甚至百萬(wàn)行。大規(guī)模、復(fù)雜的C或C++程序中內(nèi)存安全存在更大的隱患。各類溢出漏洞、釋放后重用漏洞、類型混淆漏洞等均可能被用來(lái)劫持程序原有的控制流。如Google V8 JavaScript Engine中存在堆溢出漏洞(CVE-2009-2555),可被用來(lái)劫持程序的控制流,跳轉(zhuǎn)到攻擊代碼執(zhí)行。根據(jù)攻擊代碼來(lái)源的不同,又可進(jìn)一步分為代碼注入攻擊和代碼重用攻擊。

    4.2 代碼注入攻擊

    傳統(tǒng)代碼注入攻擊利用目標(biāo)程序的輸入信道將實(shí)現(xiàn)惡意功能的Shellcode注入程序內(nèi)存空間中并通過(guò)控制流劫持漏洞執(zhí)行。數(shù)據(jù)執(zhí)行保護(hù)通過(guò)設(shè)置數(shù)據(jù)頁(yè)面不可執(zhí)行能夠阻止Shellcode執(zhí)行,很大程度上提高了代碼注入攻擊的門檻。但在動(dòng)態(tài)代碼生成技術(shù)中,代碼緩存本身就需要寫和執(zhí)行權(quán)限,使得數(shù)據(jù)執(zhí)行保護(hù)失效,從而為攻擊者注入執(zhí)行Shellcode提供了便利。從注入方式的角度,攻擊者可以在利用代碼緩存覆蓋攻擊(利用內(nèi)存任意寫漏洞向代碼緩存注入惡意代碼)這種傳統(tǒng)方式之外,不利用內(nèi)存漏洞,僅需構(gòu)造畸型源程序,就迫使軟件動(dòng)態(tài)翻譯器生成惡意代碼(如JIT噴射攻擊)。

    堆噴射是一種利用堆操作漏洞向堆上注入包含Shellcode的大量重復(fù)指令,從而繞過(guò)地址隨機(jī)化的注入攻擊方法。數(shù)據(jù)執(zhí)行保護(hù)是防御堆噴射的傳統(tǒng)方法,因?yàn)樵谶@種情況下攻擊者需要先利用ROP等代碼重用技術(shù)將數(shù)據(jù)執(zhí)行保護(hù)關(guān)閉(如調(diào)用 Virtual-Protect或mprotect函數(shù)),才能執(zhí)行注入的Shellcode,增加了漏洞利用的難度。此外,Egele等還提出一種在字符串緩沖區(qū)中發(fā)現(xiàn)Shellcode的堆噴射防御技術(shù)[46]。針對(duì)上述防御方法,攻擊者提出了一種向代碼緩存注入 Shellcode的簡(jiǎn)便方法,即 JIT噴射攻擊(JIT Spraying)。JIT噴射攻擊是由堆噴射演進(jìn)而來(lái)的,利用 JIT動(dòng)態(tài)生成本地機(jī)器碼的特性完成代碼注入攻擊。由于 Shellcode被直接注入到代碼緩存中,使得數(shù)據(jù)執(zhí)行保護(hù)和Egele等的防御方法均失效。JIT噴射攻擊最早由Blazakis在2010年Black Hat上提出,可以繞過(guò)地址隨機(jī)化和數(shù)據(jù)執(zhí)行保護(hù)攻擊 Adobe Flash的即時(shí)編譯器[12]。JIT生成代碼存放在可讀寫并可執(zhí)行的代碼緩存中,JIT噴射攻擊強(qiáng)制即時(shí)編譯器產(chǎn)生大量代碼進(jìn)行堆噴射攻擊以繞過(guò)地址隨機(jī)化防御。JIT噴射攻擊的原理如圖3所示。攻擊者利用包含立即數(shù)的腳本指令,通過(guò)控制源程序?qū)ⅰ俺A俊弊鳛榱⒓磾?shù)注入即時(shí)編譯器的生成代碼中(如指令“XOR EAX 0x3c909090”),然后通過(guò)一個(gè)控制流劫持漏洞跳轉(zhuǎn)到“常量”的地址加一個(gè)偏移值,此時(shí)“常量”就變成了可以被識(shí)別執(zhí)行的代碼片段。通過(guò)連續(xù)輸入大量的常量就可以在代碼緩存中生成攻擊者需要的 Shellcode。已公開的 JIT噴射攻擊包括針對(duì)Safari瀏覽器 JavaScript即時(shí)編譯器的攻擊[45]和對(duì)Adobe Flash的攻擊。

    圖3 JIT噴射攻擊[25]

    4.3 代碼重用攻擊

    傳統(tǒng)ROP攻擊首先在程序及其依賴庫(kù)中尋找工具代碼片段,再在運(yùn)行時(shí)采用繞過(guò)地址隨機(jī)化的技術(shù)獲得工具代碼片段的內(nèi)存地址,如利用一個(gè)地址泄露漏洞獲取某個(gè)動(dòng)態(tài)鏈接庫(kù)的基址,最后劫持控制流跳轉(zhuǎn)到工具代碼片段執(zhí)行。動(dòng)態(tài)代碼生成技術(shù)能夠在堆上動(dòng)態(tài)輸出本地機(jī)器碼,且輸出內(nèi)容可以由高層編程語(yǔ)言所構(gòu)成的輸入所控制。這意味著攻擊者可以生成自己需要的工具代碼片段用于ROP而不依賴于程序和動(dòng)態(tài)加載庫(kù)中已存在可利用的工具代碼片段,同時(shí)也使G-free編譯[48]等ROP攻擊緩解技術(shù)失效。Serna在報(bào)告[16]中提出了一種向代碼緩存區(qū)噴射用于泄露內(nèi)存地址的工具代碼片段的攻擊方式。動(dòng)態(tài)代碼生成為ROP等代碼重用攻擊提供了便利。

    一種針對(duì)動(dòng)態(tài)代碼生成的ROP攻擊可以分為以下三個(gè)步驟: 1)控制動(dòng)態(tài)代碼翻譯器的輸入源程序以在代碼緩存產(chǎn)生所需工具代碼片段; 2)通過(guò)信息泄露定位代碼緩存區(qū)中工具代碼片段的位置; 3)將控制流跳轉(zhuǎn)到工具代碼片段開始執(zhí)行。為完成該過(guò)程,需要攻擊者深刻理解目標(biāo)軟件的防御機(jī)制并利用目標(biāo)軟件中的信息泄露漏洞。Athanasakis等人提出一種利用Firefox和IE瀏覽器中JavaScript即時(shí)編譯器動(dòng)態(tài)生成工具代碼片段,并結(jié)合信息泄露漏洞進(jìn)行代碼重用攻擊的方法[15]。Snow在文獻(xiàn)[40]中提出JIT-ROP方法,可在上述第二步中應(yīng)用。該方法利用一個(gè)信息泄露漏洞讀取大量?jī)?nèi)存內(nèi)容并在其中搜索ROP所需的工具代碼片段,即時(shí)構(gòu)建ROP完成攻擊。

    5 動(dòng)態(tài)生成代碼的安全防御

    軟件漏洞是導(dǎo)致控制流劫持攻擊的根本原因。研究者提出了一系列控制流劫持漏洞的挖掘技術(shù)[49-52]。但是由于漏洞挖掘本身的難度,不能確保發(fā)現(xiàn)所有控制流劫持漏洞,因此研究人員提出了漏洞去效技術(shù)(vulnerability neutralization),如 Windows平臺(tái)的EMET[66]和Linux平臺(tái)的grsecurity[67]等,阻止攻擊發(fā)生。漏洞去效是指通過(guò)部署各種防御機(jī)制,使得軟件系統(tǒng)中的漏洞無(wú)法被攻擊者成功利用的一類防御技術(shù),典型方法包括數(shù)據(jù)執(zhí)行保護(hù)、控制流完整性保護(hù)和代碼多樣化等。研究者將上述方法應(yīng)用到動(dòng)態(tài)代碼生成程序中,提出了若干改進(jìn)技術(shù)[18-25]。本文根據(jù)防御技術(shù)的特點(diǎn),分強(qiáng)制性防御和靈敏變換攻擊面的閃避防御兩類,對(duì)新提出的漏洞去效方法進(jìn)行介紹和分析。

    5.1 強(qiáng)制性防御

    強(qiáng)制性防御技術(shù)(enforcement-based defenses[11])旨在為程序執(zhí)行過(guò)程中可能被攻擊者利用的部分添加防御,從而防止對(duì)此部分的利用。數(shù)據(jù)執(zhí)行保護(hù)是一種典型的強(qiáng)制性防御技術(shù),該技術(shù)通過(guò)防止數(shù)據(jù)段被執(zhí)行或者代碼段被改寫提高了傳統(tǒng)代碼注入攻擊的難度,但是,攻擊者依然可以利用合法的代碼片段進(jìn)行代碼重用攻擊。另一種典型的強(qiáng)制性防御技術(shù)是控制流完整性保護(hù),該技術(shù)用于阻止現(xiàn)實(shí)攻擊中常見的劫持控制流行為,并且能夠防御代碼重用攻擊??刂屏魍暾杂行У那疤釛l件是代碼完整性,即代碼段不能被篡改,但動(dòng)態(tài)生成代碼位于可寫數(shù)據(jù)區(qū),因此攻擊者可能利用內(nèi)存任意寫漏洞破壞動(dòng)態(tài)生成代碼的完整性以繞過(guò)控制流完整性保護(hù)。在實(shí)際中,控制流完整性和數(shù)據(jù)執(zhí)行保護(hù)通常組合使用以有效防御代碼注入攻擊和代碼重用攻擊。本節(jié)分別從數(shù)據(jù)執(zhí)行保護(hù)和控制流完整性兩個(gè)方面綜述針對(duì)動(dòng)態(tài)生成代碼的強(qiáng)制性防御新技術(shù)。

    5.1.1 數(shù)據(jù)執(zhí)行保護(hù)

    數(shù)據(jù)執(zhí)行保護(hù)是防御代碼注入攻擊的重要防御手段。目前主流的數(shù)據(jù)執(zhí)行保護(hù)通過(guò)禁止內(nèi)存頁(yè)被同時(shí)設(shè)置為可寫和可執(zhí)行,阻止攻擊者執(zhí)行注入數(shù)據(jù)段的Shellcode或篡改代碼段,通常記為W⊕X。動(dòng)態(tài)代碼生成需要既可寫又可執(zhí)行的內(nèi)存空間以存放或修改動(dòng)態(tài)產(chǎn)生的代碼,與現(xiàn)有數(shù)據(jù)執(zhí)行保護(hù)實(shí)現(xiàn)機(jī)制無(wú)法兼容。因此,研究者提出了基于權(quán)限轉(zhuǎn)換的數(shù)據(jù)執(zhí)行保護(hù)[19,26]和基于權(quán)限分離的數(shù)據(jù)執(zhí)行保護(hù)[18,20,28]兩類技術(shù),實(shí)現(xiàn)強(qiáng)制性防御。

    代表性的基于權(quán)限轉(zhuǎn)換W⊕X方法由南京大學(xué)陳平等人[19]提出,其原理如圖4所示。該方法在即時(shí)編譯器的不同工作階段,對(duì)所使用的內(nèi)存區(qū)域設(shè)置不同的權(quán)限,在生成本地代碼時(shí)將代碼緩存設(shè)置為可寫不可執(zhí)行,在開始執(zhí)行生成代碼前將代碼緩存頁(yè)面設(shè)置為不可寫和可執(zhí)行,從而防御 JIT噴射攻擊。因?yàn)榧磿r(shí)編譯器比代碼執(zhí)行器更有可能出現(xiàn)控制流劫持漏洞[20],所以該方法有效縮短了攻擊者的攻擊窗口,能夠?qū)Ξ?dāng)時(shí)的野外JIT噴射攻擊實(shí)例進(jìn)行防御且具有可忽略的運(yùn)行時(shí)開銷。

    圖4 基于權(quán)限轉(zhuǎn)換的W⊕X方法[18]

    與上述時(shí)域的數(shù)據(jù)執(zhí)行保護(hù)不同,另一種空域的數(shù)據(jù)執(zhí)行保護(hù)方法將動(dòng)態(tài)代碼生成中生成代碼和執(zhí)行代碼兩個(gè)功能放在不同的進(jìn)程中實(shí)現(xiàn),通過(guò)共享內(nèi)存等內(nèi)存映射機(jī)制共享代碼緩存,并設(shè)置不同的訪問(wèn)權(quán)限。我們稱這種方法為基于權(quán)限分離的數(shù)據(jù)執(zhí)行保護(hù)。

    Niu等人在 RockJIT[9]的實(shí)現(xiàn)中利用虛擬內(nèi)存和沙盒機(jī)制將代碼緩存區(qū)和 RockJIT中影子代碼堆(shadow code heap)映射到相同的物理地址并設(shè)置不同的權(quán)限,如圖5所示。用沙盒機(jī)制將原代碼緩存區(qū)設(shè)置為不可寫可執(zhí)行,將RockJIT中的影子代碼堆設(shè)置為可寫不可執(zhí)行。即時(shí)編譯器生成的代碼經(jīng)過(guò)RockJIT的安全驗(yàn)證之后寫入影子代碼堆。而執(zhí)行生成代碼時(shí)依然訪問(wèn)原代碼緩存。這使得即時(shí)編譯器在向代碼緩存區(qū)寫入代碼時(shí),只能通過(guò)RockJIT寫入影子代碼堆且必須通過(guò) RockJIT的控制流完整性檢測(cè)。即便攻擊者能夠在即時(shí)編譯器的沙盒中任意寫,也不能夠使惡意代碼通過(guò)RockJIT的驗(yàn)證,所以無(wú)法執(zhí)行Shellcode。

    圖5 RockJIT架構(gòu)[22]

    另一種基于權(quán)限分離數(shù)據(jù)執(zhí)行保護(hù)的方法是Jaurnig等人[20]提出的 Lobotomy。該方法在 Firefox TraceMonkey即時(shí)編譯器中應(yīng)用,用于防御JIT噴射攻擊。Lobotomy將JIT引擎分為編譯器和執(zhí)行器兩個(gè)進(jìn)程,并共享代碼緩存區(qū)。編譯進(jìn)程對(duì)緩存區(qū)可寫不可執(zhí)行,執(zhí)行進(jìn)程對(duì)緩存區(qū)可寫可執(zhí)行。通過(guò)上述權(quán)限分離,使得攻擊者無(wú)法利用編譯進(jìn)程中的控制流劫持漏洞執(zhí)行注入的代碼。

    Song等人在文獻(xiàn)[18]中指出在多線程環(huán)境下[53],即便部署了基于權(quán)限轉(zhuǎn)換的 W⊕X[19],攻擊者依然可以進(jìn)行基于競(jìng)爭(zhēng)條件(race condition)的攻擊,在攻擊窗口內(nèi)向代碼緩存區(qū)注入 Shellcode。為解決基于權(quán)限轉(zhuǎn)換的數(shù)據(jù)執(zhí)行保護(hù)在多線程環(huán)境下易受競(jìng)爭(zhēng)情形攻擊的弱點(diǎn),Song等人提出了一種廣泛適用于即時(shí)編譯和動(dòng)態(tài)二進(jìn)制轉(zhuǎn)換的安全動(dòng)態(tài)代碼生成框架SDCG(Secure dynamic code generation),可以為可信的軟件動(dòng)態(tài)翻譯器提供健壯的數(shù)據(jù)執(zhí)行保護(hù)。競(jìng)爭(zhēng)條件攻擊利用動(dòng)態(tài)翻譯器為一個(gè)線程生成代碼時(shí)將代碼緩存區(qū)設(shè)置為可寫的特點(diǎn),利用另一線程向代碼緩存區(qū)注入Shellcode。如圖6所示,線程A在第①次訪問(wèn)代碼緩存時(shí)沒(méi)有修改代碼的權(quán)限,訪問(wèn)②表示代碼生成器正在為線程 A生成代碼,訪問(wèn)③表示線程B也具有了對(duì)代碼緩存的寫權(quán)限所以可以注入Shellcode,發(fā)起訪問(wèn)④時(shí)線程A已經(jīng)完成所需代碼的生成,故所有線程不再具有對(duì)代碼緩存的寫權(quán)限,因此代碼注入攻擊的時(shí)間窗口長(zhǎng)度是t2-t1。這種攻擊利用了內(nèi)存訪問(wèn)權(quán)限的粒度只到進(jìn)程級(jí)別,同一進(jìn)程中的線程具有相同的訪問(wèn)權(quán)限。當(dāng)一個(gè)線程生成代碼時(shí),其他線程都會(huì)獲得寫代碼緩存的權(quán)限,這就方便了代碼注入攻擊。針對(duì)這類攻擊,SDCG的核心是一種通過(guò)共享內(nèi)存將相同的內(nèi)存映射到不同的進(jìn)程,并為不同進(jìn)程設(shè)置不同的訪問(wèn)權(quán)限的技術(shù)。將屬于可信計(jì)算基(TCB)的軟件動(dòng)態(tài)翻譯器放到一個(gè)專用進(jìn)程中,其他進(jìn)程通過(guò)遠(yuǎn)程過(guò)程調(diào)用(Remote procedure call)使用其動(dòng)態(tài)生成代碼的功能。在軟件動(dòng)態(tài)翻譯器進(jìn)程中,代碼緩存區(qū)被設(shè)置為可寫不可執(zhí)行,而在其他進(jìn)程中代碼緩存區(qū)被設(shè)置為不可寫可執(zhí)行。上述內(nèi)存訪問(wèn)權(quán)限設(shè)置通過(guò)基于代理的沙盒架構(gòu)(delegation-based sandbox architecture)[54]攔截所有關(guān)于虛擬內(nèi)存管理的系統(tǒng)調(diào)用實(shí)現(xiàn)以確保權(quán)限設(shè)置不被篡改。

    圖6 使用雙線程進(jìn)行競(jìng)爭(zhēng)條件攻擊[18]

    5.1.2 控制流完整性

    控制流完整性保護(hù)[10]已經(jīng)歷了10年的發(fā)展,被證明是一種防御控制流劫持攻擊的有效手段并開始被工業(yè)界采用,Visual Studio 2015中已經(jīng)支持將控制流保護(hù)信息寫入PE文件格式中,但是傳統(tǒng)控制流完整性保護(hù)方法并不適用于動(dòng)態(tài)代碼生成。為動(dòng)態(tài)代碼生成程序?qū)嵤┛刂屏魍暾员Wo(hù)除了需要為程序本身插裝外,還需要保護(hù)代碼緩存區(qū)中動(dòng)態(tài)生成的代碼,其難點(diǎn)如圖7所示。傳統(tǒng)控制流完整性采用的靜態(tài)分析和插裝的工作方式可以保護(hù)動(dòng)態(tài)代碼翻譯器的控制流。使得被保護(hù)程序的控制流跳轉(zhuǎn)時(shí)檢查控制流跳轉(zhuǎn)目標(biāo),確??刂屏魈D(zhuǎn)目標(biāo)在通過(guò)靜態(tài)分析確定的控制流圖中。但傳統(tǒng)控制流完整性對(duì)于動(dòng)態(tài)生成的可執(zhí)行代碼則無(wú)能為力。動(dòng)態(tài)代碼生成需要在運(yùn)行時(shí)動(dòng)態(tài)生成或修改代碼,這樣的特性與傳統(tǒng)的控制流完整性的靜態(tài)分析與改寫的工作模式矛盾,因此控制流完整性安全策略不能直接用于保護(hù)JIT編譯等動(dòng)態(tài)代碼生成技術(shù)。

    圖7 控制流完整性保護(hù)動(dòng)態(tài)生成代碼的難點(diǎn)

    為了彌補(bǔ)傳統(tǒng)控制流完整性方法的不足,Ansel等人在文獻(xiàn)[21]中提出了NaCl-JIT,一種用基于本地客戶端沙盒(Native Client Sandbox[55],簡(jiǎn)稱NaCl)的保護(hù)動(dòng)態(tài)代碼生成的方案。NaCl利用基于軟件的錯(cuò)誤分離實(shí)現(xiàn)了沙盒,它通過(guò)靜態(tài)分析和插裝軟件護(hù)衛(wèi)(software guards)限制對(duì)內(nèi)存的訪問(wèn)。為保護(hù)動(dòng)態(tài)代碼生成,NaCl-JIT擴(kuò)展了NaCl的編程接口以接管動(dòng)態(tài)添加、修改和刪除代碼等操作。在動(dòng)態(tài)生成代碼時(shí),NaCl-JIT檢查生成代碼滿足以下安全性質(zhì): 生成代碼的目標(biāo)地址在NaCl的可執(zhí)行內(nèi)存區(qū)域內(nèi); 使用標(biāo)準(zhǔn)的NaCl驗(yàn)證器對(duì)生成代碼進(jìn)行驗(yàn)證,生成代碼的目標(biāo)地址必須是沒(méi)有被使用過(guò)的保留內(nèi)存空間;并限制控制流的跳轉(zhuǎn)目標(biāo)必須是對(duì)齊的地址(32字節(jié)對(duì)齊)。這實(shí)際上也通過(guò)限制直接與間接分支跳轉(zhuǎn)目標(biāo),實(shí)現(xiàn)了對(duì)即時(shí)編譯器和代碼緩存的一種粗粒度控制流完整性保護(hù)。最近的研究證明粗粒度的控制流完整性策略不能有效保護(hù)程序的控制流,精心構(gòu)造的ROP攻擊[56,57]可以繞過(guò)粗粒度的控制流完整性保護(hù),NaCl-JIT實(shí)現(xiàn)的控制流完整性難以防御這類攻擊。而且NaCl-JIT由于大量使用NOP填充以對(duì)齊指令,造成了較高的運(yùn)行時(shí)開銷。

    為了彌補(bǔ)傳統(tǒng)控制流完整性方案不能應(yīng)用于動(dòng)態(tài)生成代碼的不足,Niu等人在文獻(xiàn)[22]中提出了如圖5所示的加固即時(shí)編譯的方案: RockJIT,一種將控制流完整性策略應(yīng)用于即時(shí)編譯的方法。RockJIT提出了一種為即時(shí)編譯器進(jìn)行安全加固的架構(gòu)。為即時(shí)編譯器實(shí)施基于 MCFI[42]的細(xì)粒度的控制流完整性保護(hù)并在運(yùn)行時(shí)用粗粒度的控制流完整性保護(hù)動(dòng)態(tài)生成的代碼。通過(guò)基于軟件錯(cuò)誤分離的沙盒限制即時(shí)編譯器的系統(tǒng)調(diào)用,并確保動(dòng)態(tài)生成代碼在正常調(diào)用不含敏感系統(tǒng)調(diào)用,因此為JIT生成代碼執(zhí)行粗粒度的控制流完整性就已足夠。RockJIT通過(guò)靜態(tài)分析即時(shí)編譯器的源代碼以產(chǎn)生細(xì)粒度的 CFG,為即時(shí)編譯器實(shí)施細(xì)粒度的控制流完整性保護(hù)。為用控制流完整性保護(hù)動(dòng)態(tài)代碼生成,在向代碼緩存區(qū)添加新的JIT生成代碼、修改已有的JIT生成代碼和刪除JIT生成代碼時(shí)需要通過(guò)RockJIT的驗(yàn)證以更新控制流策略。為配合RockJIT,對(duì)即時(shí)編譯器源代碼進(jìn)行了修改并將其和代碼緩存放在沙盒之中以確保即時(shí)編譯器不再具有對(duì)JIT生成代碼堆的寫權(quán)限,即時(shí)編譯器進(jìn)行代碼生成、修改、刪除時(shí)需要通過(guò)RockJIT中驗(yàn)證器的控制流完整性保護(hù)驗(yàn)證,才能被寫到RockJIT內(nèi)存中的影子代碼堆,從而防止代碼注入攻擊。

    5.2 閃避防御

    閃避防御(Moving Target Defense)[44]是一種新的防御思想。其核心思想與擬態(tài)安全防御(Mimic secu-rity defense)[33]類似,通過(guò)對(duì)系統(tǒng)配置的靈活變化,變被動(dòng)為主動(dòng),向攻擊者展現(xiàn)一個(gè)不斷變化的不可預(yù)測(cè)的攻擊面,大幅提高攻擊者的利用難度。從攻擊者的角度,動(dòng)態(tài)生成代碼技術(shù)的代碼緩存區(qū)是一個(gè)倍受關(guān)注的攻擊點(diǎn)。其可寫可執(zhí)行的權(quán)限設(shè)置使其成為惡意代碼注入的入口。動(dòng)態(tài)代碼生成器內(nèi)在邏輯的確定性使得攻擊者可以通過(guò)操縱輸入程序獲得其需要的 Shellcode。閃避防御技術(shù)通過(guò)移動(dòng)代碼段和各種隨機(jī)化方法為動(dòng)態(tài)生成代碼添加不確定性,將攻擊成功變?yōu)橐粋€(gè)概率極小的事件。

    閃避防御技術(shù)的有效性需要針對(duì)一個(gè)既定的威脅模型進(jìn)行衡量?,F(xiàn)有的面向動(dòng)態(tài)代碼生成的閃避防御手段通常針對(duì)如下的威脅模型: 程序中存在控制流劫持漏洞,攻擊者通過(guò)控制輸入代碼產(chǎn)生所需Shellcode或者工具代碼片段。生成代碼多樣化通過(guò)為生成代碼添加了不確定性防御上述威脅。

    5.2.1 生成代碼多樣化

    代碼重用攻擊和代碼注入攻擊依賴于生成代碼的位置和內(nèi)容具有一定可預(yù)測(cè)性。研究者提出一系列打破生成代碼可預(yù)測(cè)性的多樣化方法[23-26]。生成代碼多樣化產(chǎn)生與原生成代碼語(yǔ)義相同但形態(tài)不同的代碼,可以使得生成代碼的位置和內(nèi)容對(duì)于攻擊者而言不可預(yù)測(cè)。從而防止攻擊者通過(guò)立即數(shù)引入Shellcode或工具代碼片段。

    為打破生成代碼的可預(yù)測(cè)性,北京大學(xué)計(jì)算機(jī)科學(xué)技術(shù)研究所的韋韜等人在文獻(xiàn)[24]中提出一種生成代碼多樣化技術(shù): INSeRT。針對(duì)X86指令格式提出了立即數(shù)隨機(jī)化(Immediate randomization)、寄存器隨機(jī)化(Register randomization)、位移隨機(jī)化(Displacement randomization)等技術(shù)。立即數(shù)隨機(jī)化將立即數(shù)與一個(gè)隨機(jī)數(shù)異或使得攻擊者不再能控制立即數(shù)的值。如指令“mov eax,imm32”就被變換為“mov eax,(imm32^rand_seed);xor eax,rand_seed”。寄存器隨機(jī)化將使用各個(gè)寄存器的順序隨機(jī)化。位移隨機(jī)化將函數(shù)的參數(shù)和與局部變量的位置打亂以隨機(jī)化指令中的位移域。與上述方法類似,陳平等人在RIM[23]和 JITsafe[26]中也使用了立即數(shù)隨機(jī)化和寄存器隨機(jī)化的方法。

    為應(yīng)對(duì)無(wú)法獲得軟件動(dòng)態(tài)翻譯器的源代碼的情況,Homescu等人在文獻(xiàn)[25]提出了一種無(wú)需修改動(dòng)態(tài)代碼生成器的生成代碼多樣化方法Librando以加固即時(shí)編譯。Librando設(shè)置代碼緩存區(qū)為不可執(zhí)行并截取所有在代碼緩存區(qū)中開辟可執(zhí)行區(qū)域的調(diào)用,將動(dòng)態(tài)生成代碼反編譯為控制流圖,對(duì)其中每個(gè)基本塊進(jìn)行多樣化后寫入另一塊可執(zhí)行內(nèi)存區(qū)域。所有跳轉(zhuǎn)到原生成代碼的分支都被重定向到多樣化后的生成代碼。其多樣化技術(shù)包括了空指令插入(NOP insertion)和常量盲化(Constant blinding)??罩噶畈迦爰夹g(shù)在生成代碼中隨機(jī)插入各種不影響代碼語(yǔ)義的空指令,從而使得生成代碼的位置和任意兩段生成代碼的相對(duì)距離都變得不確定,算法 1是一種空指令插入算法。常量盲化將生成代碼中的立即數(shù)加密,使得攻擊者不再能夠控制生成代碼中立即數(shù)的值。如圖 8所示,常量盲化是一種在生成代碼中隱藏輸入常量的方法,通過(guò)從立即數(shù)中減去一個(gè)隨機(jī)數(shù)將每一個(gè)產(chǎn)生的立即數(shù)加密,并利用LEA指令在運(yùn)行時(shí)對(duì)立即數(shù)進(jìn)行解密。

    算法1.一種空指令插入算法[25].

    圖8 常量盲化實(shí)例[25]

    6 安全性度量

    Merkov等人在文獻(xiàn)[58]中指出,沒(méi)有防御手段能實(shí)現(xiàn)絕對(duì)的安全,攻擊者在有足夠時(shí)間、工具、技能和動(dòng)力的情況下可以攻破任何系統(tǒng)。因此防御手段的目的是提高攻擊者的攻擊成本,同時(shí)將在系統(tǒng)中部署防御的開銷保持在應(yīng)用場(chǎng)景可接受的范圍內(nèi)。研究者提出了許多加固動(dòng)態(tài)代碼生成技術(shù)的防御手段,但是并沒(méi)有統(tǒng)一的衡量防御效果的標(biāo)準(zhǔn),我們結(jié)合動(dòng)態(tài)代碼生成技術(shù)的特點(diǎn),首次提出衡量動(dòng)態(tài)代碼生成安全性的模型,并從防御效果和防御成本兩方面衡量動(dòng)態(tài)生成代碼系統(tǒng)的安全性。

    6.1 防御效果

    防御效果衡量防御技術(shù)提高攻擊難度的程度,數(shù)據(jù)執(zhí)行保護(hù)和控制流完整性等強(qiáng)制性防御手段旨在防御攻擊中的某個(gè)必要步驟,而生成代碼多樣化等閃避防御旨在提供一個(gè)在攻擊者視角中變幻莫測(cè)的攻擊面。

    6.1.1 衡量強(qiáng)制性防御效果

    強(qiáng)制性防御使特定攻擊方式或步驟無(wú)效,例如:細(xì)粒度的控制流完整性保護(hù)可以防止控制流跳轉(zhuǎn)到控制流圖外的地址從而防止ROP攻擊[22]; 基于權(quán)限轉(zhuǎn)換的數(shù)據(jù)執(zhí)行保護(hù)縮減了攻擊者注入和執(zhí)行惡意代碼的攻擊窗口,所以能夠提高代碼注入攻擊的難度[19],迫使攻擊者利用多線程環(huán)境下的競(jìng)爭(zhēng)條件攻擊[18]。發(fā)現(xiàn)一類新的攻擊的難度大于應(yīng)用已知攻擊。迫使攻擊者發(fā)現(xiàn)一類新的攻擊方式能大幅提高攻擊成本。我們衡量了強(qiáng)制性防御手段對(duì)代碼注入攻擊和代碼重用攻擊的影響,表 1對(duì)面向動(dòng)態(tài)生成代碼的典型強(qiáng)制性防御技術(shù)進(jìn)行了對(duì)比分析。根據(jù)防范代碼注入和代碼重用兩種攻擊的機(jī)制,分析其存在的主要威脅向量。

    防御代碼重用攻擊的核心手段是保護(hù)控制流完整性。衡量控制流完整性保護(hù)有效性的兩個(gè)指標(biāo)是其移除 ROP工具代碼片段的數(shù)量和移除間接分支(Indirect branch)的數(shù)量。利用上述指標(biāo),Niu等人在對(duì)RockJIT[22]的安全性進(jìn)行了如下衡量: 1)利用工具代碼片段查找工具在用細(xì)粒度控制流完整性保護(hù)加固后的V8即時(shí)編譯器中查找工具代碼片段。其結(jié)果顯示RockJIT可以移除V8即時(shí)編譯器中98.5%的ROP-工具代碼片段; 2)統(tǒng)計(jì)RockJIT為V8即時(shí)編譯器生成的控制流圖中允許的間接分支跳轉(zhuǎn)的數(shù)量,并與 NaCl-JIT為V8進(jìn)行粗粒度的控制流完整性保護(hù)后所允許的間接分支跳轉(zhuǎn)的數(shù)量進(jìn)行對(duì)比,結(jié)果表明,RockJIT比NaCl-JIT多移除了99.97%的間接分支跳轉(zhuǎn)。

    6.1.2 衡量閃避防御效果

    閃避防御是一種變化攻擊面的防御手段。最近研究者提出了一系列評(píng)價(jià)閃避防御效果的方法[59-61]。Hobson等人在文獻(xiàn)[59]中提出了衡量閃避防御有效性的三個(gè)維度: 覆蓋面(coverage)、不可預(yù)測(cè)性(unpredictability)和及時(shí)性(timeliness)。由于三者中任何一方面的不足都可能為攻擊者提供一部分確定的攻擊面,因此閃避防御手段要滿足以下三個(gè)條件才能顯著提高攻擊成本: 1)覆蓋所有可能被利用的攻擊面; 2)具有足夠高的熵值; 3)能及時(shí)變換不給攻擊者留下足夠長(zhǎng)的攻擊窗口以進(jìn)行基于信息泄露的攻擊。我們參考文獻(xiàn)[59]的評(píng)價(jià)方式,在表2對(duì)現(xiàn)有的針對(duì)動(dòng)態(tài)代碼生成的閃避防御有效性進(jìn)行了衡量,從以上三個(gè)方面列出了其不足之處。

    對(duì)于生成代碼多樣化這類閃避防御,其覆蓋面只包含生成代碼,并未提高對(duì)系統(tǒng)其他部分的攻擊難度。Athanasakis等人在文獻(xiàn)[15]中認(rèn)為現(xiàn)有代碼多樣化技術(shù)的最大缺陷是及時(shí)性的不足: 利用了信息泄露漏洞的代碼重用攻擊可以在運(yùn)行時(shí)讀取生成代碼并利用其構(gòu)建ROP攻擊,從而完全繞過(guò)代碼多樣化防御。Athanasakis用上述方法成功攻擊了Firefox和Internet Explorer兩款常用瀏覽器。

    表1 強(qiáng)制性防御有效性衡量

    表2 閃避防御有效性的衡量

    6.2 防御成本

    除了提高攻擊成本的能力,衡量面向動(dòng)態(tài)生成代碼的防御手段的實(shí)用性還需要考慮系統(tǒng)性能損失、實(shí)現(xiàn)復(fù)雜度、是否需要源代碼等因素。表 3從保護(hù)對(duì)象、系統(tǒng)性能損失、代碼修改量和是否需要源代碼四個(gè)方面對(duì)研究者提出的各種防御技術(shù)的防御成本進(jìn)行對(duì)比分析。

    系統(tǒng)性能損失是動(dòng)態(tài)代碼生成場(chǎng)景下最重要的防御成本因素。動(dòng)態(tài)代碼生成系統(tǒng)的可用性不應(yīng)被防御技術(shù)損害。特別是更快、更高效是在瀏覽器,Flash Player等程序中應(yīng)用動(dòng)態(tài)代碼生成的主要目的,因此動(dòng)態(tài)代碼生成安全加固措施應(yīng)當(dāng)具有較低的運(yùn)行時(shí)開銷。如果運(yùn)行時(shí)時(shí)間開銷超過(guò)5%~10%,工業(yè)界就不愿犧牲性能而采取這樣的防御措施[6]。

    代碼修改行數(shù)體現(xiàn)了防御機(jī)制的復(fù)雜性。復(fù)雜的安全機(jī)制需要投入更多資源實(shí)現(xiàn),同時(shí)復(fù)雜性本身也會(huì)帶來(lái)新的缺陷和漏洞。黑盒的防御方式(如Librando)不需要對(duì)保護(hù)對(duì)象的源代碼進(jìn)行修改。

    源代碼需求對(duì)部署防御的可行性有一定影響: 1)依賴源代碼的防御手段在不開源的動(dòng)態(tài)代碼生成器上就不適用; 2)在新的威脅出現(xiàn)時(shí),不需要修改程序源代碼的防御措施(例如Librando)可以迅速給系統(tǒng)打補(bǔ)丁而無(wú)需等待廠商推出安全補(bǔ)丁。

    7 技術(shù)展望

    攻擊動(dòng)態(tài)生成代碼系統(tǒng)的難度隨著防御機(jī)制發(fā)展不斷增加,需要針對(duì)系統(tǒng)防御機(jī)制研究攻擊技術(shù)。

    防御技術(shù)的有效性和開銷依然存在矛盾(例如:細(xì)粒度的控制流完整性具有較高的運(yùn)行時(shí)開銷),所以有必要研究運(yùn)行時(shí)開銷更少且不削弱防御有效性的防御技術(shù)。

    與細(xì)粒度的控制流完整性保護(hù)相比,Kuznetsov在 2014年提出的代碼指針完整性(Code pointer integrity,簡(jiǎn)稱 CPI)[62]是一種同樣有效,并且運(yùn)行時(shí)開銷更小的強(qiáng)制性防御技術(shù),其實(shí)現(xiàn)已經(jīng)開源。但將CPI應(yīng)用于動(dòng)態(tài)代碼生成還存在著很大的挑戰(zhàn),因此仍然需要對(duì)適用于動(dòng)態(tài)代碼生成的代碼指針完整性進(jìn)行深入的研究。

    表3 防御成本衡量

    閃避防御及其理論仍然處于起步階段,依然有許多問(wèn)題等待進(jìn)一步研究解決。例如: 面向動(dòng)態(tài)生成代碼的多樣性防御技術(shù)不能有效防御內(nèi)存泄露攻擊[38,40]盡管最近研究者們提出了一些應(yīng)對(duì)信息泄露攻擊的防御技術(shù)[63,64],但還并沒(méi)有被工業(yè)界采用。而且,將此類技術(shù)應(yīng)用于動(dòng)態(tài)代碼生成存在著新的挑戰(zhàn)。

    對(duì)于動(dòng)態(tài)代碼生成系統(tǒng)源代碼不可得的情況,依然缺少低開銷的黑盒防御技術(shù)。因此有必要對(duì)高效的黑盒防御技術(shù)展開研究。

    沒(méi)有一種防御手段能夠一勞永逸地解決所有安全問(wèn)題。為保護(hù)動(dòng)態(tài)代碼生成,需要將不同的防御手段結(jié)合起來(lái)。組合防御的優(yōu)點(diǎn)在于防御手段可以相互補(bǔ)充彼此的弱點(diǎn)。強(qiáng)制性防御和閃避防御的巧妙組合將可能增加系統(tǒng)的安全性[63,64]。理想的分層布置防御應(yīng)當(dāng)使得攻擊成本能夠隨防御層數(shù)增加而指數(shù)性增長(zhǎng)[65],而實(shí)際中防御手段的組合只能線性提高攻擊難度,因此更有效的組合防御方法還有待研究。

    8 總結(jié)

    動(dòng)態(tài)代碼生成在運(yùn)行時(shí)生成、修改可執(zhí)行代碼的特性作為提高動(dòng)態(tài)語(yǔ)言執(zhí)行速度和實(shí)現(xiàn)虛擬化的關(guān)鍵技術(shù),也可以被攻擊者利用實(shí)現(xiàn)任意代碼執(zhí)行或高級(jí)可持續(xù)威脅。如今動(dòng)態(tài)代碼生成的應(yīng)用場(chǎng)景幾乎無(wú)處不在,其安全性問(wèn)題尤為重要。本文對(duì)面向動(dòng)態(tài)代碼生成的攻擊和防御技術(shù)進(jìn)行了綜述。介紹了動(dòng)態(tài)生成代碼的數(shù)據(jù)平面和代碼平面耦合導(dǎo)致的安全問(wèn)題,針對(duì)動(dòng)態(tài)代碼生成的代碼注入攻擊和代碼重用攻擊的特點(diǎn),分析了對(duì)應(yīng)防御方法的實(shí)現(xiàn)方法,并對(duì)防御效果進(jìn)行了衡量。

    目前,工業(yè)界對(duì)于動(dòng)態(tài)生成代碼防御并無(wú)成熟的解決方案,其攻防關(guān)鍵技術(shù)(例如: 高級(jí)ROP攻擊與防御、軟件多樣化和閃避防御)的研究狀態(tài)還處在“魔高一尺,道高一丈”的對(duì)抗發(fā)展階段。安全性和防御成本依然是需要權(quán)衡的矛盾,有效且低成本的防御技術(shù)是研究的重點(diǎn)。

    致 謝

    在此向?qū)Ρ疚牡墓ぷ鹘o予建議的龔曉銳老師和給我們提出建議的評(píng)審專家 表示感謝。

    [1] “V8 JavaScript Engine,” Google,https://developers.google.com/ v8/design.

    [2] “SpiderMonkey 1.8.8,”Mozilla,2014.

    [3] “Java Hotspot,” Oracle,http://www.oracle.com/technetwork/java/ whitepaper-135217.html.

    [4] Facebook. HHVM. http://hhvm.com/.

    [5] F. Bellard,“QEMU,a Fast and Portable Dynamic Translator,” in Proceedings of the annual conference on USENIX Annual Technical Conference(ATEC’05),pp. 41–46,2005.

    [6] L. Szekeres,M. Payer,T. Wei and D. Song,“SoK: Eternal war in memory,” in Proc. IEEE Symp. Security and Privacy(SP’13),pp. 48-62,2013.

    [7] One A. “Smashing the stack for fun and profit,” Phrack magazine,vol. 7,no. 49,pp. 14-16,1996.

    [8] R. Roemer,E. Buchanan,H. Shacham,and S. Savage,“Return-oriented programming: Systems,languages,and applications,”In ACM Transactions on Information and System Security (TISSEC),vol. 15,no. 1,pp. 2,2012.

    [9] T. Bletsch,“Code-reuse attacks: new frontiers and defenses [Ph.D. dissertation],” North Carolina State University,2011.

    [10] M. Abadi,M. Budiu,ú. Erlingsson,and J. Ligatti,“Control-flow integrity principles,implementations,and applications,” In ACM Transactions on Information System Security (TISSEC),vol. 13,no. 4,2009.

    [11] P. Larsen,A. Homescu,S. Brunthaler and M. Franz,“SoK: Automated Software Diversity,” In Proc. IEEE Symp. Security and Privacy(SP’14),pp. 276-291,2014.

    [12] D. Blazakis,“Interpreter exploitation,” In Proceedings of the 4th USENIX conference on Offensive technologies,2010.

    [13] C. Rohlf and Y. Ivnitskiy. “Attacking clientside JIT compilers,”Black Hat USA,2011.

    [14] P. Pie,“chrome on Android exploit writeup,” Mobile Pwn2Own,Autumn,2013.

    [15] Athanasakis M,Athanasopoulos E,Polychronakis M,et al. “The Devil is in the Constants: Bypassing Defenses in Browser JIT Engines,” In Proceedings of the 2015 Network and Distributed System Security (NDSS) Symposium. 2015.

    [16] “Flash JIT – Spraying info leak gadgets,” F. J. Serna,http:// zhodiac.hispahack.com/my-stuff/security/Flash_Jit_InfoLeak_Gadgets .pdf,July,2013.

    [17] “Writing JIT-spray shellcode for fun and profit,” A. Sintsov,https://packetstormsecurity.com/files/download/ 86975/Writing-JIT-Spray-Shellcode.pdf,2010.

    [18] C. Song,C. Zhang,T. Wang,W. Lee and D. Melski,“Exploiting and Protecting Dynamic Code Generation,” In Proceedings of the 2015 Network and Distributed System Security (NDSS) Symposium,2015.

    [19] P. Chen,Y. Fang,B. Mao and X. Li,“JITDefender: A defense against JIT spraying attacks.” In Future Challenges in Security and Privacy for Academia and Industry,Springer Berlin Heidelberg,pp. 142-153,2011.

    [20] M. Jauernig,M. Neugschwandtner,C. Platzer and P.M. Comparetti,“Lobotomy: An Architecture for JIT Spraying Mitigation,” In Proceedings of the Ninth International Conference on Availability,Reliability and Security(ARES),pp. 50-58,2014.

    [21] J. Ansel,P. Marchenko,ú Erlingsson,E. Taylor,B. Chen,D. Sehr,C.L. Biffle and B. Yee,“Language-independent sandboxing of just-in-time compilation and self-modifying code,” In ACM SIGPLAN Notices,vol. 46,no. 6,pp. 355-366,2011.

    [22] B. Niu,G. Tan,“RockJIT: Securing just-in-time compilation using modular control-flow integrity,” In Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security(CCS’14),pp. 1317-1328,2014.

    [23] R. Wu,P. Chen,B. Mao and L. Xie. “RIM: A Method to Defend from JIT Spraying Attack,” In Proceedings of the Seventh International Conference on Availability,Reliability and Security(ARES),pp. 143-148,2012.

    [24] T. Wei,T. Wang,L. Duan and J. Luo. “INSeRT: Protect dynamic code generation against spraying,” In Proceedings of InternationalConference on Information Science and Technology (ICIST),pp. 323-328,2011.

    [25] A. Homescu,S. Brunthaler,P. Larsen and M. Franz,“l(fā)ibrando: Transparent code randomization for just-in-time compilers,” In Proceedings of the 2013 ACM SIGSAC conference on Computer and Communications Security(CCS’13),pp. 993-1004,2013.

    [26] P. Chen,R. Wu,B. Mao,“JITSafe: a framework against Just-in-time spraying attacks,” In IET Information Security, vol.7 no.4 pp. 283-292,2013.

    [27] W. De Groef,N. Nikiforakis,Y. Younan,and F. Piessens. “Jitsec: Just-in-time security for code injection attacks,” In Proceedings of the Conference on Security and Privacy in Wireless and Mobile Networks,pp. 1-15,2010.

    [28] C. Zhang,M. Niknami,K. Chen,C. Song,Z. C and D. Song,“JITScope: Protecting web users from control-flow hijacking attacks,” In Proceedings of 2015 IEEE Conference on Computer Communications (INFOCOM),pp. 567-575,2015.

    [29] J. Li,X. Ma and C. Zhu,“Dynamic Binary Translation and Optimization,” Journal of Computer Research and Development,vol. 44,no. 1,pp.161-168,2007. (李劍慧,馬湘寧,朱傳琪,“動(dòng)態(tài)二進(jìn)制翻譯與優(yōu)化技術(shù)研究”,計(jì)算機(jī)研究與發(fā)展,2007,44(1): 161-168.)

    [30] T. Bai,X. Feng,C,Wu and Z. Zhang,“Optimizing Dynamic Binary Translator in DigitalBridge,” Journal of Computer Engineering,vol. 31,no.10,pp. 103-105,2005. (白童心,馮曉兵,武成崗,張兆慶,“優(yōu)化動(dòng)態(tài)二進(jìn)制翻譯器DigitalBridge”,計(jì)算機(jī)工程,2005,31(10).)

    [31] C.K. Luk,R. Cohn,R. Muth,H. Ratil,A. Klauser,G. Lowney,S. Wallace,V.J. Reddi and K. Hazelwood,“Pin: building customized program analysis tools with dynamic instrumentation,” In ACM Sigplan Notices,vol. 40,no. 6,pp. 190-200,2005.

    [32] E.G. Barrantes,D.H. Ackley,T.S. Palmer,D. Stefanovic and D.D. Zovi,“Randomized instruction set emulation to disrupt binary code injection attacks,” In Proceedings of the 10th ACM conference on Computer and communications security,pp. 281-289,2003.

    [33] J. Wu,“Meaning and Vision of Mimic Computing and Mimic Security Defense,” in Telecommunications Science,vol. 1,no.7,pp. 1-7,2014. (鄔江興,“專題導(dǎo)讀--擬態(tài)計(jì)算與擬態(tài)安全防御的原意和愿景”,電信科學(xué),2014,30(7): 1-7.)

    [34] R. Skowyra,K. Casteel,H. Okhravi,N. Zeldovich and W. Streilein,“Systematic Analysis of Defenses against Return-Oriented Programming,” In Research in Attacks,Intrusions,and Defenses,Springer Berlin Heidelberg,pp. 82-102,2013.

    [35] H. Shacham,M. Page,B. Pfaff,E. Goh,N. Modadugu and D. Boneh. “On the effectiveness of address-space randomization,” In Proceedings of the 11thACM conference on Computer and communications security(CCS’04),pp. 298-307,2004.

    [36] Strackx R,Younan Y,Philippaerts P,F. Piessens,S. Lachmund and T. Walter. “Breaking the memory secrecy assumption,” In Proceedings of the Second European Workshop on System Security(EUROSEC’09),pp. 1-8,2009.

    [37] G.F. Roglia,L. Martignoni,R. Paleari and D. Bruschi. “Surgically returning to randomized lib (c),” in Proceedings of the 25th Annual Computer Security Applications Conference(ACSAC’09),pp. 60-69,2009.

    [38] A. Bittau,A. Belay,A. Mashtizadeh and D. Boneh,“Hacking blind,” In Proceedings of the 35thIEEE Symposium on Security and Privacy(SP’14),pp. 227-242,2014.

    [39] F.J. Serna,“The info leak era on software exploitation,” Black Hat USA,2012.

    [40] K.Z. Snow,F. Monrose,L. Davi,A. Dmitrienko,C. Liebchen and A. Sadeghi,“Just-in-time code reuse: On the effectiveness of fine-grained address space layout randomization,” In Proceedings of the 34thIEEE Symposium on Security and Privacy(SP’13),pp. 574-588,2013.

    [41] C. Zhang,T. Wei,Z. Chen,L. Duan,L. Szekeres,S. McCamant,D. Song and W. Zou,“Practical control flow integrity and randomization for binary executables,” In Proceedings of the 34thIEEE Symposium on Security and Privacy(SP’13),pp. 559-573,2013.

    [42] B. Niu,G. Tan,“Modular control-flow integrity,” In Proceedings of the 35th ACM SIGPLAN Conference on Programming Language Design and Implementation(PLDI’14),pp. 577-587,2014.

    [43] M. Zhang M,R. Sekar,“Control Flow Integrity for COTS Binaries,” In Proceeding of the 22nd USENIX Security Symposium(SEC’13),pp. 337-352,2013.

    [44] S. Jajodia,A.K. Ghosh,V. Swarup,C. Wang and X.S. Wang,“Moving Target Defense,” Springer,2011.

    [45] “Safari JS JITed Shellcode,” A. Sintsov,http://www.exploit-db. com/exploits/14221/ ,2010.

    [46] M. Egele,P. Wurzinger,C. Kruegel and E. Kirda,“Defending browsers against drive-by downloads: Mitigating heap-spraying code injection attacks,” In Detection of Intrusions and Malware,and Vulnerability Assessment. Springer Berlin Heidelberg,pp. 88-106,2009.

    [47] C. Rohlf,Y. Ivnitskiy,“The security challenges of client-side just-in-time engines,” In IEEE Security & Privacy,vol. 10,no. 2,pp. 84-86,2012.

    [48] K. Onarlioglu,L. Bilge,A. Lanzi,D. Balzarotti and E. Kirda,“G-Free: defeating return-oriented programming through gadgetless binaries,” In Proceedings of the 26thAnnual Computer Security Applications Conference(ACSAC’10),pp. 49-58,2010.

    [49] C. Zhang,T. Wang,T. Wei,Y. Chen and W. Zou,“IntPatch: Auto-matically fix integer-overflow-to-buffer- overflow vulnerability at compile-time,” InProceedings of the 15thEuropean conference on Research in computer security(ESORICS’10),pp. 71-86,2010.

    [50] J. Ye,C. Zhang and X. Han,“POSTER: UAFChecker: Scalable Static Detection of Use-After-Free Vulnerabilities,” InProceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security(CCS’14),pp. 1529-1531,2014.

    [51] M. Sutton,A. Greene and P. Amini,“Fuzzing: brute force vulnerability discovery,”Pearson Education,2007.

    [52] T. Wang,T. Wei,G. Gu and W. Zou,“TaintScope: A checksum-aware directed fuzzing tool for automatic software vulnerability detection,” InProceedings of the 31thIEEE Symposium on Security and Privacy(SP’10),pp. 497-512,2010.

    [53] “Web Workers,” W3C,http://www.w3.org/TR/workers/,2012.

    [54] T. Garfinkel,B. Pfaff,M. Rosenblum,“Ostia: A Delegating Architecture for Secure System Call Interposition,” InProceedings of the 2004 Network and Distributed System Security (NDSS) Symposium,2004.

    [55] B. Yee,D. Sehr,G. Dardyk,J.B. Chen,R. Myth,T. Ormandy,S. Okasaka,N. Narula and N. Fullagar. “Native client: A sandbox for portable,untrusted x86 native code,” InProceedings of the 30thIEEE Symposium on Security and Privacy(SP’09),pp. 79-93,2009.

    [56] N. Carlini,D. Wagner,“Rop is still dangerous: Breaking modern defenses,” InProceeding of the 23rdUSENIX Security Symposium(SEC’14),pp. 385-399,2014.

    [57] E. G?ktas,E. Athanasopoulos,H. Bos and G. Portokalidis,“Out of control: Overcoming control-flow integrity,” InProceedings of the 35thIEEE Symposium on Security and Privacy(SP’14),pp. 575-589,2014.

    [58] Stamp M,“Information security: principles and practice,”JohnWiley & Sons,2011.

    [59] T. Hobson,H. Okhravi,D. Bigelow,R. Rudd and W. Streilein,“On the Challenges of Effective Movement,” InProceedings of the First ACM Workshop on Moving Target Defense(MTD 2014),pp. 41-50,2014.

    [60] J. Xu,P. Guo,M. Zhao,R.F. Erbacher,M. Zhu and P. Liu,“Comparing Different Moving Target Defense Techniques,” InProceedings of the First ACM Workshop on Moving Target Defense(MTD 2014),pp. 97-107,2014.

    [61] G. Cybenko and J. Hughes,“No free lunch in cyber security,” InProceedings of the First ACM Workshop on Moving Target Defense(MTD 2014),pp. 1-12,2014.

    [62] V. Kuznetsov,L. Szekeres,M. Payer,G. Candea,R. Sekar and D. Song,“Code Pointer Integrity,” inProceedings of the 11th USENIX conference on Operating Systems Design and Implementation(OSDI’14),pp. 147-163,2014.

    [63] L. Davi,C. Liebchen,A. Sadeghi,K.Z. Snow and F. Monrose,“Isomeron: Code randomization resilient to (just-in-time) return-oriented programming,” InProceedings of the 22ndNetwork and Distributed System Security (NDSS) Symposium. 2015.

    [64] V. Mohan and P. Larsen,S. Brunthaler,K. Hamlen and M. Franz,“Opaque control-flow integrity,” InProceedings of the 22ndNetwork and Distributed System Security (NDSS) Symposium,2015.

    [65] S.M. Bellovin,“On the brittleness of software and the infeasibility of security metrics,” InIEEE Security & Privacy,vol. 4,no. 4,pp. 96-96,2006.

    [66] “The Enhanced Mitigation Experience Toolkit,” Microsoft,https:// support.microsoft.com/en-us/kb/2458544.

    [67] “grsecurity,” grsecurity,http://grsecurity.net/features.php.

    [68] “Usage of JavaScript for websites,” W3techs,http://w3techs.com/ technologies/details/cp-JavaScript/all/all,2014.

    Survey on Attacking and Defending Technologies of Dynamic Code Generation

    WU Wei, HUO Wei, ZOU Wei
    Institute of Information Engineering,Chinese Academy of Sciences,Beijing 100093,China Key Laboratory of Network Assessment Technology,Chinese Academy of Sciences,Beijing 100195,China Beijing Key Laboratory of Network Security and Protection Technology,Beijing 100195,China University of Chinese Academy of Sciences,Beijing 100049,China

    Dynamic code generation (DCG) is a technique widely deployed in important daily software such as web browser and Flash player. The threat posed by dynamic code generation has gained more and more attention in recent years because it provides new opportunities for control flow hijacking attack. In this paper,we summarize new control flow hijack attacks against DCG based on the paradigm that DCG generates executable code according to input program on-the-fly in two categories: code injection attack and code reuse attack. We systematically present the defense mechanisms for DCG in two categories: enforcement-based defense and moving target defense. We propose a model to evaluate existing defense technology based on defense benefit and defense cost. We also analyze the developing trend of attacking/defending technologies on dynamic code generation and give some suggestions on future research.

    software security; JIT compilation; dynamic binary translation; control flow hijack; defense mechanism

    吳煒 2014年在中國(guó)科學(xué)技術(shù)大學(xué)信息安全專業(yè)獲得學(xué)士學(xué)位?,F(xiàn)在中國(guó)科學(xué)院信息工程研究所攻讀博士學(xué)位。研究領(lǐng)域?yàn)榫W(wǎng)絡(luò)與軟件安全。研究興趣包括: 漏洞挖掘與利用、程序分析及網(wǎng)絡(luò)對(duì)抗技術(shù)。Email: wuwei@iie.ac.cn

    霍瑋 博士,副研究員。2010年在中國(guó)科學(xué)院計(jì)算技術(shù)研究所獲得博士學(xué)位。主要研究方向?yàn)檐浖┒赐诰蚝桶踩u(píng)測(cè)、基于大數(shù)據(jù)的軟件安全分析、智能終端系統(tǒng)及應(yīng)用安全分析等。Email: huowei@iie. ac.cn

    鄒維 研究員、博士生導(dǎo)師。現(xiàn)任中國(guó)科學(xué)院信息工程研究所副所長(zhǎng)。中國(guó)科學(xué)院“百人計(jì)劃”人選,中國(guó)計(jì)算機(jī)學(xué)會(huì)優(yōu)秀博士論文指導(dǎo)教師。研究領(lǐng)域包括網(wǎng)絡(luò)與軟件安全、攻防對(duì)抗理論與技術(shù)等。Email: zouwei@iie.ac.cn

    TP 309.1 DOI號(hào) 10.19363/j.cnki.cn10-1380/tn.2016.04.005

    霍瑋,博士,副研究員,Email: huowei@iie.ac.cn。

    本課題得到中國(guó)科學(xué)院百人計(jì)劃[人字(2013)46號(hào)]、北京市科委重點(diǎn)項(xiàng)目課題“行業(yè)場(chǎng)景構(gòu)建與漏洞分析關(guān)鍵技術(shù)研究”(D161100001216001)和中國(guó)科學(xué)院戰(zhàn)略性先導(dǎo)科技專項(xiàng)“重點(diǎn)行業(yè)應(yīng)用系統(tǒng)信息安防關(guān)鍵技術(shù)研究”(XDA06010703)資助。

    2016-06-15; 修改日期: 2016-08-03; 定稿日期: 2016-10-10

    猜你喜歡
    代碼生成控制流編譯器
    抵御控制流分析的Python 程序混淆算法
    工控系統(tǒng)中PLC安全漏洞及控制流完整性研究
    電子科技(2021年2期)2021-01-08 02:25:58
    抵御控制流分析的程序混淆算法
    Lustre語(yǔ)言可信代碼生成器研究進(jìn)展
    基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
    代碼生成技術(shù)在軟件開發(fā)中的應(yīng)用
    電子世界(2016年15期)2016-08-29 02:14:28
    基于XML的代碼自動(dòng)生成工具
    電子科技(2015年2期)2015-12-20 01:09:20
    基于控制流隱藏的代碼迷惑
    通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
    基于關(guān)系數(shù)據(jù)模型代碼生成器的設(shè)計(jì)與實(shí)現(xiàn)
    国产成人91sexporn| 亚洲精品日韩在线中文字幕| 日本一区二区免费在线视频| 美女主播在线视频| 91麻豆av在线| 黄色毛片三级朝国网站| 精品国产超薄肉色丝袜足j| 亚洲欧美色中文字幕在线| 亚洲av日韩精品久久久久久密 | 少妇的丰满在线观看| 色网站视频免费| 日韩熟女老妇一区二区性免费视频| 亚洲国产欧美一区二区综合| 国产伦人伦偷精品视频| 久久久欧美国产精品| 国产黄频视频在线观看| 中文字幕人妻熟女乱码| 亚洲欧美一区二区三区黑人| 成人免费观看视频高清| 极品少妇高潮喷水抽搐| 国产av国产精品国产| 国产高清国产精品国产三级| av片东京热男人的天堂| 国产精品一区二区在线观看99| 久久久久久久大尺度免费视频| 婷婷色av中文字幕| 黄网站色视频无遮挡免费观看| 精品一区二区三卡| 中文字幕另类日韩欧美亚洲嫩草| 欧美人与性动交α欧美精品济南到| 又粗又硬又长又爽又黄的视频| 男女高潮啪啪啪动态图| 曰老女人黄片| 久久久国产欧美日韩av| 成人亚洲欧美一区二区av| 婷婷色综合大香蕉| av国产精品久久久久影院| 国产亚洲av高清不卡| 精品亚洲成a人片在线观看| 在线观看免费午夜福利视频| 日本wwww免费看| 亚洲色图 男人天堂 中文字幕| 丝袜美腿诱惑在线| 精品免费久久久久久久清纯 | 日本色播在线视频| 亚洲色图 男人天堂 中文字幕| 一级,二级,三级黄色视频| 国产免费现黄频在线看| 亚洲精品美女久久av网站| 国产在线观看jvid| 婷婷成人精品国产| 建设人人有责人人尽责人人享有的| 久久 成人 亚洲| 伦理电影免费视频| 亚洲欧洲日产国产| 日韩av免费高清视频| 成人影院久久| 午夜91福利影院| 久久人人97超碰香蕉20202| 1024香蕉在线观看| 国产精品一国产av| 高潮久久久久久久久久久不卡| 亚洲成人免费电影在线观看 | 日日夜夜操网爽| 丰满饥渴人妻一区二区三| 久久天堂一区二区三区四区| 两性夫妻黄色片| 久久人人爽av亚洲精品天堂| 蜜桃国产av成人99| 国产成人一区二区在线| 欧美日韩成人在线一区二区| 久久99热这里只频精品6学生| 亚洲午夜精品一区,二区,三区| 日韩一区二区三区影片| 精品一区二区三区四区五区乱码 | 一级黄片播放器| 男人爽女人下面视频在线观看| 啦啦啦在线免费观看视频4| 精品少妇久久久久久888优播| 一级毛片电影观看| 欧美精品av麻豆av| 看免费av毛片| 熟女少妇亚洲综合色aaa.| 青春草亚洲视频在线观看| 国产亚洲欧美精品永久| 亚洲欧美成人综合另类久久久| 观看av在线不卡| 国产精品秋霞免费鲁丝片| 免费女性裸体啪啪无遮挡网站| 99国产精品一区二区蜜桃av | 在线观看一区二区三区激情| 欧美激情高清一区二区三区| 色综合欧美亚洲国产小说| 国产精品久久久久久精品电影小说| 男女无遮挡免费网站观看| 男的添女的下面高潮视频| 国产成人啪精品午夜网站| 欧美日韩精品网址| 久久久欧美国产精品| 亚洲人成电影观看| 亚洲精品久久午夜乱码| www.自偷自拍.com| 亚洲九九香蕉| 一级片'在线观看视频| 一二三四在线观看免费中文在| 欧美变态另类bdsm刘玥| 只有这里有精品99| 精品少妇内射三级| 国产av一区二区精品久久| 考比视频在线观看| 在线看a的网站| 国产熟女午夜一区二区三区| 久久免费观看电影| 脱女人内裤的视频| 十分钟在线观看高清视频www| 欧美人与性动交α欧美精品济南到| 日韩一卡2卡3卡4卡2021年| 伊人亚洲综合成人网| 别揉我奶头~嗯~啊~动态视频 | 国产欧美日韩一区二区三 | 建设人人有责人人尽责人人享有的| 亚洲精品在线美女| 婷婷色av中文字幕| av国产精品久久久久影院| 秋霞在线观看毛片| 中文字幕亚洲精品专区| 高清视频免费观看一区二区| 美女主播在线视频| 欧美 亚洲 国产 日韩一| 亚洲精品久久成人aⅴ小说| 亚洲精品日韩在线中文字幕| 亚洲国产精品一区三区| 国产精品国产三级国产专区5o| 捣出白浆h1v1| 爱豆传媒免费全集在线观看| 久热爱精品视频在线9| 人妻一区二区av| 中文字幕人妻熟女乱码| 老司机深夜福利视频在线观看 | 欧美xxⅹ黑人| 操美女的视频在线观看| 一区二区三区四区激情视频| 精品一区二区三区av网在线观看 | 国产片特级美女逼逼视频| 欧美日韩亚洲高清精品| 妹子高潮喷水视频| 久久精品久久久久久久性| 亚洲精品成人av观看孕妇| 欧美+亚洲+日韩+国产| 亚洲av成人不卡在线观看播放网 | www.999成人在线观看| 亚洲男人天堂网一区| 国产熟女欧美一区二区| 视频在线观看一区二区三区| 欧美日韩福利视频一区二区| 免费一级毛片在线播放高清视频 | 国产片特级美女逼逼视频| 蜜桃在线观看..| 免费人妻精品一区二区三区视频| 少妇猛男粗大的猛烈进出视频| 91成人精品电影| 亚洲黑人精品在线| 亚洲精品久久午夜乱码| 日本欧美视频一区| 亚洲熟女精品中文字幕| 热re99久久国产66热| 女人被躁到高潮嗷嗷叫费观| 精品福利观看| 国产真人三级小视频在线观看| 日本a在线网址| 精品福利永久在线观看| 亚洲精品美女久久av网站| 一级毛片黄色毛片免费观看视频| 又大又爽又粗| 亚洲五月婷婷丁香| 久久精品亚洲av国产电影网| 日韩伦理黄色片| 欧美日韩福利视频一区二区| 国产精品 欧美亚洲| 国产免费视频播放在线视频| 啦啦啦在线免费观看视频4| 午夜激情av网站| 少妇粗大呻吟视频| 黄片小视频在线播放| 成在线人永久免费视频| 久久人妻福利社区极品人妻图片 | 久久av网站| 性色av乱码一区二区三区2| 女人精品久久久久毛片| 成年人午夜在线观看视频| 国产真人三级小视频在线观看| 一级毛片黄色毛片免费观看视频| 久久性视频一级片| 高清av免费在线| 国产免费一区二区三区四区乱码| 在线观看www视频免费| 午夜精品国产一区二区电影| 妹子高潮喷水视频| 女人精品久久久久毛片| 亚洲av男天堂| 国产精品九九99| 中文乱码字字幕精品一区二区三区| 日日夜夜操网爽| 国产成人影院久久av| 成人黄色视频免费在线看| 欧美日韩福利视频一区二区| 亚洲国产中文字幕在线视频| a级毛片黄视频| 人妻 亚洲 视频| 日韩大码丰满熟妇| www.精华液| 久久精品国产综合久久久| 你懂的网址亚洲精品在线观看| bbb黄色大片| 国产日韩一区二区三区精品不卡| 美女国产高潮福利片在线看| 91成人精品电影| 亚洲国产欧美一区二区综合| xxxhd国产人妻xxx| 人人妻,人人澡人人爽秒播 | 国产成人精品久久久久久| 各种免费的搞黄视频| 久久精品久久精品一区二区三区| 成年av动漫网址| 国产精品一区二区在线观看99| av网站在线播放免费| 99热全是精品| 亚洲国产日韩一区二区| 首页视频小说图片口味搜索 | 国产精品国产三级专区第一集| 久久久国产一区二区| a级毛片黄视频| 亚洲精品美女久久久久99蜜臀 | 亚洲国产精品国产精品| 女性生殖器流出的白浆| 亚洲国产av影院在线观看| 精品高清国产在线一区| 搡老岳熟女国产| 这个男人来自地球电影免费观看| 午夜免费鲁丝| 国产爽快片一区二区三区| 久久精品国产亚洲av涩爱| 一区二区三区精品91| 黄色毛片三级朝国网站| 亚洲国产毛片av蜜桃av| a级毛片在线看网站| 国产片内射在线| 国产高清视频在线播放一区 | 欧美老熟妇乱子伦牲交| 中文字幕人妻熟女乱码| 欧美乱码精品一区二区三区| 国产一卡二卡三卡精品| 99香蕉大伊视频| 中文乱码字字幕精品一区二区三区| 精品人妻熟女毛片av久久网站| 99精品久久久久人妻精品| 大片免费播放器 马上看| 免费少妇av软件| 日韩一本色道免费dvd| 久久99精品国语久久久| 欧美日韩国产mv在线观看视频| 欧美变态另类bdsm刘玥| 亚洲熟女精品中文字幕| 9191精品国产免费久久| av在线老鸭窝| 天天躁狠狠躁夜夜躁狠狠躁| 999精品在线视频| 欧美日韩黄片免| 国产无遮挡羞羞视频在线观看| 欧美黄色片欧美黄色片| 在线精品无人区一区二区三| 在线av久久热| 亚洲图色成人| 欧美成狂野欧美在线观看| a 毛片基地| 人体艺术视频欧美日本| 日韩一卡2卡3卡4卡2021年| 另类精品久久| 亚洲黑人精品在线| 久久精品亚洲熟妇少妇任你| 黄色一级大片看看| 久久热在线av| 日韩 欧美 亚洲 中文字幕| 久久精品亚洲av国产电影网| 一二三四在线观看免费中文在| 少妇裸体淫交视频免费看高清 | 国产免费视频播放在线视频| 亚洲精品美女久久久久99蜜臀 | 大香蕉久久网| 中国国产av一级| 国产精品香港三级国产av潘金莲 | 国产日韩欧美在线精品| 最黄视频免费看| 美女国产高潮福利片在线看| 国产伦人伦偷精品视频| 亚洲av片天天在线观看| 五月开心婷婷网| 七月丁香在线播放| 欧美性长视频在线观看| 欧美激情极品国产一区二区三区| e午夜精品久久久久久久| 18禁裸乳无遮挡动漫免费视频| 国产亚洲av高清不卡| 日本欧美国产在线视频| 韩国精品一区二区三区| 国产又爽黄色视频| 尾随美女入室| 波野结衣二区三区在线| 制服诱惑二区| 午夜福利影视在线免费观看| 国产精品久久久av美女十八| 亚洲欧洲国产日韩| 啦啦啦啦在线视频资源| 亚洲激情五月婷婷啪啪| 一级a爱视频在线免费观看| 欧美日韩综合久久久久久| 黑人欧美特级aaaaaa片| 久久人人97超碰香蕉20202| 天天躁夜夜躁狠狠久久av| 制服人妻中文乱码| 99久久99久久久精品蜜桃| 热re99久久国产66热| 激情视频va一区二区三区| 欧美黑人精品巨大| 你懂的网址亚洲精品在线观看| 久久午夜综合久久蜜桃| 国产野战对白在线观看| 亚洲免费av在线视频| 韩国高清视频一区二区三区| 女性生殖器流出的白浆| 精品福利永久在线观看| 极品人妻少妇av视频| 老司机在亚洲福利影院| 国产深夜福利视频在线观看| 看免费成人av毛片| 天天操日日干夜夜撸| 久久久久视频综合| 久久久久网色| 男女之事视频高清在线观看 | 久久久久久久大尺度免费视频| 久久性视频一级片| 一二三四在线观看免费中文在| 国产成人精品无人区| 2021少妇久久久久久久久久久| 夫妻性生交免费视频一级片| 一区二区三区乱码不卡18| 老司机影院毛片| 久久综合国产亚洲精品| 国产又色又爽无遮挡免| 精品一区在线观看国产| 新久久久久国产一级毛片| 国产一区二区在线观看av| 国产爽快片一区二区三区| 亚洲一卡2卡3卡4卡5卡精品中文| 国产欧美日韩一区二区三区在线| 黄色片一级片一级黄色片| 亚洲成人免费电影在线观看 | 99久久人妻综合| 亚洲欧美成人综合另类久久久| 天天躁夜夜躁狠狠躁躁| 亚洲伊人久久精品综合| 新久久久久国产一级毛片| 91国产中文字幕| 国产精品99久久99久久久不卡| 精品福利永久在线观看| 一级黄色大片毛片| 狠狠婷婷综合久久久久久88av| 国产在视频线精品| 叶爱在线成人免费视频播放| 欧美性长视频在线观看| av网站免费在线观看视频| 99国产精品一区二区三区| 99国产综合亚洲精品| 精品高清国产在线一区| 叶爱在线成人免费视频播放| 欧美国产精品va在线观看不卡| 天堂中文最新版在线下载| 欧美国产精品va在线观看不卡| 日本a在线网址| 91精品伊人久久大香线蕉| 国产免费现黄频在线看| 国产在视频线精品| 国产成人精品久久二区二区91| 欧美性长视频在线观看| 日韩人妻精品一区2区三区| 一二三四在线观看免费中文在| 亚洲精品自拍成人| 97人妻天天添夜夜摸| 男女边摸边吃奶| 国产片特级美女逼逼视频| 精品福利永久在线观看| 麻豆乱淫一区二区| 婷婷色综合大香蕉| 亚洲精品一区蜜桃| 精品久久蜜臀av无| h视频一区二区三区| 日本猛色少妇xxxxx猛交久久| 久久久精品免费免费高清| 亚洲欧洲精品一区二区精品久久久| 国产av一区二区精品久久| 久久ye,这里只有精品| 午夜福利,免费看| 黄色怎么调成土黄色| www.av在线官网国产| 丝袜美足系列| 国产免费福利视频在线观看| 久热爱精品视频在线9| 国产成人影院久久av| 精品国产超薄肉色丝袜足j| 国产熟女午夜一区二区三区| 亚洲国产精品国产精品| 婷婷丁香在线五月| 热99久久久久精品小说推荐| 精品少妇久久久久久888优播| 一二三四社区在线视频社区8| 精品第一国产精品| 日韩,欧美,国产一区二区三区| 国产人伦9x9x在线观看| 亚洲久久久国产精品| 久久99热这里只频精品6学生| 看十八女毛片水多多多| 免费在线观看视频国产中文字幕亚洲 | 蜜桃国产av成人99| 午夜老司机福利片| 巨乳人妻的诱惑在线观看| 亚洲欧洲国产日韩| 亚洲第一av免费看| 亚洲欧洲精品一区二区精品久久久| av视频免费观看在线观看| 色综合欧美亚洲国产小说| 91成人精品电影| 伊人久久大香线蕉亚洲五| 婷婷色av中文字幕| 国产精品.久久久| 中文字幕最新亚洲高清| 国产日韩欧美亚洲二区| 精品欧美一区二区三区在线| 一区二区日韩欧美中文字幕| 青春草亚洲视频在线观看| 亚洲精品美女久久av网站| 国产成人精品久久二区二区免费| 国产免费福利视频在线观看| 麻豆乱淫一区二区| 黄色片一级片一级黄色片| 丁香六月天网| 免费av中文字幕在线| 国产不卡av网站在线观看| 亚洲情色 制服丝袜| 大香蕉久久网| 不卡av一区二区三区| 天天操日日干夜夜撸| 午夜两性在线视频| 大香蕉久久成人网| 老司机午夜十八禁免费视频| 午夜免费成人在线视频| 在线观看免费午夜福利视频| 免费看av在线观看网站| 99精国产麻豆久久婷婷| 国产精品九九99| 少妇的丰满在线观看| 中文字幕制服av| 国产有黄有色有爽视频| 午夜福利视频精品| 久久精品熟女亚洲av麻豆精品| 视频在线观看一区二区三区| 丝袜脚勾引网站| 亚洲一码二码三码区别大吗| 又黄又粗又硬又大视频| 五月开心婷婷网| 亚洲,一卡二卡三卡| 午夜福利,免费看| 精品第一国产精品| 久久女婷五月综合色啪小说| 婷婷色综合www| 美女大奶头黄色视频| 另类精品久久| 极品人妻少妇av视频| 国产精品香港三级国产av潘金莲 | 赤兔流量卡办理| 久久精品久久精品一区二区三区| 中文字幕另类日韩欧美亚洲嫩草| 一级黄片播放器| 99热国产这里只有精品6| 精品亚洲成a人片在线观看| 夫妻午夜视频| 亚洲国产精品999| 黄色毛片三级朝国网站| 国产福利在线免费观看视频| 国产精品久久久久久精品古装| 国产精品一国产av| 波多野结衣av一区二区av| 成人三级做爰电影| 久久久久精品人妻al黑| 欧美 亚洲 国产 日韩一| 超色免费av| 天堂俺去俺来也www色官网| 如日韩欧美国产精品一区二区三区| 十八禁高潮呻吟视频| av又黄又爽大尺度在线免费看| 黄片小视频在线播放| netflix在线观看网站| 伊人亚洲综合成人网| 欧美成人精品欧美一级黄| 日本vs欧美在线观看视频| 两个人免费观看高清视频| 高潮久久久久久久久久久不卡| 99国产综合亚洲精品| 一级黄色大片毛片| 亚洲国产av新网站| 少妇被粗大的猛进出69影院| av国产精品久久久久影院| 亚洲欧美一区二区三区黑人| 亚洲精品国产区一区二| 成年女人毛片免费观看观看9 | 亚洲av男天堂| 91成人精品电影| 亚洲国产欧美在线一区| 国产成人免费无遮挡视频| 成人国产一区最新在线观看 | 超碰成人久久| 国产成人精品无人区| 97人妻天天添夜夜摸| 亚洲五月婷婷丁香| 欧美成人精品欧美一级黄| 国产精品秋霞免费鲁丝片| 999久久久国产精品视频| 亚洲色图 男人天堂 中文字幕| 国产精品国产三级国产专区5o| 一级,二级,三级黄色视频| 丝袜脚勾引网站| 久久女婷五月综合色啪小说| 日日爽夜夜爽网站| 岛国毛片在线播放| 免费一级毛片在线播放高清视频 | 久久这里只有精品19| 99热全是精品| 超色免费av| 日本av手机在线免费观看| 考比视频在线观看| 国产亚洲午夜精品一区二区久久| 中文字幕制服av| 18禁黄网站禁片午夜丰满| 啦啦啦啦在线视频资源| 69精品国产乱码久久久| 久久人人97超碰香蕉20202| 日本vs欧美在线观看视频| 丝袜喷水一区| 日韩av免费高清视频| 免费看不卡的av| 人人妻人人添人人爽欧美一区卜| 高清视频免费观看一区二区| 免费在线观看日本一区| 99精国产麻豆久久婷婷| 丰满饥渴人妻一区二区三| 首页视频小说图片口味搜索 | 亚洲成人手机| 免费女性裸体啪啪无遮挡网站| 亚洲精品国产区一区二| 午夜激情久久久久久久| 五月开心婷婷网| 日韩 亚洲 欧美在线| 美女主播在线视频| 一区二区日韩欧美中文字幕| 亚洲av片天天在线观看| 免费人妻精品一区二区三区视频| 欧美精品高潮呻吟av久久| 两个人看的免费小视频| 男女免费视频国产| 天天躁夜夜躁狠狠躁躁| 亚洲欧洲精品一区二区精品久久久| 人体艺术视频欧美日本| 婷婷成人精品国产| 亚洲欧洲国产日韩| a级片在线免费高清观看视频| 亚洲国产欧美网| 在线观看免费日韩欧美大片| 国产免费又黄又爽又色| 国产免费视频播放在线视频| 中国美女看黄片| 十八禁高潮呻吟视频| 欧美日韩视频高清一区二区三区二| 国产伦人伦偷精品视频| 纯流量卡能插随身wifi吗| 日韩av免费高清视频| 波野结衣二区三区在线| 激情视频va一区二区三区| 婷婷丁香在线五月| 久久久国产精品麻豆| 又紧又爽又黄一区二区| 菩萨蛮人人尽说江南好唐韦庄| 亚洲男人天堂网一区| 男人爽女人下面视频在线观看| 国产精品秋霞免费鲁丝片| 欧美黄色片欧美黄色片| 亚洲自偷自拍图片 自拍| 在线观看免费午夜福利视频| 热99久久久久精品小说推荐| 老司机深夜福利视频在线观看 | av国产精品久久久久影院| 日韩一本色道免费dvd| 日本91视频免费播放| 亚洲,一卡二卡三卡| 亚洲精品日韩在线中文字幕| 丁香六月天网| 国产av国产精品国产| 又大又爽又粗| 男女午夜视频在线观看| 啦啦啦中文免费视频观看日本| 高清黄色对白视频在线免费看| 亚洲av在线观看美女高潮| 我的亚洲天堂| 日韩一本色道免费dvd| 国产精品麻豆人妻色哟哟久久| 91精品国产国语对白视频| 免费人妻精品一区二区三区视频|