面向二进制的控制流攻击预防技术研究

来源 :西安电子科技大学 | 被引量 : 0次 | 上传用户:cart008
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
用C/C++等类型不安全语言编写的程序在具有很高性能的同时,经常遭受控制流劫持攻击的困扰。绝大多数操作系统内核及在其上运行的重要软件程序都是用C/C++实现的,因此现代操作系统广泛部署DEP、ASLR等防御机制来提高了计算机系统的安全性。然而目前主流的控制流攻击利用代码重用技术能成功绕过这些保护措施,并构造出满足图灵完备性计算的代码片段集来执行任意恶意程序操作。控制流完整性是比DEP和ASLR等防御机制更加安全的代码重用攻击防御技术。现有基于二进制的控制流完整性技术存在的主要问题是其构造出来的程序控制流图不完整,所以所实施的安全策略可能会被绕过。本文的研究工作旨在通过深入分析二进制并尽可能复原函数原型、调用点签名和C++语义信息,以提高控制流图的准确性并对目标二进制提供高精度的控制流完整性保护。针对ROP等后向代码重用攻击,通过动态代码插桩技术和线程劫持技术,在不修改程序的情况下设计实现了适用于多线程情形的影子调用栈,并借助线程局部存储机制隐藏了影子调用栈位置。对所设计实现的原型系统进行了功能和性能测试,原型系统能有效保护函数返回地址的完整性且具有合理的性能开销。针对通过劫持虚函数表和破坏函数指针来劫持程序执行流的前向控制流攻击,设计并实现了细粒度的前向控制流完整性方案。首先,从X8664系统下应用程序二进制接口的定义出发,对目标二进制进行静态地过程间数据流分析,通过收集分析参数寄存器和返回值寄存器的状态信息来确定函数和间接函数调用点的参数数量及返回值使用情况,根据参数数量和返回值使用情况保守地重构函数原型和调用点签名;根据C++虚函数调用的行为特点和虚函数表的特殊属性复原C++语义信息,即提取虚函数调用点和虚函数表。其次,根据静态分析的函数原型、调用点签名和C++语义信息在间接函数调用点和函数之间建立基于类型的、多对多的映射关系来确定间接函数调用点合法目标集。最后,利用动态代码插桩技术验证间接调用指令目标的合法性,并通过限制间接调用指令只调用类型的匹配函数提高前向CFI的精度。在影子调用栈方案的基础上对原型系统进行了扩展,并对它进行了功能和性能测试,测试结果表明它能有效保护前向控制流完整性且性能开销在合理范围内。
其他文献
如何进一步加强工会自身建设和改革,使工会工作更加适应社会主义市场经济发展的需要,适应职工群众的需要,更好地履行工会的维护职能,维护职工的合法权益,已成为一个迫切需要
输尿管镜下气压弹道碎石术(URL)是腔内碎石的新技术,其机制是将压缩气体产生的能量驱动碎石机手柄内的子弹体,子弹体脉冲式冲击而将结石击碎。该方法是一种安全、高效、无热损伤
讨论了积分校正公式的一般形式,利用代数精度的概念给出了确定了校正公式中的参数方法。给出了左矩形公式、梯形公式、辛甫生公式、一点高斯公式、二点高斯公式的校正公式,其
高校妇女工作委员会是党联系妇女群众的桥梁和纽带,做好高校妇女工作不但是搞好群众工作的基本要求,也是构建和谐社会、和谐校园的基本要求。高校工会女职工工作的核心任务是
帕特里克·苏佩斯是美国著名的逻辑学家、心理学家,二十世纪后半叶最有影响力的科学哲学家之一,他涉猎多个领域,如物理学、逻辑学、测量理论、概率论、语言学、心理学与神经
今年年初的一天,农七师一三○团九连会议室里热火朝天:随着一段段河南、甘肃、四川口音的落下,立即就会曝发出阵阵热烈的掌声。原来,这个连队的养殖专业户正在向职工传经送宝
本文运用文献综述法,对素质教育理念下的高校排球教师自我发展的重要意义进行阐述,对相关的发展途径进行探讨,其目的在于为高校排球教师能够有效地适应社会发展的需求,促进自