暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
2019基于运行特征监控的代码复用攻击防御-张贵民 , 李清宝 , 张平 , 程三军.pdf
62
17页
0次
2022-05-23
免费下载
软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cn
Journal of Software,2019,30(11):35183534 [doi: 10.13328/j.cnki.jos.005539] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel: +86-10-62562563
基于运行特征监控的代码复用攻击防御
张贵民
1,2,3
,
李清宝
1,2
,
1,2
,
程三军
4
1
(解放军信息工程大学,河南 郑州 450001)
2
(数学工程与先进计算国家重点实验室,河南 郑州 450001)
3
(信息保障技术重点实验室,北京 100072)
4
(河南省人民检察院,河南 郑州 450000)
通讯作者: 张贵民, E-mail: zh.guimin@163.com
: 针对代码复用的攻击与防御已成为网络安全领域研究的热点,但当前的防御方法普遍存在防御类型单
一、易被绕过等问题.为此,提出一种基于运行特征监控的代码复用攻击防御方法 RCMon.该方法在分析代码复用攻
击实现原理的基础上定义了描述程序正常运行过程的运行特征模型 RCMod,并提出了验证程序当前运行状态是否
满足 RCMod 约束规则的安全验证自动机模型.实现中,通过直接向目标程序中植入监控代码,使程序运行到监控节
点时自动陷入,并由 Hypervisor 实现运行特征库的构建和安全验证.实验结果表明,RCMon 能够有效地防御已知的
绝大部分代码复用攻击,平均性能开销约为 22%.
关键词: 代码复用攻击;运行特征;系统调用;插桩
中图法分类号: TP309
中文引用格式: 张贵民,李清宝,张平,程三军.基于运行特征监控的代码复用攻击防御.软件学报,2019,30(11):35183534.
http://www.jos.org.cn/1000-9825/5539.htm
英文引用格式: Zhang GM, Li QB, Zhang P, Cheng SJ. Defending code reuse attacks based on running characteristics monitoring.
Ruan Jian Xue Bao/Journal of Software, 2019,30(11):35183534 (in Chinese). http://www.jos.org.cn/1000-9825/5539.htm
Defending Code Reuse Attacks Based on Running Characteristics Mo nitori ng
ZHANG Gui-Min
1,2,3
, LI Qing-Bao
1,2
, ZHANG Ping
1,2
, CHENG San-Jun
4
1
(PLA Information Engineering University, Zhengzhou 450001, China)
2
(State Key Laboratory of Mathematical Engineering and Advanced Computing, Zhengzhou 450001, China)
3
(Science and Technology on Information Assurance Laboratory, Beijing 100072, China)
4
(People’s Procuratorate of Henan Province, Zhengzhou 450000, China)
Abstra ct : Code reuse attacks (CRAs) and their defense technologies have been the hot topic in network security field. However, current
defense technologies usually focus on a single type of attacks and can be easily bypassed by other attacks. This paper presents a method
called RCMon to defend CRAs based on running characteristics monitoring to overcome this problem. RCMon defines the running
characteristics model (RCMod) according to the realize theory of CRAs and designs a safety verification automaton to verify whether
current status meets the constraints in the RCMod. When RCMon is implemented, monitor code is instrumented into the target executable
directly so that target program will trap in the Hypervisor when it runs to monitoring nodes, then the construction of running
characteristics databse and safety verifications will be both performed by the Hypervisor. The experiment results show that RCMon can
effectively detect and defense mostly CRAs, and induces average 22% performance penalty.
基金项目: 国家社会科学基金(15AJG012); 核高基国家科技重大专项(2013JH00103); 信息保障技术重点实验室开放基金
(KJ-15-107)
Foundation item: National Social Science Foundation of China (15AJG012); CHB National Science and Technology Major Project
of China (2013JH00103); Foundation of Science and Technology on Information Assurance Laboratory (KJ-15-107)
收稿时间: 2016-12-15; 修改时间: 2017-04-05, 2017-11-26; 采用时间: 2017-12-26
张贵民 :基于运行特征监控的代码复用攻击防御
3519
Key words: code reuse attack (CRA); running characteristics; system call; instrumentation
代码复用攻击(code reuse attack,简称 CRA)正严重威胁着网络系统的安全.CRA 并不向内存中植入任何恶
意代码,而是首先在内存中的已有代码中寻找可用的指令序列( gadget),然后劫持控制流,使这些 gadget 得到
执行从而实现攻击.因此,CRA 能绕过数据执行阻止技术(data executive prevention,简称 DEP)
[1]
WX 等内
保护机制,典型 CRA 包括 return-into-libc(RILC)
[2]
ROP
[3]
JOP
[4]
COOP
[5]
.
CRA 防御方法总体可分为 3 :代码随机化防御方法、控制流完整性保护方法和 CRA 特征检测方法.
(1) 代码随机化防御方法
代码随机化防御方法通过增加攻击者获取 gadget 的难度,来防御代码复用攻击.ASLR
[6]
通过随机化动态链
接库和可执行文件的加载地址,使攻击者无法定位 gadget.之后,不同粒度的随机化方法
[7,8]
被先后提出,以增强
ASLR 方法的安全性.但攻击者仍可通过内存泄漏
[9]
找到 gadget,例如 JIT-ROP 攻击
[10]
.为了应对内存泄漏+代码
复用攻击,研究者提出了动态随机化方法.Isomeron
[11]
Remix
[12]
分别利用双函数副本执行和函数内基本块变
换的方式实现对函数内部的随机化,但都无法防御函数级复用攻击;TASR
[13]
实现了对程序整个代码段内存位
置的随机变化,但代码段内容不变.因此,一旦攻击者定位到该程序所在内存即可掌握其所有代码特.另外,
方法仅对 C 语言程序实施保护,应用范围受限.
(2) 控制流完整性保护方法
控制流完整性保护方法通过阻止攻击者篡改控制流,使 gadget 序列得不到执行.CFI
[14]
基于控制流图
(control-flow graph,简称 CFG)防御所有控制流劫持攻击,但开销较大,实用性差.为了降低开销,CCFI
[15]
Context-
sensitive CFI
[16]
CFI-KCraD
[17]
等方法通过结合对程序语义的分析,保证控制流在一定层度上的完整,提高
了方法的实用性.但控制流被劫持的风险依然存在
[18]
,例如 CFI-KCraD 中的方法只能防御指令片段的复用,而无
法防御函数级复用.
(3) CRA 特征检测方法
CRA 特征检测方法通过监控当前是否存在代码复用攻击的执行特征来检测和阻止攻击的实现.
ROPecker
[19]
通过检测是否执行了超过某个数量(阈值) gadget 来检测代码复用攻击,其问题在于难以确定合
理的阈值,且无法防御利用长 gadget 实施的攻击
[20]
.ROPdefender
[21]
基于 call 指令与 ret 指令的匹配来防御 ROP
攻击, call ret 指令并不总是成对出现,且该方法无法防御除 ROP 外的其他代码复用攻击, JOPCOOP
.文献[22]提出通过检测 ret 指令的执行频率来推断 ROP 攻击,但无法防御 JOPCPROP
[23]
等攻击.
除了上述防御方法外,SoftBound
[24]
Baggy Bounds Checking
[25]
等方法通过检测内存错误,从源头上来防御
攻击,但开销太大;文献[26]基于编译器来消除用于构建 gadget 的指令,该方法依赖源码且必须对所有程序模块
进行处理,实现复杂;文献[27]通过阻止对代码的读操作使攻击者无法通过直接扫描内存获取 gadget,但攻击
仍可通过其他内存泄漏方式获取到 gadget 并构造攻击;CPI
[28]
通过保护代码指针的完整性来防御代码复用攻
,但该方法已被证明是可以被绕过的
[29]
;DFI
[30]
基于静态分析的到达定义集合对数据进行保护,但需要源码且
需要处理所有相关库和模块.
另外,还有通过代码和数据隔离的方法
[31]
,可防御内存泄漏攻击,却无法防御 return-into-libc 攻击.
通过分析当前代码复用攻击的防御方法,发现依然还存在以下几个方面的问题.
1) 代码随机化方法通过阻止攻击者获取有效的 gadget 信息来预防代码复用攻击,尤其是动态随机化,
攻击者仍可借助侧信道攻击
[32]
等方式绕过该类防御方法.
2) 控制流完整性保护方法阻止攻击者执行 gadget ,但研究表明,即使在细粒度控制流完整性保护下,
攻击者仍可劫持控制流执行特定代码.
3) 基于 CRA 特征检测的方法在代码复用攻击运行阶段检测和阻止攻击的进一步执行,但无法涵盖当前
各种新型代码复用攻击的所有特征,防御能力有限.
代码随机化方法和控制流完整性保护方法能够在一定程度上增加 CRA 实现的难度,但总会出现能够突破
of 17
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜