咨询与建议

看过本文的还看了

相关文献

该作者的其他文献

文献详情 >基于内存页流验证的ROP防御方案 收藏
基于内存页流验证的ROP防御方案

基于内存页流验证的ROP防御方案

作     者:高士翔 

作者单位:南京大学 

学位级别:硕士

导师姓名:郑滔

授予年度:2016年

学科分类:08[工学] 0835[工学-软件工程] 081202[工学-计算机软件与理论] 0812[工学-计算机科学与技术(可授工学、理学学位)] 

主      题:Return-Oriented Programming 地址空间随机化 控制流分析 程序安全 

摘      要:随着网络与信息技术的迅速发展,计算机软件系统在社会生活中扮演着越来越重要的角色。与此同时,由于部分高级语言“为了效率而不做边界检查这一特征和软件开发人员很难写出完全没有漏洞的软件这一事实,各种程序漏洞仍然很普遍,在遗留软件系统中尤其如此。通过这些漏洞,攻击者可以劫持软件系统正常的控制流并将其转向自己预设的控制流,从而实施攻击。常见的代码复用攻击依赖内存中常驻代码的绝对地址。针对这种类型的攻击,有多种防御方案,包括地址空间随机化。Just-in-Time攻击,针对现有的细粒度地址空间随机化技术,利用x86架构下内存页无读权限保护的缺陷,实时读取内存映像,搜集可用的gadget,使用动态编译技术构造ROP攻击。针对恶意代码可能窥视内存信息的行为,XnR技术基于Linux和Windows内核,以软件的方式实现了对内存页面的读保护。但是,该技术仍然存在被针对性的复杂实时ROP攻击的可能性。实时ROP主要针对地址空间随机化技术。现有多种防御实时ROP的思路。完全基于软件实现的XnR方案在防御实时ROP方面表现出色。因此,在其基础上改进缺陷,构建实时ROP防御方案,不失为一种有效的策略。本文首先介绍了当前地址空间随机化技术的研究进展,并对实时ROP的相关背景进行了阐述。其次,本文给出了基于XnR技术的软件改进策略:内存页流向的合法性验证。由于ROP攻击搜寻内存中的常驻代码,构建gadget序列,控制流可能在多个页面间产生跳转。本文借鉴了CFI控制流验证的思想,将程序运行时页面调度顺序与原有的程序代码页面流作对比,监测非法的页面流向。要实现基于内核的内存页流合法性验证,有两个技术难点:一是间接转移指令目的地址的分析;二是记录程序运行时的页面流向。对于间接转移指令的分析,是为了得到代码指令间的依赖关系,进而获得程序原有的合法运行流。本文基于SSA中间表达形式、表达式扩散以及值分析技术,改进现有的控制流分析技术,对二进制文件进行控制流分析,构建函数间以及函数和数据间的依赖关系,跨过程回溯追踪间接转移指令的目的地址。为了记录程序运行时流向,本文实现并改造了XnR方案的滑动窗口,将运行时页面信息记录在磁盘上,作为后期分析对比的依据。即使是窗口的大小只有6页,程序的平均开销也只增加了5.1%。实现的原型通过实验,已被证明能够更有效地分析程序控制流图,并能够监控程序的实时运行。在今后的研究中,我们将继续完善上述防御方案,并实现带有读保护的硬件架构。拥有读权限硬件支持的软硬件协同防御策略,可以同时完美解决当前XnR的缺陷:性能不足和范围不足。

读者评论 与其他读者分享你的观点

用户名:未登录
我的评分