没有合适的资源?快使用搜索试试~ 我知道了~
近30年来,攻击者利用Windows内存漏洞发起的攻击事件层出不穷,其惯用手段是攻击控制数据以劫持执行流。为此,微软在Windows上加注了层层防护以遏止此类攻击,但现阶段部署的防护机制无法阻止针对非控制数据的攻击。鉴于目前研究Windows内存防护机制的文献寥寥无几,对Windows采用的各种内存防护机制及其突破技术进行了深入研究,并详述非控制数据防护的研究现状,在此基础上,分析了Windows内存防护面临的挑战,并讨论了内存防护的未来之路。
资源推荐
资源详情
资源评论
2017 年 10 月 Chinese Journal of Network and Information Security October 2017
00208-1
第 3 卷第 10 期 网络与信息安全学报 Vol.3
No.10
Windows 内存防护机制研究
鲁婷婷
1
,王俊峰
1,2
(1. 四川大学计算机学院,四川 成都 610065;
2. 四川大学空天科学与工程学院,四川 成都 610065)
摘 要:近 30 年来,攻击者利用 Windows 内存漏洞发起的攻击事件层出不穷,其惯用手段是攻击控制数据
以劫持执行流。为此,微软在 Windows 上加注了层层防护以遏止此类攻击,但现阶段部署的防护机制无法阻
止针对非控制数据的攻击。鉴于目前研究 Windows 内存防护机制的文献寥寥无几,对 Windows 采用的各种
内存防护机制及其突破技术进行了深入研究,并详述非控制数据防护的研究现状,在此基础上,分析了
Windows 内存防护面临的挑战,并讨论了内存防护的未来之路。
关键词:Windows 内存防护;内存防护机制;控制数据防护;非控制数据防护
中图分类号:TP309
文献标识码:A
doi: 10.11959/j.issn.2096-109x.2017.00208
Research on Windows memory protection mechanism
LU Ting-ting
1
, WANG Jun-feng
1,2
(1. College of Computer Science, Sichuan University, Chengdu 610065, China;
2. School of Aeronautics and Astronautics, Sichuan University, Chengdu 610065, China)
Abstract: Over the past three decades, attacks exploiting Windows memory holes have emerged in an endless
stream, and the usual means is to attack control-data to hijack the execution flow of the program. To this end, Mi-
crosoft has added layers of protection mechanisms to Windows to prevent such attacks. But at this stage, the defen-
sive mechanisms deployed on Windows cannot prevent attacks against non-control-data. In view of the published ar-
ticles lacking comprehensive study of Windows memory protection mechanism, a detailed introduction to Windows
memory protection mechanism and its breakthrough techniques, and non-control-data protection research status was
conducted. On this basis, the challenges of Windows memory protection were analyzed and the future of memory
protection was discussed.
Key words: Windows memory protection, memory protection mechanism, control-data protection, non-control-data
protection
1 引言
近 30 年来,针对内存溢出漏洞发起的攻
击数不胜数,从第一代网络蠕虫 Morris
[1]
到
Heartbleed
[2]
,每次攻击都造成灾难性后果。此类
攻击大多通过缓冲区溢出修改影响程序执行流程
收稿日期:2017-09-06;修回日期:2017-09-18。通信作者:王俊峰,wangjf@scu.edu.cn
基金项目:国家重点研发计划基金资助项目(No.2016QY06X1205, No.2016YFB0800605);国家自然科学基金资助项目
(No.91438120, No.91338107, No.91438119);四川省重点研发计划基金资助项目(No.17ZDYF2583)
Foundation Items: The National Key Research and Development Program (No.2016QY06X1205, No.2016YFB0800605), The
N
ational Natural Science Foundation of China (No.91438120, No.91338107, No.91438119), The Technology Research and De-
velopment Program of Sichuan Province (No.17ZDYF2583)
·2· 网络与信息安全学报 第 3 卷
00208-2
的控制数据,如返回地址
[3]
、虚表指针
[4]
等,进而
劫持控制流,使其指向定制的 shellcode,执行恶
意代码以达到攻击目标,如图 1 所示。安全界针
对此类攻击的防护已有大量的研究成果,如控制
流完整性(CFI, control flow integrity)
[5]
、代码指
针完整性(CPI, code-pointer integrity)
[6]
等,多种
成熟的防护技术也已部署到商业应用。但随着控
制数据防护技术的大范围部署,另一类针对非控
制数据的攻击应运而生。非控制数据攻击完全遵
循合法的控制流,通过非法写程序的关键数据(如
决策数据
[7]
)或者读敏感数据破坏数据的完整性
和机密性
[8]
,以达到改变执行流、泄露安全信息
或提升权限等目的,图 2 为覆写决策数据改变程
序分支的示意。针对非控制数据攻击的防护研究
也已有数十载,相继提出了很多防护技术,如数
据流完整性(DFI, data flow integrity)
[9]
、数据空
间随机化(DSR, data space randomization)
[10]
等,但
由于自身的局限性,目前此类防护技术还未能广
泛地部署到商业应用。
Windows 作为全球占有量最大的桌面系统,
其安全性直接关乎高达 90%
[11]
个人计算机的安
全。面对冯·诺依曼体系的天然缺陷,接二连三
的内存攻击,微软不得不在 Windows 系统上相继
部署层层防护,如数据执行保护(DEP, data ex-
ecution prevention)
[12]
、控制流防护(CFG, control
flow guard)
[13]
等,以加强系统的安全性。虽然这
些内存防护机制加大了攻击的难度,但由于每种
机制都受限于特定的条件,因此也给攻破层层防
护留下了机会。从 Windows XP 到 Windows 10,
随着系统的逐步加固,利用缓冲区溢出实施控制
数据攻击的事件逐渐减少,与此同时,针对非控
制数据的攻击却在增长,内存防护仍任重道远。
图 3 展示了 Windows 已部署的内存防护机制及非
控制数据防护技术的研究成果。接下来对
Windows 上的每种内存防护机制进行详细介绍,
并指出其局限性和突破技术;随后介绍安全界针
对非控制数据攻击提出的各种防护方案;最后讨
论 Windows内存防护存在的挑战,以及未来之路。
图 1 覆盖返回地址劫持控制流
图 2 覆写决策数据改变程序分支
第 10 期 鲁婷婷等:Windows 内存防护机制研究 ·3·
00208-3
2 Windows 已部署的内存防护机制
随着缓冲区溢出漏洞利用的泛滥,微软在每
一次发布的 Windows系统中都引入新的内存保护
机制,这些机制成功阻扰了很多针对控制数据的
攻击,使 Windows 平台下能利用的漏洞大大减少。
然而每种机制都受限于特定条件,这给攻击者留
下了突破的机会。
2.1 GS 安全编译选项
微软在吸收 StackGuard
[14]
技术的思想上,独
立开发并在 Windows XP SP2 中引入 GS
[15]
编译技
术,在 visual studio 2003 及以后版本中默认启用
此编译选项。GS 编译选项为每个函数调用增加额
外数据 Security cookie 和安全校验操作,以检测
溢出攻击。在函数调用时,系统以.data 节中的第
一个双字作为 Security cookie 的种子,将其与函
数栈帧栈顶指针 ESP 异或后的结果压入栈中,作
为当前函数的 Security cookie;由于 Security
cookie 位于函数局部变量和函数返回地址之间,
当通过缓冲区溢出直接覆盖返回地址时,也会覆
盖 Security cookie;在函数返回时,系统执行安全
校验操作,将栈帧中的 Security cookie 还原并与
保存在.data 节中的 Security cookie 种子进行一致
性验证,若两者不一致,表明栈帧中的 Security
cookie 遭到破坏,发生了溢出攻击,立即进入异
常处理流程,反之函数正常返回。此过程如图 4
所示。
除加入 Security cookie 之外,微软在 visual
studio 2005 及后续版本中使用了 Variables reor-
dering
[16]
技术,将字符串变量移动到栈帧高地址,
同时在栈帧低地址存储指针类型和字符串类型参
数的副本,避免溢出破坏局部变量和函数参数。
此外,微软在 visual studio 2005 SP1 引入新的安
全标识#pragma strict_gs_check
[17]
,实现对不符合
GS 保护条件的函数添加保护。
尽管 GS 能够有效遏止直接修改返回地址的
溢出攻击,但其本身在设计上存在缺陷。一方面,
GS 只在函数返回时进行一致性验证,在此之前没
有任何的安全检查;另一方面,影响 GS 验证结
果的 Security cookie 种子保存在.data 节的固定位
置;此外,若定义了安全处理函数,其指针也将
存放在.data 节。因此大部分突破 GS 防护的技术
图 3 Windows 已部署的内存防护机制及非控制数据防护研究成果
剩余14页未读,继续阅读
资源评论
weixin_38638799
- 粉丝: 5
- 资源: 952
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功