精品免费在线观看-精品欧美-精品欧美成人bd高清在线观看-精品欧美高清不卡在线-精品欧美日韩一区二区

17站長網(wǎng)

17站長網(wǎng) 首頁 安全 安全教程 查看內(nèi)容

怎么利用硬件防御ROP,詳解HA-CFI技術(shù)

2022-9-24 08:44| 查看: 1790 |來源: 互聯(lián)網(wǎng)

Rop是借鑒淘寶開發(fā)平臺實(shí)現(xiàn)的全功能Rest Web Service 開源框架,提供了請求/響應(yīng)序列化、數(shù)據(jù)檢驗(yàn)、會話管理、安全管理等高級主題的東西。 前言 隨著漏洞緩解 ...

Rop是借鑒淘寶開發(fā)平臺實(shí)現(xiàn)的全功能Rest Web Service 開源框架,提供了請求/響應(yīng)序列化、數(shù)據(jù)檢驗(yàn)、會話管理、安全管理等高級主題的東西。

前言

隨著漏洞緩解技術(shù)的不斷發(fā)展,常用的一些漏洞利用手段如ROP變得越來越困難,來自ENDGAME的Cody Pierce發(fā)表了一篇[博客],稱ROP的末日已經(jīng)來臨,新的漏洞緩解技術(shù)將有效應(yīng)對未知的漏洞威脅,并宣布他們實(shí)現(xiàn)了一種全新利用硬件輔助的控制流完整性的防御機(jī)制——HA-CFI。

不過這種論調(diào)向來是要打自己臉的,因?yàn)榭傆行碌穆┒蠢梅绞匠鰻t,永遠(yuǎn)不能低估黑客的想象力。比如Flash推出的一系列漏洞緩解機(jī)制中仍然存在漏洞,這就很尷尬了(CVE-2016-4249,詳情可參考古河在HitCon上的演講)。

知己知彼,百戰(zhàn)不殆。只有充分了解新的漏洞緩解機(jī)制,才能有更好的思路去繞過,才能對未來發(fā)展新的防御機(jī)制更有啟發(fā)。

控制流完整性

控制流完整性(Control Flow Integrity, CFI)是由加州大學(xué)和微軟公司于2005年提出的一種防御控制流劫持攻擊的安全機(jī)制。通過監(jiān)視程序運(yùn)行過程中的控制流轉(zhuǎn)移過程,使其始終處于原有控制流圖所限定的合法范圍內(nèi)。

具體的做法是分析程序的控制流圖,重點(diǎn)關(guān)注間接轉(zhuǎn)移指令,如間接跳轉(zhuǎn)、間接調(diào)用和函數(shù)返回等指令,獲取相應(yīng)的白名單。在程序運(yùn)行過程中對間接轉(zhuǎn)移指令的目標(biāo)進(jìn)行檢查核對,而攻擊者對控制流的劫持會導(dǎo)致目標(biāo)不在白名單中,此時(shí)CFI可迅速進(jìn)行阻斷,保證系統(tǒng)安全。

一般來說,控制流完整性可分為細(xì)粒度和粗粒度兩種實(shí)現(xiàn)方式。細(xì)粒度CFI嚴(yán)格檢查每一個(gè)間接轉(zhuǎn)移指令的轉(zhuǎn)移目標(biāo),但會嚴(yán)重影響程序的執(zhí)行效率;粗粒度CFI將一組或相近類型的目標(biāo)歸到一起進(jìn)行檢查,可在一定程度上降低開銷,但會使安全性降低。

基于硬件的CFI

早期一些CFI思路是基于二進(jìn)制插樁的,最簡單粗暴的方式是在每條控制流轉(zhuǎn)移指令前插入檢驗(yàn)代碼,判斷目標(biāo)地址的合法性。但這種方式的開銷實(shí)在太大,難以在實(shí)際中部署。因此研究人員提出的一些改進(jìn)方法均在效率上進(jìn)行了妥協(xié),放寬了檢查條件。實(shí)質(zhì)上都是粗粒度的CFI,實(shí)際效果會打折扣,可被攻擊者利用繞過。

既然CFI受制于效率,那么是否可以引入硬件機(jī)制來提高效率呢?畢竟相比二進(jìn)制插樁的方式,硬件的開銷幾乎是可以忽略的,但前提是我們必須找到可行的實(shí)施方案。這就需要對處理器平臺上的一些技術(shù)細(xì)節(jié)有所了解。

Intel為了讓用戶能夠更好的對應(yīng)用程序的性能進(jìn)行優(yōu)化,提供了一系列輔助調(diào)試的硬件支持,這里著重介紹LBR(Last Branch Record)、BTS(Branch Trace Store)和PMU(Performance Monitoring Unit),早期的一些研究都是在這些基礎(chǔ)上開展的。

LBR

LBR是Intel提供的一組用于記錄和追蹤程序最近的若干次跳轉(zhuǎn)信息的循環(huán)寄存器組,這些寄存器的數(shù)量與Intel處理器的微架構(gòu)相關(guān),在早幾年的Haswell架構(gòu)中有16個(gè)這樣的寄存器,也就是說可以記錄程序最近的16條跳轉(zhuǎn)指令的信息(包括從哪跳轉(zhuǎn)過來的,將要跳轉(zhuǎn)到哪去),而在最新的Skylake架構(gòu)中有32個(gè)。LBR寄存器的強(qiáng)大之處在于其定制性很強(qiáng),能夠過濾掉一些不重要的跳轉(zhuǎn)指令,而保留需要重點(diǎn)關(guān)注的跳轉(zhuǎn)指令。

BTS

BTS是另一個(gè)用于記錄程序分支信息的功能單元,但與LBR不同的是,BTS不會將程序的跳轉(zhuǎn)指令信息存儲到寄存器中,而是將其存儲至CAR(cache-as-RAM)中或是系統(tǒng)的DRAM中,這里就沒有條數(shù)的限制了,只要空間足夠,BTS可以存儲大量跳轉(zhuǎn)指令的信息。

但另一方面,BTS的時(shí)間開銷要比LBR高出許多。

PMU

PMU是Intel引入的用于記錄處理器事件的功能單元。PMU事件有好幾百個(gè),非常詳盡,包含了處理器在運(yùn)行過程中可能遇到的所有情形,例如指令計(jì)數(shù)、浮點(diǎn)運(yùn)算指令計(jì)數(shù)、L2緩存未命中的時(shí)鐘周期等。當(dāng)然其中也有一個(gè)在HA-CFI中非常有用的事件,分支預(yù)測失敗事件。

HA-CFI基本思路

如果大家對計(jì)算機(jī)體系結(jié)構(gòu)稍有了解就會知道,現(xiàn)代處理器都是采用流水線的方式執(zhí)行指令,而分支預(yù)測是保證其高效的一個(gè)非常重要的技術(shù)。

當(dāng)包含流水線技術(shù)的處理器處理分支指令時(shí)會遇到一個(gè)問題,根據(jù)判定條件的真/假的不同,有可能會產(chǎn)生轉(zhuǎn)跳,而這會打斷流水線中指令的處理,因?yàn)樘幚砥鳠o法確定該指令的下一條指令。流水線越長,處理器等待的時(shí)間便越長,因?yàn)樗仨毜却种е噶钐幚硗戤叄拍艽_定下一條進(jìn)入流水線的指令。分支預(yù)測就是預(yù)測一條可能的分支,讓處理器沿著這條分支流水執(zhí)行下去而不用等待。若預(yù)測成功,那么皆大歡喜,處理器繼續(xù)執(zhí)行下去即可;若預(yù)測失敗,處理器則需要回退到分支位置,重新沿著正確的分支方向執(zhí)行。

分支預(yù)測有許多種策略,如靜態(tài)預(yù)測和動態(tài)預(yù)測等,當(dāng)然學(xué)術(shù)界還有很多其他非常高端的方法。但無論采用何種方式進(jìn)行分支預(yù)測,攻擊者劫持指令流后,其目標(biāo)地址顯然不是處理器能夠預(yù)測到的,必然會產(chǎn)生一個(gè)分支預(yù)測失敗的PMU事件,這相當(dāng)于一個(gè)預(yù)警信息,接下來要做的就是從這類PMU事件中甄別出哪些是正常的分支預(yù)測失敗,哪些是由于攻擊者劫持指令流造成的分支預(yù)測失敗。

僅僅預(yù)警是不夠的,HA-CFI還希望能夠準(zhǔn)確定位指令流被劫持的位置,并及時(shí)進(jìn)行阻斷。此時(shí)PMU就幫不上什么忙了,因?yàn)镻MU只負(fù)責(zé)報(bào)告處理器事件,而不記錄產(chǎn)生該事件的具體指令。當(dāng)某一時(shí)刻PMU報(bào)告一個(gè)分支預(yù)測失敗的事件時(shí),此時(shí)的指令指針可能早已越過了跳轉(zhuǎn)指令,很難回溯定位發(fā)生分支預(yù)測失敗的指令位置。

因此,為了精確定位造成分支預(yù)測失敗的指令,還需要借助LBR的幫助。當(dāng)分支預(yù)測失敗的PMU事件觸發(fā)中斷服務(wù)程序(ISR, Interrupt Service Routines)時(shí),ISR將從LBR中取出最新的若干條間接跳轉(zhuǎn)指令,其中必然包含造成分支預(yù)測失敗的間接跳轉(zhuǎn)指令。而且LBR中還記錄了更為詳細(xì)的信息,可方便ISR核對該間接跳轉(zhuǎn)指令的目標(biāo)地址是否在白名單中。若跳轉(zhuǎn)指令的目標(biāo)不在白名單之中,說明指令流可能遭到劫持,可及時(shí)阻斷。示意圖如下所示:

HA-CFI示意圖

此外,為了進(jìn)一步保證HA-CFI的效率,可以根據(jù)當(dāng)前進(jìn)程的重要性選擇性的開啟或關(guān)閉PMU,如當(dāng)前進(jìn)程為IE或Firefox瀏覽器時(shí),開啟PMU;若當(dāng)前進(jìn)程為Calc.exe這樣不太容易遭受攻擊的進(jìn)程,則關(guān)閉PMU,如圖所示:

選擇性開啟PMU

效果與展望

Cody Pierce等人選取了多個(gè)經(jīng)典的CVE漏洞,與EMET進(jìn)行了比較:

實(shí)驗(yàn)結(jié)果1

實(shí)驗(yàn)結(jié)果2

可以肯定的是,隨著對抗的不斷升級,未來漏洞利用的門檻將越來越高,與防御機(jī)制斗法也將也成為常態(tài)。

除了剛才提到的微軟的EMET,Intel在今年6月發(fā)布了一份關(guān)于CET的技術(shù)前瞻:[Control-flow Enforcement Technology Preview],準(zhǔn)備從硬件層面入手防止ROP和JOP攻擊。通過引入一個(gè)shadow stack(類似的[想法]幾年前也有人提出),專門用于存儲返回地址,每當(dāng)發(fā)生函數(shù)調(diào)用時(shí),除了向當(dāng)前線程棧內(nèi)壓入返回地址,還要向shadow stack中壓入返回地址。返回時(shí)需要檢查線程棧中的返回地址是否與shadow stack中一致,若不一致,說明線程棧可能遭到攻擊者破壞,程序中止。此外,shadow stack處于層層嚴(yán)密防護(hù)之中,普通代碼是無法修改shadow stack的,除非攻擊者能控制內(nèi)核,當(dāng)然這并非不可能,只是攻擊門檻變得很高了。

CET目前仍是一個(gè)前瞻性的技術(shù),距離真正實(shí)現(xiàn)還需要時(shí)間。即使實(shí)現(xiàn)了,也不意味著高枕無憂,HA-CFI也是如此,總有能繞過的方法,總有其未考慮到的情況,甚至可能它本身也存在著缺陷。

tag標(biāo)簽:硬件防御 HA-CFI
本文最后更新于 2022-9-24 08:44,某些文章具有時(shí)效性,若有錯(cuò)誤或已失效,請?jiān)诰W(wǎng)站留言或聯(lián)系站長:17tui@17tui.com
·END·
站長網(wǎng)微信號:w17tui,關(guān)注站長、創(chuàng)業(yè)、關(guān)注互聯(lián)網(wǎng)人 - 互聯(lián)網(wǎng)創(chuàng)業(yè)者營銷服務(wù)中心

免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系我們及時(shí)修正或刪除。謝謝!

17站長網(wǎng)微信二維碼

始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長轉(zhuǎn)型升級,為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營銷服務(wù),與站長一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨(dú)!

掃一掃,關(guān)注站長網(wǎng)微信

大家都在看

    熱門排行

      最近更新

        返回頂部
        主站蜘蛛池模板: 国产成人免费无庶挡视频 | 中文字幕第一页面 | 青青操国产在线 | 国产精品91av | jizz国产精品免费麻豆 | 久久综久久美利坚合众国 | 亚洲免费在线视频播放 | 在线视频观看一区 | 在线观看一区 | 91精品国产免费久久久久久 | 国产制服 国产制服一区二区 | 色综合图片| 国产小说 | 中文字幕最新中文字幕中文字幕 | 91精品国产色综合久久不卡蜜 | 特级黄一级播放 | 亚洲高清视频免费 | 亚洲国产精品第一区二区三区 | 国产精品视频在线观看 | 91sao在线看片水片 | 免费一级a毛片夜夜看 | 男女交性粗大视频播放 | 一级做a爰片性色毛片视频图片 | 午夜亚洲一区 | 亚洲综合图区 | 欧美一级毛片aaaaa | 国产精品久久久久久小说 | 免费观看黄色网址 | 鲁丝片一区二区三区毛片 | 亚洲国产视频在线观看 | 特级aa一级欧美毛片 | 2022av视频 | 亚洲国产成人久久精品图片 | 亚洲精品欧美精品 | 91手机在线视频观看 | 国产成人在线网站 | 亚洲国产午夜精品乱码 | 国产视频在线播放 | 涩涩国产精品福利在线观看 | 日韩欧美一区黑人vs日本人 | 91久久福利国产成人精品 |