第
36
卷第
17
期
Vol
.3
6
No.17
计算机工程
Computer
Engineering
2010
茸
9
月
September
2010
·安全技术·
文章编号:
100• 3428(2010)17
-6
147
-6
5
文献标识码
:A
申回分提号:
TP316
Windows
下缓冲区溢出保护机制及绕过技术
马→楠
1
,张立和
2
(1.河南大学计算机与信息工程学院,开封
475004;
2.
大连理工大学信息与通信王程学院,大连
116024)
摘要:综述当前
Windows
平台下主要的缓冲区溢出保护机制,该保护机制的绕过技术可以提高漏洞分析与利用的成功率及操作系统的安
全性。介绍当前主要的缓神区溢出保护机制的绕过技术的发展现状。针对堆核溢出及数据执行保护
(DEP)
机制的突破技术,分别给出突破
原理和方法。通过实验验证了
DEP
突破技术的有效性。
关键词:缓冲区溢出;梳溢出;堆溢出;数据执行保护;绕过技术
Buffer Overflow Protection Mechanism and Bypass Technology
Under Windows
如1.
A
Yi-nan'
,
ZHANG
Li
-he
2
(1.
School ofComputer and Information Engineering, Henan Umversity, Kaifeng 475004;
2.
School
of
In
formation and Communication Engineering, Dalian Umversity ofTechnology, Dalian 116024)
IAbstractJ
In
由
IS
paper
,由
e
main buffer overflow protection mechanism
is
summarized under the current Windows platform, and the method and
technologies about bypassing these protection mechanlsms are studied
, whlch can increase the success rate
of
vulnerabilities analysis and use, and
guide
to
improve
也
e
security
ofthe
operatmg system. The paper describes the development
ofthe
current main technologies on bypassing the buffer
overflow protection mechanisms.
Th
e principles and methods about bypassmg stack overflow protection, heap overflow protection Data Execution
Prevention(DEP) are all g
lY
en. Effectiveness
ofthe
methods ofbypassing DEP IS verified through
an
experimen
t.
IKey
WOI
也
J
buffer overflow; stack overflow; heap overflow; Data Execution Prevention(DEP); bypass technology
1
概述
缓
J
中区溢出的提出已有
20
多年历史,然而直到
1998
年,
利用缓冲区溢出漏洞进行攻击才逐渐引起计算机安全人员的
广泛重视。在当年
CERT
的
13
份安全建议中,有
9
份与缓冲
区溢出有关;次年,至少有半数的建议和缓冲区溢出有关。
2003
年
7
月公开的
10
大安全漏洞通告中至少有
5
项属于缓
神区溢出漏洞。完全避免这种漏洞造成的安全威胁是不可能
的,但可以构建完善的防范体系来降低冲区溢出攻击的威胁。
面对越来越多的来自缓冲区溢出攻击的威胁,提出了检
测和防止缓冲区溢出发生的自适应技术,并展示了
Immunix
根据自动检测和预防技术开发的
StackGuard
系统
[1)
。后来,
Richard
Jones
和
Paul
Kelly
对
gcc
进行了完善,在技术上实
现了对
C
程序完全的数组边界检查,防范溢出问题。目前,
分别从静态和动态
2
个角度来保护是防止缓冲区溢出的主要
手段和方法
[2)
。
静态保护技术包括编译条件限制、返回地址保护、二进
制改写以及代码审计等。文献
[3]
提到了
"Using
Programmer
Written
Compiler
Extensions
to
Catch
Security
Holes"
的报告。
2001
年,在
ICDCS
年会议上,提出了
RAD[4)
保护方法,采
用在编译时加入对返回地址的保护机制。
动态保护技术包括虚拟路径技术、虚拟核技术、非安全
函数
hook
技术以及数据执行保护技术等。文献
[5]
提出了采
用虚拟路径方法。
2001
年,在
IEEE
会议上,提出了基于下
推自动机的虚拟核技术
[6)
。非安全函数
hook
技术在很多相关
的检测工具中都进行了实现,如
LibSafe
工具等。
对于缓冲区溢出,微软公司也逐渐加大了保护力度。
Windows
操作系统自
XP
SP2
开始加入随机化
PEB(Process
Environment
Block)
管理结构的机制、
SEH(Structure
Exception
Handling)
的保护、
VEH(Vector
Exception
Handling)
链表指针
-RtlpCallOutEntryLlst
的保护和堆块结构
Cookie
的保护等缓
冲区溢出保护技术。
Windows
7
操作系统不仅继承了
XPSP2
在缓冲区溢出防护上的成果,同时针对其不足进行了改进,
形成了一套较为完善的溢出保护体系。在
Windows
平台下,
针对缓冲区溢出保护的关键技术包括地址空间布局随机化
(Address Space
Layout
Randomization
,
ASLR)
、安全结构化异
常处理
(Safe
Structured
Exception
Handling
,
SafeSEHp)
、
GS
Stack
Protection
、
DEPINX(x64)
等。
2
保护机制突破技术
缓冲区溢出保护机制虽然在很大程度上提高了缓神区溢
出漏洞利用的难度,在一定程度上保证了系统和软件的安全,
但这些保护机制仍存在一些缺陷,采用→些方法仍能够使保
护机制失效。
2.1
堆保护突破
Windows
XP
SP2
操作系统的
Lookaside
单项链表存在问
题。当表中的某个节点被移出链表时,系统没有检查其
Flink
伴着简介:马一楠(1
989-
),女,本科生,主研方向:网络与信息安
全;张立和,副教授、博士
收稿日期:
2010-03-20 E-mail: 1057396709@qq.com
147
一