控制流劫持攻击研究综述
ժҪ
大部分内存漏洞是通过控制流劫持攻击(Control-flow hijack attack)来达到攻击的目的,它是实现代码复用攻击,如ret2libc,ROP,JOP等的重要手段。攻击者通过劫持程序的控制流,使程序的运行逻辑违背程序原本的设计目标,对系统安全危害巨大。本文对针对控制流劫持攻击现有的防御机制做出总结和优缺点比较,并对未来研究方向做出总结。
一、概述
控制流攻击是一种常见的针对计算机软件的攻击,在1972年第一次被提出[1],利用控制流劫持,可以实现ROP,JOP等代码复用攻击,而网络攻击与防御技术总是不断发展,相互制衡,针对最开始的这类代码复用攻击,研究者提出ASLR[2],[3]、DSR[4]和CFI的防御方法,由于CFI的实现难度太高,提出了更加简洁可行的粗粒度CFI,之后,出现了能够绕过粗粒度CFI的COOP攻击。另外,针对ASLR等随机化防御,提出了JIT-ROP的代码复用攻击,结合内存信息泄漏漏洞,能够破解所有随机化防御,为了防止这类攻击,研究者提出不可读保护,防止攻击者获取代码信息。现在,基于隔离思想的CPI被提出,将控制流相关数据隔离,避免控制流劫持。
控制流劫持攻击的步骤包括,构造攻击载体,利用内存漏洞,篡改控制数据,绕过安全机制,最后完成控制流劫持攻击。软件中的安全控制机制,比如,攻击者利用缓冲区溢出、格式化字符串等内存漏洞,能够篡改返回地址为shellcode,但是如果使用地址空间随机化技术,会使攻击者无法定位shellcode的地址,使得攻击失败[5]。但魔高一丈,道高一尺,攻击者不断发动新的攻击,我们的防御技术也要随之提高。
二、相关研究进展
为完成控制流劫持攻击,攻击者需要通过构造攻击载体,利用内存漏洞,包括缓冲区溢出、格式化字符串、释放后使用、双重释放,整数溢出等,来篡改控制数据,完成攻击。那么,我们可以在内存漏洞的修补、控制数据的完整性、系统地部署安全机制三方面来进行防御。
1.内存漏洞修补
a.缓冲区溢出漏洞的修补
通用的防御方法是检查数组越界[6],但先有的防御方案大都会产生误报,漏报,或运行时间消耗过大等。
b.格式化字符串漏洞的修补
静态分析源代码,比较printf系列函数实际接受的参数个数与其格式化字符串中要求的占位符个数是否匹配来监测漏洞[8]。
2.。
3.安全机制
a.CFI
CFI,控制流完整性,是指程序在其执行过程中,应当遵循程序时预先定义好的控制流图(Control Flow Graph, CFG),以确保程序控制流不被劫持或非法篡改,背离程序编制时所设计的控制流转移关系。CFI在运行时检测程序的控制转移是否在控制流图中,以识别是否遭遇了攻击。具体作法是在控制流转移指令前插入检验代码,来判断目标地址的合法性。这种做法能够对控制流劫持攻击起到防御作用,但是也存在一 些问题。严格意义上的CFI,需要做到对每条间接控制转移都做检查,并确保每条转移指令只能转移到它自身的目标集合。如果要达到更好的防御效果,则要做到上下文敏感的检查。
粗粒度CFI[11],就是放宽检查的条件,减少比较目标集合。原来的CFI是一个间接转移对应一个目标集合。放宽后,间接转移目标进行合并,比如把所有的间接调用指令和间接跳转指令的目标集合合成一个目标,所有的函数返回指令的目标集合合成一个。这种方式能够有效地降低CFI引入的开销,但也存在安全性问题。[9]利用两种特殊的gadget――entry point (EP) gadget和call site (CS) gadget,来绕开粗粒度CFI机制的防御。这两种gadget满足检查的条件,但是其实是并不符合真实的控制流。
为了防止能够绕过粗粒度CFI的特殊合法配件组成的攻击,[10]提出了一种通过对代码指针加密,来增强CFI的方法,称为CCFI。
b.地址随机化
地址空间布局随机化,是参与保护缓冲区溢出问题的一个计算机安全技术。是为了防止攻击者在内存中能够可靠地对跳转到特定利用函数。ASLR包括随机排列程序的关键数据区域的位置,包括可执行的部分、堆、栈及共享库的位置。ASLR通过制造更多让攻击者预测目标地址的困难以阻碍一些类型的安装攻击。例如:攻击者试图执行返回到libc的攻击必须要找到要执行的代码,而其他攻击者试图执行shellcode注入栈上则必须首先到栈。在这两种情况下,系统将模糊攻击者相关的存储器地址。这些值被猜中,并且错误的猜测由于应用程序崩溃通常是不可恢复的。
那么,要打败随机化,攻击者必须成功猜出所有他们想要攻击的区域的位置。为数据区,如堆和栈,定制代码或者有用的数据可以被加载,一个以上的状态可以通过使用NOP滑动代码或数据的重复拷贝被攻击。如果一个区域被分配到少数值中的一个将被允许攻击成功。与此相反,代码区域例如:基础库,主要的可执行的需要准确地发现。通常这些区域被混合,例如堆栈桢被注入到栈和动态库中。
三、国内外安全研究和产业实践现状
1.国内外信息安全研究的发展方向:
a.向主动防御方向发展,检测未知威胁。
传统的网络安全方法论是基于攻击的特征签名,是已知的威胁,这种方法,需要我们不断的更新特征库,修补补丁,维持海量的特征签名库。而现在,人工智能技术的提出,让我们可以开展对未知威胁的检测。未来的安全体系应该可以建立自我学习能力,生成动态威胁模型来预测网络攻击,完成分析。
b.向网络化,虚拟化方向发展。
互联网正在逐步成为软件开发、部署、运行和服务的平台,对高效防范和综合治理的要求日益提高,信息安全研究方向向网络化、虚拟化发展。网络身份认证、安全智能技术、新型密码算法等信息安全技术日益受到重视。
2.国内外网络安全管理体制:
a.法律体系较为完备。美国、欧盟等在涉及关键基础设施保护、个人数据和隐私保护、互联网内容管理、计算机安全及犯罪等领域,对网络安全提出了明确的管理要求。
b.网络安全管理组织架构完整。以美国为例,其国家网络安全办公室总体负责网络安全事务,国防部负产业经济责与军事和情报等相关的工作,国土安全部负责网络与关键基础设施相关的工作,商务部负责网络安全标准制定等工作,而且美国还建立了“首席信息官”制度,能够实现各部门之间的协调统一。
c.形成了良性的运行机制。在欧美等国的网络安全保障体系中,政府、军方、私营机构各司其职,在统一的标准下,形成了政府、军方统一采购服务,承包商整合各私营机构的产品和服务,专门机构负责审核产品和服务规范性的运作流程。
3.产业实践现状
中央网络安全和信息化领导小组正式成立之后,我国相继出台了一系列政策措施。第一,对高通、微软等开展反垄断调查,第二,是国家网络安全战略即将出台,其对网络安全产业发展进行顶层规划,明确产业发展的目标和任务,有助于促进相关企业的健康快速发。
信息安全产业在整个信息产业中,相对规模并不大,但敏感度高、影响大。特别是在当前信息技术大规模普及的情况下,信息安全的影响面也远远超越通信安全阶段和计算机安全阶段,延展到整个信息技术的终端受众。信息安全面临前所未有的挑战,同时也为技术创新和产业发展提供了前所未有的空间我国的信息安全产业完全有机会通过技术创新后来居上,实现跨越式发展、在面临诸多挑战的同时,信息安全产业也迎来历史性的发展机遇正如习近平总书记所指出,建设网络强国,要有自己的技术,有过硬的技术;要有丰富全面的信息服务,繁荣发展的网络文化;要有良好的信息基础设施,形成实力雄厚的信息经济;要有高素质的网络安全和信息化人才队伍。
四、总结及未来研究方向
1.CFI是一种有效的抵御代码注入,代码重用攻击的防御体系,但是精确的CFI会引入大量开销,这一点激励了粗粒度CFI的产生,但与此同时,也给攻击者留下可乘之机,所以,在未来,如何实现一种高可靠,低开销的CFI技术是我们值得研究的方向。
2.移动互联网的兴起,移动智能终端的安全性刻不容缓,如何在移动智能终端完成安全防护方案是一个值得研究的方面。
参考文献
[1]Anderson J P. Computer Security Technology Planning Study[J]. Air Force Electronic Systems Division Esd Tr, 1972.
[2] T. PaX, “Address space layout randomization,” 2001. [Online]. Available: http://pax.grsecurity.net/docs/aslr.txt
[3] M. Chew and D. Song, “Mitigating Buffer Overflows by Operating System Randomization,” Tech. Rep., 2002.
[4]S. Bhatkar and R. Sekar, “Data Space Randomization,” in DIMVA’08
[5]Szekeres L, Payer M, Wei T, et al. Eternal War in Memory[C]// Security and Privacy. IEEE, 2013:48-62.
[6]Tsai T K, Singh N. Libsafe: Transparent System-wide Protection Against Buffer Overflow Attacks[C]// Dependable Systems and Networks, 2002. DSN 2002. Proceedings. International Conference on. IEEE, 2002:541.
[7]Cowan C, Pu C, Hintony H, et al. StackGuard: automatic adaptive detection and prevention of buffer-overflow attacks[C]// Conference on Usenix Security Symposium. USENIX Association, 1998:5-5.
[8]Cowan C, Barringer M, Beattie S, et al. FormatGuard: automatic protection from printf format string vulnerabilities[C]// Conference on Usenix Security Symposium. USENIX Association, 2001:15-15.
[10]. Ali Jose Mashtizadeh, Andrea Bittau, Dan Boneh, and David Mazières. 2015. CCFI: Cryptographically Enforced Control Flow Integrity. In Proceedings of the 22nd ACM SIGSAC Conference on Computer and Communications Security (CCS '15). ACM, New York, NY, USA, 941951.
Control-Flow Bending: On the Effectiveness of Control-FlowIntegrity.