CN109446802A - 一种抵抗实时代码复用攻击的防御方法 - Google Patents
一种抵抗实时代码复用攻击的防御方法 Download PDFInfo
- Publication number
- CN109446802A CN109446802A CN201811343644.5A CN201811343644A CN109446802A CN 109446802 A CN109446802 A CN 109446802A CN 201811343644 A CN201811343644 A CN 201811343644A CN 109446802 A CN109446802 A CN 109446802A
- Authority
- CN
- China
- Prior art keywords
- page
- original
- time code
- shared
- defence method
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种抵抗实时代码复用攻击的防御方法,包括以下步骤:S1,获取共享库代码原有的页面流向图;S2,在原有的XnR滑动窗口增加页面流向的记录;S3,对比共享库代码原有的页面流向图和滑动窗口内的页面流向的记录,检测非法流。本发明能够提高原始XnR的防御能力,避免已加载到进程地址空间的内存页无法被持续检测的缺陷。
Description
技术领域
本发明属于计算机代码安全防御技术领域,具体涉及一种抵抗实时代码复用攻击的防御方法。
背景技术
实时代码复用攻击是利用内存页可读的漏洞截获某一内存页,尽可能多的通过控制流分析获取其他页的二进制内容。具体是基于得到的页面信息,实时代码复用攻击构建了一个动态编译引擎,搜集短序列构造gadgets并编译攻击代码。
针对代码复用攻击的防御,现有技术中的可执行不可读(XnR)方案,将内存页的执行权限和读权限分割成两个不相交的集合,做互斥管理,能够防御大部分利用内存页可读漏洞的攻击。但是如果一个内存页已经被加载到了进程的地址空间里,后续的检测都无法实现,直到它被移出地址空间。假设窥视内存的行为以函数为单位,对于某一个函数,若每次该函数先被调用,再被恶意程序读取,则该行为不会触发XnR防御机制。因此,XnR方案存在固有缺陷。
发明内容
本发明的目的在于克服现有技术中的不足,提供了一种抵抗实时代码复用攻击的防御方法,实现内存页的防御。
为解决上述技术问题,本发明提供了一种抵抗实时代码复用攻击的防御方法,其特征是,包括以下步骤:
S1,获取共享库代码原有的页面流向图;
S2,在原有的XnR滑动窗口增加页面流向的记录;
S3,对比共享库代码原有的页面流向图和滑动窗口内的页面流向的记录,检测非法流。
进一步的,S1中,获取共享库代码原有的页面流向结果的具体过程为:
将共享库代码转换为SSA形式的中间语句;
分析SSA形式的中间语句获得基本块之间的跳转关系;
获取每条指令的偏移量,将各指令的偏移量映射为一个线性页号;
在SSA形式的中间语句中标记上对应的页号,由语句间的跳转关系获得页间的跳转关系,即获得共享库代码原有的页面流向图。
进一步的,共享库代码利用BAP平台转换为SSA形式的中间语句。
进一步的,利用静态分析算法分析SSA形式的中间语句获得基本块之间的跳转关系。
进一步的,当缺页异常触发时,提取触发缺页异常的当前指令及其所在页的信息,形成页面流向的记录。
进一步的,页的信息包括页号、内存页面的偏移量,以及该页所属的共享库名称。
进一步的,获取非法流的具体过程为:
当一个内存页面流满足以下条件时,会被定义为非法流:
(1)滑动窗口的活动页中不存在不能识别的跳转指令;
(2)滑动窗口中的活动页与缺页异常触发页面流向的记录之间的关联在共享库原有的页面流向图中未出现。
与现有技术相比,本发明所达到的有益效果是:该发明能够提高原始XnR的防御能力,避免已加载到进程地址空间的内存页无法被持续检测的缺陷。
附图说明
图1是本发明方法的流程示意图。
具体实施方式
下面结合附图对本发明作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
如图1所示,本发明的一种抵抗实时代码复用攻击的防御方法,包括以下过程:
步骤S1,获取共享库代码原有的页面流向结果。
共享库代码是二进制代码,利用现有的BAP平台(Binary Analysis Platform)将二进制代码转换为SSA(Static Single Assignment)形式的中间语句。SSA即静态单赋值,这是一种中间表示形式。之所以称之为单赋值,是因为每个变量在SSA中仅被赋值一次。在SSA中间语句表示中,可以保证每个被使用的变量都有唯一的定义,即SSA能带来精确的使用–定义关系。
利用静态分析算法分析SSA形式中间语句获取控制流图,得到基本块之间的跳转关系。其中基本块是汇编代码的基本逻辑单元,以跳转指令分割,将汇编代码中的函数分割成更小的逻辑单元。基本块就是用控制流图描述跳转关系的基本单元。通过基本块之间的跳转关系,可得到块首语句与其前驱语句之间的跳转关系(前驱语句在其他块中),而块内的语句之间为顺序执行的关系。据此,可以得到SSA中间语句之间的依赖关系。
在共享库代码编译后的二进制文件中,用objdump命令获得每条指令在二进制文件中的偏移量,将各指令的偏移量映射为一个线性页号。假设编译的代码从地址0开始,Linux默认模式下内存页以4K(4096字节)为单位进行划分,若一个指令的偏移量是5000字节,则其页号为1(页面编号从0开始)。
并在SSA形式的中间语句中标记上对应的页号。将SSA形式的中间语句用所在页号代替,语句间的跳转关系被替换为页间的跳转关系,即获得共享库代码原有的页面流向图。将分析得到的页面流向结果保存到共享库内存页转移图文件中。
步骤S2,在原有的XnR滑动窗口增加页面流向的记录。
在原有的XnR技术方案中,滑动窗口可以限制一个进程空间中内存页的数量,滑动窗口是一个单向链表,使用内核链表实现。在原有的XnR滑动窗口增加内存页面流向的记录内容。具体过程为:
在系统中加载共享库代码,共享库代码对应的可执行程序运行时,当系统内核触发缺页异常时,提取触发缺页异常的当前指令及其所在页的信息,产生一条备份记录,存放在硬盘上的内存页使用情况记录表。
页的信息包括页号、该页相对于文件的偏移量,以及该页所属的共享库名称。
步骤S3,对比共享库代码原有的页面流向结果和XnR滑动窗口内的页面流向的记录,实施内存页面流合法性对比验证。
将共享库内存页转移图文件和内存页使用情况记录表进行对比,从中寻找非法的内核内存页流向。遍历限定条件下(如时间范围)所有的内核页面流向记录,并进行交叉分析。
当一个内存页面流满足以下条件时,会被定义为非法流:
(1)滑动窗口的活动页中不存在不能识别的跳转指令。
(2)滑动窗口中的活动页与缺页异常触发指令(页面流向的记录)之间的关联在共享库内存页转移图文件中未出现。
上面所说的活动页就是内存页。因为滑动窗口内内存页一直在变化,所以这里称为活动页。
将那些通过验证的内存页记录标记为“通过”,如果出现所述非法流,即视为可疑的攻击痕迹,会给出警告并生产错误报告。对于未能识别的指令,如间接跳转指令,不作分析,一律通过。
将缺页异常触发指令与滑动窗口中的活动页逐一配对,并在共享库内存页转移图文件中进行关联比对。如果所有的页面间跳转关系都不存在,并且这些页也不存在未能识别的间接转移指令,则该页间跳转关系被视作可疑的非法流。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
Claims (7)
1.一种抵抗实时代码复用攻击的防御方法,其特征是,包括以下步骤:
S1,获取共享库代码原有的页面流向图;
S2,在原有的XnR滑动窗口增加页面流向的记录;
S3,对比共享库代码原有的页面流向图和滑动窗口内的页面流向的记录,检测非法流。
2.根据权利要求1所述的一种抵抗实时代码复用攻击的防御方法,其特征是,S1中,获取共享库代码原有的页面流向图的具体过程为:
将共享库代码转换为SSA形式的中间语句;
分析SSA形式的中间语句获得基本块之间的跳转关系;
获取每条指令的偏移量,将各指令的偏移量映射为一个线性页号;
在SSA形式的中间语句中标记上对应的页号,由语句间的跳转关系获得页间的跳转关系,即获得共享库代码原有的页面流向图。
3.根据权利要求2所述的一种抵抗实时代码复用攻击的防御方法,其特征是,共享库代码利用BAP平台转换为SSA形式的中间语句。
4.根据权利要求2所述的一种抵抗实时代码复用攻击的防御方法,其特征是,利用静态分析算法分析SSA形式的中间语句获得基本块之间的跳转关系。
5.根据权利要求1所述的一种抵抗实时代码复用攻击的防御方法,其特征是,当缺页异常触发时,提取触发缺页异常的当前指令及其所在页的信息,形成页面流向的记录。
6.根据权利要求1所述的一种抵抗实时代码复用攻击的防御方法,其特征是,页的信息包括页号、内存页面的偏移量,以及该页所属的共享库名称。
7.根据权利要求1所述的一种抵抗实时代码复用攻击的防御方法,其特征是,获取非法流的具体过程为:
当一个内存页面流满足以下条件时,会被定义为非法流:
(1)滑动窗口的活动页中不存在不能识别的跳转指令;
(2)滑动窗口中的活动页与缺页异常触发页面流向的记录之间的关联在共享库原有的页面流向图中未出现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811343644.5A CN109446802A (zh) | 2018-11-13 | 2018-11-13 | 一种抵抗实时代码复用攻击的防御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811343644.5A CN109446802A (zh) | 2018-11-13 | 2018-11-13 | 一种抵抗实时代码复用攻击的防御方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109446802A true CN109446802A (zh) | 2019-03-08 |
Family
ID=65552173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811343644.5A Pending CN109446802A (zh) | 2018-11-13 | 2018-11-13 | 一种抵抗实时代码复用攻击的防御方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109446802A (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022956A (zh) * | 2015-08-14 | 2015-11-04 | 中国科学院计算技术研究所 | 一种抵御代码重用攻击的方法 |
CN106096407A (zh) * | 2016-05-31 | 2016-11-09 | 华中科技大学 | 一种代码复用攻击的防御方法 |
-
2018
- 2018-11-13 CN CN201811343644.5A patent/CN109446802A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022956A (zh) * | 2015-08-14 | 2015-11-04 | 中国科学院计算技术研究所 | 一种抵御代码重用攻击的方法 |
CN106096407A (zh) * | 2016-05-31 | 2016-11-09 | 华中科技大学 | 一种代码复用攻击的防御方法 |
Non-Patent Citations (1)
Title |
---|
高士翔: "基于内存页流验证的ROP防御方案", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhou et al. | Automated identification of security issues from commit messages and bug reports | |
CN110443045B (zh) | 一种基于机器学习方法的模糊测试用例生成方法 | |
US9129108B2 (en) | Systems, methods and computer programs providing impact mitigation of cyber-security failures | |
Zhang et al. | Anomalous path detection with hardware support | |
Ding et al. | VELVET: a noVel Ensemble Learning approach to automatically locate VulnErable sTatements | |
Wang et al. | Semantics-aware machine learning for function recognition in binary code | |
Baca et al. | Improving software security with static automated code analysis in an industry setting | |
EP3566166B1 (en) | Management of security vulnerabilities | |
JP5467271B2 (ja) | 情報処理装置及びプログラム、情報処理方法、記録媒体 | |
Akbarian et al. | Intrusion detection in digital twins for industrial control systems | |
CN107908955B (zh) | 一种基于中间语言分析的控制流完整性保护方法及系统 | |
CN105579955A (zh) | 应用控制流模型 | |
CN111523784A (zh) | 自动执行路径的监控方法及装置 | |
Baggili et al. | Founding the domain of AI forensics | |
Zhang et al. | Recfa: Resilient control-flow attestation | |
Theissing et al. | Comprehensive analysis of software countermeasures against fault attacks | |
KR20230156129A (ko) | 블록체인 기반의 책임 있는 분산 컴퓨팅 시스템 | |
JP4913353B2 (ja) | ソフトウェア動作モデル化装置及びソフトウェア動作監視装置 | |
Ashlam et al. | Multi-phase algorithmic framework to prevent SQL injection attacks using improved machine learning and deep learning to enhance database security in real-time | |
CN117633808A (zh) | 用于漏洞检测的方法、处理器及机器可读存储介质 | |
CN109446802A (zh) | 一种抵抗实时代码复用攻击的防御方法 | |
JP7235126B2 (ja) | バックドア検査装置、バックドア検査方法、及びプログラム | |
Youssef et al. | Use of Ensemble Learning to Detect Buffer Overflow Exploitation | |
Temple et al. | Reconciling systems-theoretic and component-centric methods for safety and security co-analysis | |
Vankeirsbilck | Advancing control flow error detection techniques for embedded software using automated implementation and fault injection |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190308 |
|
RJ01 | Rejection of invention patent application after publication |