浅析A-CFI技术:如何利用硬件防御ROP

0x00 前言

随着漏洞缓解技术的不断发展,常用的一些漏洞利用手段如ROP变得越来越困难,来自ENDGAME的Cody
Pierce发表了一篇[博客],称ROP的末日已经来临,新的漏洞缓解技术将有效应对未知的漏洞威胁,并宣布他们实现了一种全新利用硬件辅助的控制流完整性的防御机制——HA-CFI。

不过这种论调向来是要打自己脸的,因为总有新的漏洞利用方式出炉,永远不能低估黑客的想象力。比如Flash推出的一系列漏洞缓解机制中仍然存在漏洞,这就很尴尬了(CVE-2016-4249,详情可参考古河在HitCon上的演讲)。

知己知彼,百战不殆。只有充分了解新的漏洞缓解机制,才能有更好的思路去绕过,才能对未来发展新的防御机制更有启发。

0x01 控制流完整性

控制流完整性(Control Flow Integrity, CFI)是由加州大学和微软公司于2005年提出的一种防御控制流劫持攻击的安全机制。通过监视程序运行过程中的控制流转移过程,使其始终处于原有控制流图所限定的合法范围内。

具体的做法是分析程序的控制流图,重点关注间接转移指令,如间接跳转、间接调用和函数返回等指令,获取相应的白名单。在程序运行过程中对间接转移指令的目标进行检查核对,而攻击者对控制流的劫持会导致目标不在白名单中,此时CFI可迅速进行阻断,保证系统安全。

一般来说,控制流完整性可分为细粒度和粗粒度两种实现方式。细粒度CFI严格检查每一个间接转移指令的转移目标,但会严重影响程序的执行效率;粗粒度CFI将一组或相近类型的目标归到一起进行检查,可在一定程度上降低开销,但会使安全性降低。

0x02 基于硬件的CFI

早期一些CFI思路是基于二进制插桩的,最简单粗暴的方式是在每条控制流转移指令前插入检验代码,判断目标地址的合法性。但这种方式的开销实在太大,难以在实际中部署。因此研究人员提出的一些改进方法均在效率上进行了妥协,放宽了检查条件。实质上都是粗粒度的CFI,实际效果会打折扣,可被攻击者利用绕过。

既然CFI受制于效率,那么是否可以引入硬件机制来提高效率呢?毕竟相比二进制插桩的方式,硬件的开销几乎是可以忽略的,但前提是我们必须找到可行的实施方案。这就需要对处理器平台上的一些技术细节有所了解。

Intel为了让用户能够更好的对应用程序的性能进行优化,提供了一系列辅助调试的硬件支持,这里着重介绍LBR(Last Branch
Record)、BTS(Branch Trace Store)和PMU(Performance Monitoring
Unit),早期的一些研究都是在这些基础上开展的。

LBR

LBR是Intel提供的一组用于记录和追踪程序最近的若干次跳转信息的循环寄存器组,这些寄存器的数量与Intel处理器的微架构相关,在早几年的Haswell架构中有16个这样的寄存器,也就是说可以记录程序最近的16条跳转指令的信息(包括从哪跳转过来的,将要跳转到哪去),而在最新的Skylake架构中有32个。LBR寄存器的强大之处在于其定制性很强,能够过滤掉一些不重要的跳转指令,而保留需要重点关注的跳转指令。

BTS

BTS是另一个用于记录程序分支信息的功能单元,但与LBR不同的是,BTS不会将程序的跳转指令信息存储到寄存器中,而是将其存储至CAR(cache-as-RAM)中或是系统的DRAM中,这里就没有条数的限制了,只要空间足够,BTS可以存储大量跳转指令的信息。

但另一方面,BTS的时间开销要比LBR高出许多。

PMU

PMU是Intel引入的用于记录处理器事件的功能单元。PMU事件有好几百个,非常详尽,包含了处理器在运行过程中可能遇到的所有情形,例如指令计数、浮点运算指令计数、L2缓存未命中的时钟周期等。当然其中也有一个在HA-CFI中非常有用的事件,分支预测失败事件。

0x03 HA-CFI基本思路

如果大家对计算机体系结构稍有了解就会知道,现代处理器都是采用流水线的方式执行指令,而分支预测是保证其高效的一个非常重要的技术。

当包含流水线技术的处理器处理分支指令时会遇到一个问题,根据判定条件的真/假的不同,有可能会产生转跳,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令。流水线越长,处理器等待的时间便越长,因为它必须等待分支指令处理完毕,才能确定下一条进入流水线的指令。分支预测就是预测一条可能的分支,让处理器沿着这条分支流水执行下去而不用等待。若预测成功,那么皆大欢喜,处理器继续执行下去即可;若预测失败,处理器则需要回退到分支位置,重新沿着正确的分支方向执行。

分支预测有许多种策略,如静态预测和动态预测等,当然学术界还有很多其他非常高端的方法。但无论采用何种方式进行分支预测,攻击者劫持指令流后,其目标地址显然不是处理器能够预测到的,必然会产生一个分支预测失败的PMU事件,这相当于一个预警信息,接下来要做的就是从这类PMU事件中甄别出哪些是正常的分支预测失败,哪些是由于攻击者劫持指令流造成的分支预测失败。

仅仅预警是不够的,HA-CFI还希望能够准确定位指令流被劫持的位置,并及时进行阻断。此时PMU就帮不上什么忙了,因为PMU只负责报告处理器事件,而不记录产生该事件的具体指令。当某一时刻PMU报告一个分支预测失败的事件时,此时的指令指针可能早已越过了跳转指令,很难回溯定位发生分支预测失败的指令位置。

因此,为了精确定位造成分支预测失败的指令,还需要借助LBR的帮助。当分支预测失败的PMU事件触发中断服务程序(ISR, Interrupt
Service
Routines)时,ISR将从LBR中取出最新的若干条间接跳转指令,其中必然包含造成分支预测失败的间接跳转指令。而且LBR中还记录了更为详细的信息,可方便ISR核对该间接跳转指令的目标地址是否在白名单中。若跳转指令的目标不在白名单之中,说明指令流可能遭到劫持,可及时阻断。示意图如下所示:

HA-CFI示意图

此外,为了进一步保证HA-CFI的效率,可以根据当前进程的重要性选择性的开启或关闭PMU,如当前进程为IE或Firefox浏览器时,开启PMU;若当前进程为Calc.exe这样不太容易遭受攻击的进程,则关闭PMU,如图所示:

选择性开启PMU

0x04 效果与展望

Cody Pierce等人选取了多个经典的CVE漏洞,与EMET进行了比较:

实验结果1

实验结果2

可以肯定的是,随着对抗的不断升级,未来漏洞利用的门槛将越来越高,与防御机制斗法也将也成为常态。

除了刚才提到的微软的EMET,Intel在今年6月发布了一份关于CET的技术前瞻:[Control-flow Enforcement
Technology Preview],准备从硬件层面入手防止ROP和JOP攻击。通过引入一个shadow
stack(类似的[想法]几年前也有人提出),专门用于存储返回地址,每当发生函数调用时,除了向当前线程栈内压入返回地址,还要向shadow
stack中压入返回地址。返回时需要检查线程栈中的返回地址是否与shadow
stack中一致,若不一致,说明线程栈可能遭到攻击者破坏,程序中止。此外,shadow
stack处于层层严密防护之中,普通代码是无法修改shadow stack的,除非攻击者能控制内核,当然这并非不可能,只是攻击门槛变得很高了。

CET目前仍是一个前瞻性的技术,距离真正实现还需要时间。即使实现了,也不意味着高枕无忧,HA-CFI也是如此,总有能绕过的方法,总有其未考虑到的情况,甚至可能它本身也存在着缺陷。

作者:佚名

来源:51CTO

时间: 2024-09-20 00:27:04

浅析A-CFI技术:如何利用硬件防御ROP的相关文章

浅析网络测试各种技术比较

网络测试中,被测网络在实际运营业务,因此测量方法的选择是非常重要的,所选择的测试方法既要能够完整.简便地测量网络,又不能对被测网络造成冲击.网络测试的一个特点是地域上的分散性,因此测试中的控制权问题.时钟同步问题也需要在网络测试中认真对待:同时,不同的网络承载不同的业务,对各种技术参数的要求也不一样,因此在测试中,需要根据具体情况制定具体的测试内容.另外,网络测试和单机测试相比,具有更高的 复杂度和灵活性,需要在测试前进行完善的测试规划,以保证测试顺利.正确的完成.下面,我们分别从网络测试的测试

CVE-2013-2551样本分析及漏洞利用和防御

本文讲的是CVE-2013-2551样本分析及漏洞利用和防御, 0x0 写在前面 VUPEN团队在Pwn2Own 2013黑客大赛上使用漏洞攻破Windows 8环境下的IE10,随后在其博客上公开了技术细节.根据VUPEN描述,该漏洞产生于VGX.DLL模块,在VML语言中处理图形标签的stroke子元素的dashstyle存在安全隐患 微软在安全公告MS13-037中详细列举了受影响软件范围从IE6-IE10,并给出相应平台的安全更新 本文调试的Poc由4B5F5F4B根据VUPEN在博客中

曲屏技术或成硬件新故事

3月2日消息,随着HTC和三星相继发布了最新旗舰机手机HTC One M9和Galaxy S6,2015年世界移动通信大会(以下简称"MWC")终于拉开了帷幕.作为每年手机行业最重要的展会,MWC几乎可以称之为这一年智能手机行业发展的风向标. 尽管今年的MWC刚刚拉开帷幕,但我们依然可以从已经问世的产品以及曝光的信息中,推测出今年的智能手机该如何发展.   曲屏技术或成硬件新故事   先来看一组我们目前知道的产品硬件信息:   三星Galaxy S6:5.1英寸.2K分辨率屏幕,Exy

云存储:大米盘应用分布式存储技术和规模化硬件架构

云存储的定价与人们对一些工具的定价无异.长期以来,几乎所有的厂商都在重复着同样的口号:"用户只需对他们使用的东西支付费用."公共云存储的价格范围为每月每GB 12%到25%. 不过,云存储真正节约成本的地方可能与是否能够解决企业用户的附带成本问题息息相关,因为他们需要在云中存储属于自己的数据."一些需要对自己的数据进行管理的企业发现他们可以摆脱数据中心的困扰了,于是他们渐渐地开始屈服与云存储."企业战略集团公司一分析师Terri McClure指出:"如果

浅析SEO3.0技术与百度算法的调整

大家好,我是雄子,今天想和大家探讨一下关于百度最近算法的调整以及未来的seo道路. 最近百度大幅度的调整算法,让很多seoer很头疼,我自己也头疼,网站需要排名,有流量才能有钱,那我们到底该采取怎样的措施来面对百度的算法呢? 首先我先简单介绍一下关于seo3.0的知识,大部分站长对这个词并不陌生.但到底什么是seo3.0呢?下面由我为大家讲解. 一.seo3.0出现的原因 随着互联网的发展,搜索引擎在网络中的主导地位日益加深,那么搜索引擎也就自然而然的肩负起了"创造文明网络环境"的重任

技术-网站利用支付宝充值到本网站变成金币,现在现在有个提现

问题描述 网站利用支付宝充值到本网站变成金币,现在现在有个提现 网站利用支付宝充值到本网站变成金币,现在现在有个提现 就是把金币转换成支付宝里的钱,这个用到 退款还是什么技术 不过退款是不是有点慢,还需要登陆商家端去审核 .怎么弄 解决方案 http://download.csdn.net/detail/yflxc/7027357

浅析云存储技术的发展现状和创新方向

起初,云存储作为在存储领域兴起的一种新技术,将复杂的存储架构和组织管理封装在系统内部,而对上层系统提供统一.灵活.安全的"云存储服务",由此将存储建设从系统建设上升到服务建设,对于存储的关注也达到空前的高度.然而随着需求的不断加深,以及对"服务"定义的多元化,云存储技术也如落入平静湖面的石子,激荡出一层又一层的波澜. 一.云存储的现状与创新 在安防行业中,存储的存在形式较为多样,传统如DVR/NVR.SAN.NAS等.各种存储方案的存在均满足于安防行业特定场景变化的

浅析阿里数据技术架构(下)大规模分布式知识图谱

阿里数据要做的是:把数据真正打通,深度挖掘数据的价值,为业务创新应用提供数据决策基础和依据. 下面具体介绍我们在大规模分布式知识图谱上的技术实践. 为什么需要知识图谱? 大规模知识图谱抽象也是一种图计算.基于大规模分布式知识图谱做了哪些工作?我们为什么要做这样一件事情? 阿里巴巴的生态非常丰富,而丰富的业态背后给我们数据工作者带来的困难就是,我们常常需要接入各种数据,并将他们有效地管理和整合起来,传统的方法,我们可能需要花几个月,投入几十个人做这样一件事情,对数据进行打标. 但是,假设我们已经知

浅析云存储技术中的几个重要问题

如今,云存储技术或许已经引起了业界的普遍关注,但是大型企业用户还不打算购买这类产品和服务,至少暂时还没有这个打算. 目前,厂商们正处于一种被某供应商称作"培训模式"的时期,它们正在向企业首席信息官.IT经理和其他IT买家解释,将他们的数据保存在公共或私有云中可以节省大量的成本. 各方似乎已经取得共识的是,云存储技术最终必然会蓬勃发展起来.毕竟,它在技术上具有可行性,比传统数据存储更加便宜,而且安全性也越来越高. 圣安东尼奥市的RackspaceHostingInc.公司的首席技术官Jo