[发明专利]一种抵抗实时代码复用攻击的防御方法在审
申请号: | 201811343644.5 | 申请日: | 2018-11-13 |
公开(公告)号: | CN109446802A | 公开(公告)日: | 2019-03-08 |
发明(设计)人: | 周超;黄伟;郭雅娟;姜海涛;王梓莹;郭静;朱道华;李岩 | 申请(专利权)人: | 国网江苏省电力有限公司电力科学研究院;国家电网有限公司;江苏省电力试验研究院有限公司 |
主分类号: | G06F21/54 | 分类号: | G06F21/54 |
代理公司: | 南京纵横知识产权代理有限公司 32224 | 代理人: | 董建林;张欢欢 |
地址: | 210000 江苏*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 页面 原有的 共享库代码 滑动窗口 实时代码 复用 进程地址空间 防御能力 抵抗 持续检测 防御 攻击 加载 记录 内存 检测 非法 | ||
本发明公开了一种抵抗实时代码复用攻击的防御方法,包括以下步骤:S1,获取共享库代码原有的页面流向图;S2,在原有的XnR滑动窗口增加页面流向的记录;S3,对比共享库代码原有的页面流向图和滑动窗口内的页面流向的记录,检测非法流。本发明能够提高原始XnR的防御能力,避免已加载到进程地址空间的内存页无法被持续检测的缺陷。
技术领域
本发明属于计算机代码安全防御技术领域,具体涉及一种抵抗实时代码复用攻击的防御方法。
背景技术
实时代码复用攻击是利用内存页可读的漏洞截获某一内存页,尽可能多的通过控制流分析获取其他页的二进制内容。具体是基于得到的页面信息,实时代码复用攻击构建了一个动态编译引擎,搜集短序列构造gadgets并编译攻击代码。
针对代码复用攻击的防御,现有技术中的可执行不可读(XnR)方案,将内存页的执行权限和读权限分割成两个不相交的集合,做互斥管理,能够防御大部分利用内存页可读漏洞的攻击。但是如果一个内存页已经被加载到了进程的地址空间里,后续的检测都无法实现,直到它被移出地址空间。假设窥视内存的行为以函数为单位,对于某一个函数,若每次该函数先被调用,再被恶意程序读取,则该行为不会触发XnR防御机制。因此,XnR方案存在固有缺陷。
发明内容
本发明的目的在于克服现有技术中的不足,提供了一种抵抗实时代码复用攻击的防御方法,实现内存页的防御。
为解决上述技术问题,本发明提供了一种抵抗实时代码复用攻击的防御方法,其特征是,包括以下步骤:
S1,获取共享库代码原有的页面流向图;
S2,在原有的XnR滑动窗口增加页面流向的记录;
S3,对比共享库代码原有的页面流向图和滑动窗口内的页面流向的记录,检测非法流。
进一步的,S1中,获取共享库代码原有的页面流向结果的具体过程为:
将共享库代码转换为SSA形式的中间语句;
分析SSA形式的中间语句获得基本块之间的跳转关系;
获取每条指令的偏移量,将各指令的偏移量映射为一个线性页号;
在SSA形式的中间语句中标记上对应的页号,由语句间的跳转关系获得页间的跳转关系,即获得共享库代码原有的页面流向图。
进一步的,共享库代码利用BAP平台转换为SSA形式的中间语句。
进一步的,利用静态分析算法分析SSA形式的中间语句获得基本块之间的跳转关系。
进一步的,当缺页异常触发时,提取触发缺页异常的当前指令及其所在页的信息,形成页面流向的记录。
进一步的,页的信息包括页号、内存页面的偏移量,以及该页所属的共享库名称。
进一步的,获取非法流的具体过程为:
当一个内存页面流满足以下条件时,会被定义为非法流:
(1)滑动窗口的活动页中不存在不能识别的跳转指令;
(2)滑动窗口中的活动页与缺页异常触发页面流向的记录之间的关联在共享库原有的页面流向图中未出现。
与现有技术相比,本发明所达到的有益效果是:该发明能够提高原始XnR的防御能力,避免已加载到进程地址空间的内存页无法被持续检测的缺陷。
附图说明
图1是本发明方法的流程示意图。
具体实施方式
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国网江苏省电力有限公司电力科学研究院;国家电网有限公司;江苏省电力试验研究院有限公司,未经国网江苏省电力有限公司电力科学研究院;国家电网有限公司;江苏省电力试验研究院有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811343644.5/2.html,转载请声明来源钻瓜专利网。