基于ARMv8架构gadget自动搜索框架
2016-06-08赵利军王震宇王奕森
赵利军 王震宇 王奕森 庄 宽
(信息工程大学数学工程与先进计算国家重点实验室 河南 郑州 450001)
基于ARMv8架构gadget自动搜索框架
赵利军王震宇王奕森庄宽
(信息工程大学数学工程与先进计算国家重点实验室河南 郑州 450001)
摘要为了在ARM公司最新发布的首款支持64位处理器的ARMv8架构上实现ROP(Return_Oriented Programmig)技术,设计了ARMv8架构上的ROP gadget的自动搜索工具。通过结合ARMv8架构指令系统的特点,首先在库文件搜索出所有的以RET指令结尾的短指令序列,并把这些指令序列存储在gadget库中,然后采用一些优化策略对该库进行优化,最后根据用户的输入在库中搜索到与用户输入功能相同的gadget链。通过对搜索工具搜索到的gadget的统计,结果表明gadget集具有图灵完整性,可以执行任意的操作。最后通过一个实例证明了ROP在ARMv8架构上的可行性。
关键词ROP指令序列自动搜索ARMv8图灵完整性
0引言
数据执行保护和签名等技术有效地阻止了代码注入式攻击。2005年Sebastian Krahmer等人提出了一种借用代码攻击方法,该方法不再需要向内存中注入恶意代码,而是利用代码段中的代码实现攻击。return-into-libc[1]技术是一种典型的借用代码攻击,通过劫持控制流,跳转到C语言函数库libc,复用libc中已有的函数。但是return-into-libc攻击只能顺序调用函数,不能实现图灵完备的行为,如分支操作、循环操作等。
为了弥补return-into-libc攻击的局限性, 2007年Hova Shacham[2]第一次提出了X86平台上的返回导向编程技术ROP。返回导向编程攻击的方式不再局限于将漏洞程序的控制流跳转到库函数中,而是利用库函数或可执行文件的指令代码片段实现攻击,将复用的代码粒度从return-to-libc的函数级别缩小到指令序列。……
