[精选]第七章计算机系统安全(缓冲区溢出)8529.pptx

上传人:muj****520 文档编号:87136743 上传时间:2023-04-16 格式:PPTX 页数:65 大小:293.23KB
返回 下载 相关 举报
[精选]第七章计算机系统安全(缓冲区溢出)8529.pptx_第1页
第1页 / 共65页
[精选]第七章计算机系统安全(缓冲区溢出)8529.pptx_第2页
第2页 / 共65页
点击查看更多>>
资源描述

《[精选]第七章计算机系统安全(缓冲区溢出)8529.pptx》由会员分享,可在线阅读,更多相关《[精选]第七章计算机系统安全(缓冲区溢出)8529.pptx(65页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2023/3/18网络安全网络安全Network SecurityNetwork Security2023/3/18第第7 7章章 计算机系统安全(缓冲区溢出)计算机系统安全(缓冲区溢出)缓冲区溢出概述缓冲区溢出概述 缓冲区溢出攻击的原理缓冲区溢出攻击的原理 缓冲区溢出攻击的防御技术缓冲区溢出攻击的防御技术 2023/3/18第第7 7章章 计算机系统安全(缓冲区溢出)计算机系统安全(缓冲区溢出)缓冲区溢出概述缓冲区溢出概述缓冲区溢出攻击的原理缓冲区溢出攻击的原理 缓冲区溢出攻击的防御技术缓冲区溢出攻击的防御技术 2023/3/18缓冲溢出概述缓冲溢出概述l1.缓冲区的定义缓冲区的定义l连续的

2、一段存储空间。连续的一段存储空间。l2.缓冲区溢出的定义缓冲区溢出的定义l指写入缓冲区的数据量超过该缓冲区能容纳的最大限度,指写入缓冲区的数据量超过该缓冲区能容纳的最大限度,造成溢出的数据改写了与该缓冲区相邻的原始数据的情造成溢出的数据改写了与该缓冲区相邻的原始数据的情形。形。lBuffer overflow is the result of writing more data into a buffer than the buffer can hold.2023/3/18ExamplelConsider the following codeint main(void)char buffer4

3、;strcpy(buffer,“AAA”);mainstackframe previousstack framebuffer4High addressesLow addressesAAA02023/3/18Example(contd.)lNow we input 4+4+3 As instead of 4 As.int main(void)char buffer4;strcpy(buffer,“”);AAAAAAAAAAAAAAmainstackframe previousstack framebuffer4Higher addressesLower addresses?AAAAAAAAAAA

4、02023/3/18缓冲溢出概述缓冲溢出概述(续)(续)l3.缓冲区溢出的危害缓冲区溢出的危害l利用缓冲区溢出实现在本地或者远程系统上实现任意执行代码的利用缓冲区溢出实现在本地或者远程系统上实现任意执行代码的目的,从而进一步达到对被攻击系统的完全掌控;目的,从而进一步达到对被攻击系统的完全掌控;l利用缓冲区溢出进行利用缓冲区溢出进行DoS(Denial of Service)攻击;攻击;l利用缓冲区溢出破坏关键数据,使系统的稳定性和有效性受到不利用缓冲区溢出破坏关键数据,使系统的稳定性和有效性受到不同程度的影响;同程度的影响;l实现蠕虫程序实现蠕虫程序l1988 Robert T.Morris

5、蠕虫利用蠕虫利用UNIX 系统中系统中In,the Morris Internet worm exploited buffer overflow vulnerability in fingerd server program on UNIX systems.l曾在曾在2001年造成大约年造成大约26亿美元损失的亿美元损失的Code Red蠕虫及其变体蠕虫及其变体就是利用了就是利用了Microsoft IIS中的缓冲区溢出进行攻击中的缓冲区溢出进行攻击 l2002年的年的Sapphire蠕虫和蠕虫和2004年的年的Witty蠕虫也都利用了缓冲蠕虫也都利用了缓冲区溢出进行攻击。区溢出进行攻击。lI

6、n 2004,the Witty worm takes advantage of a buffer overflow flaw in several Internet Security Systems(ISS)products.2023/3/18缓冲区溢出相关的软件安全隐患数目占整个软件安全隐患数目的比例缓冲区溢出相关的软件安全隐患数目占整个软件安全隐患数目的比例2023/3/18缓冲溢出概述缓冲溢出概述(续)(续)l4.造成缓冲区溢出的根本原因造成缓冲区溢出的根本原因l代码在操作缓冲区时,没有有效地对缓冲区边界进行检代码在操作缓冲区时,没有有效地对缓冲区边界进行检查查,使得写入缓冲区的数据量

7、超过缓冲区能够容纳的范,使得写入缓冲区的数据量超过缓冲区能够容纳的范围,从而导致溢出的数据改写了与该缓冲区相邻存储单围,从而导致溢出的数据改写了与该缓冲区相邻存储单元的内容。元的内容。lC and C+are the most common languages to create buffer overflows.lC语言中许多字符串处理函数如:语言中许多字符串处理函数如:Strcpy、Strcat、Gets、Sprintf等都没有对数组越界加以检测和限制。等都没有对数组越界加以检测和限制。2023/3/18缓冲溢出概述缓冲溢出概述(续)(续)lMicrosoftWindows,Linux/U

8、nix,AppleMacintosh等主流操作系统无一例外存在缓冲区等主流操作系统无一例外存在缓冲区溢出问题。溢出问题。l存在缓冲区溢出问题的应用程序也广泛存在,涉存在缓冲区溢出问题的应用程序也广泛存在,涉及数据库系统例如及数据库系统例如MicrosoftSQLServer2000,Oracle9i,网络服务,网络服务(MicrosoftIIS),网络协议实,网络协议实现现(例如例如OpenSSL),多媒体软件,多媒体软件(AppleQuickTime)等等等等 2023/3/18缓冲溢出概述缓冲溢出概述(续)(续)l缓冲区溢出可以成为攻击者实现攻击目标的手段,缓冲区溢出可以成为攻击者实现攻击

9、目标的手段,但是单纯地溢出缓冲区并不能达到攻击的目的。但是单纯地溢出缓冲区并不能达到攻击的目的。l在绝大多数情况下,一旦程序中发生缓冲区溢出,系统在绝大多数情况下,一旦程序中发生缓冲区溢出,系统会立即中止程序并报告会立即中止程序并报告“fault segment”。例如缓冲区。例如缓冲区溢出,将使返回地址改写为一个非法的、不存在的地址,溢出,将使返回地址改写为一个非法的、不存在的地址,从而出现从而出现core dump错误,不能达到攻击目的。错误,不能达到攻击目的。l只有对缓冲区溢出只有对缓冲区溢出“适当地适当地”加以利用,攻击者才加以利用,攻击者才能通过其实现攻击目标。能通过其实现攻击目标。

10、2023/3/18第第7 7章章 计算机系统安全(缓冲区溢出)计算机系统安全(缓冲区溢出)缓冲区溢出概述缓冲区溢出概述 缓冲区溢出攻击的原理缓冲区溢出攻击的原理缓冲区溢出攻击的防御技术缓冲区溢出攻击的防御技术 2023/3/18缓冲溢出攻击的原理缓冲溢出攻击的原理l1.缓冲区溢出攻击模式缓冲区溢出攻击模式Attacked System溢出缓冲区溢出缓冲区重定向到攻击程序重定向到攻击程序任意地执行程序任意地执行程序执行攻击程序执行攻击程序Attacker注入恶意数据注入恶意数据获得控制权获得控制权找到可利用的缓冲找到可利用的缓冲区溢出隐患区溢出隐患恶意数据可以通过恶意数据可以通过命令行参数、命令

11、行参数、环境变量、环境变量、输入文件或者输入文件或者网络数据注入网络数据注入2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l2.缓冲区溢出可能发生的位置缓冲区溢出可能发生的位置l预备知识点预备知识点l进程在内存中的布局进程在内存中的布局2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l代码段代码段/文本段文本段l用于放置程序的可执行代码用于放置程序的可执行代码(机器码机器码)。l数据段数据段l用于放置已初始化的全局变量和已初始用于放置已初始化的全局变量和已初始化的局部静态变量。化的局部静态变量。lBSS(Block Started by Symbol)段段

12、l用于放置未初始化的全局变量和未初始用于放置未初始化的全局变量和未初始化的局部静态变量。化的局部静态变量。l堆堆l用于动态分配内存。用于动态分配内存。l堆栈段堆栈段l用于存放函数的参数,返回地址,调用用于存放函数的参数,返回地址,调用函数的栈基址以及局部非静态变量。函数的栈基址以及局部非静态变量。l进程的环境变量和参数进程的环境变量和参数.text.data.bssheapunusedstackenvLow addressHigh addressLinux/Intel IA-32 architecture2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l2.缓冲区溢出可能发生

13、的位置(续)缓冲区溢出可能发生的位置(续)l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh addressLinux/Intel IA-32 architecture2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l2.缓冲区溢出可能发生的位置(续)缓冲区溢出可能发生的位置(续)l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh

14、addressLinux/Intel IA-32 architecture2023/3/18被调函数堆栈布局被调函数堆栈布局l堆栈采用后进先出堆栈采用后进先出(LIFO)的方式管理数据,这种的方式管理数据,这种方式是实现函数嵌套调用的关键。方式是实现函数嵌套调用的关键。Previous stack framesFunction argumentsReturn addressPrevious frame pointerLocal variablesHigh addressLow address从右到左的顺序从右到左的顺序指令寄存器指令寄存器(EIP)基址寄存器基址寄存器(EBP)局部非静态变量局

15、部非静态变量2023/3/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);2023/3/18Example(contd.)Large_string上一个栈帧地址上一个栈帧地址返回地址返回地址 argv内存低端内存低端内存高端内存高端

16、argcESPmain函数栈帧函数栈帧void main(int argc,char*argv)i2023/3/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;iBB.BBB(total15Bs)l产生溢出的输入产生溢出的输入lPrompt:BB.BBB(total40Bs)(a)heap layout without

17、 overflow0030035000300360003003700030034000300380BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB0AAAAAA0(b)heap layout with overflowBBBBBBBBBBBBBBB0AAAAAAAAAAAAAAA02023/3/18基于堆的缓冲区溢出攻击举例基于堆的缓冲区溢出攻击举例l1996年年BSDI crontab被发现存在基于堆的缓冲区被发现存在基于堆的缓冲区溢出隐患,攻击者可以通过输入一个长文件名溢溢出隐患,攻击者可以通过输入一个长文件名溢出在堆上的缓冲区,溢出数据改写的区域是保存出在

18、堆上的缓冲区,溢出数据改写的区域是保存有用户名、密码、有用户名、密码、uid,gid等信息的区域。等信息的区域。2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l2.缓冲区溢出可能发生的位置(续)缓冲区溢出可能发生的位置(续)l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh addressLinux/Intel IA-32 architecture2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l基于数据段的缓冲区溢出基于数据段的缓冲

19、区溢出void Overflow_Data(char*input)static char buf4=”CCCC”;int i;for(i=0;i 12;i+)bufi=A;2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l2.缓冲区溢出可能发生的位置(续)缓冲区溢出可能发生的位置(续)l堆栈堆栈(stack)l堆堆(heap)l数据段数据段(data)lBSS段段.text.data.bssheapunusedstackenvLow addressHigh addressLinux/Intel IA-32 architecture2023/3/18缓冲溢出攻击的原理(续)缓冲

20、溢出攻击的原理(续)l基于基于BSS段的缓冲区溢出段的缓冲区溢出void Overflow_BSS(char*input)static char buf4;int i;for(i=0;i 12;i+)bufi=A;2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l3.常见的溢出缓冲区的途径常见的溢出缓冲区的途径l利用利用C的标准函数库的标准函数库l常见的有常见的有strcpy、strcat、sprintf、gets “Mudge”.How to Write Buffer Overflows.http:/ A.Henry MCP+I et al.Buffer Overflow

21、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.2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l利用数组下标的越界操作利用数组下标的越界操作lOff-by-one缓冲区溢出缓冲区溢出l利用数组的最大下标与数组长度的差异产生。利用数组的最大下标与数组长度

22、的差异产生。例如例如l1998年年10月月BugTraq公布出公布出Linux libc中的中的realpath函数存在函数存在single-byte缓冲区溢出隐患,攻击者可以利用它获得缓冲区溢出隐患,攻击者可以利用它获得root权限。权限。参见参见O.Kirch.The poisoned nul byte,post to the bugtraq mailing list,October 1998.l2000年年12月月OpenBSD安全组公布安全组公布ftpd存在类似安全隐患。参见存在类似安全隐患。参见OpenBSD developers,single-byte buffer overflo

23、w vulnerability in ftpd,December 2000.void BadCode(char*str)char buffer512;for(i=0;i=512;i+)bufferi=stri;2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续)l利用有符号整数与无符号整数的转换利用有符号整数与无符号整数的转换 void BadCode(char*input)short len;char buf64;len=strlen(input);if(len MAX_BUF)strcpy(buf,input);2023/3/18缓冲溢出攻击的原理(续)缓冲溢出攻击的原理(续

24、)l4.恶意代码(注入)恶意代码(注入)例如为实现:例如为实现:“exec(/bin/sh)”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;

25、i 32;i+)*(long_ptr+i)=(int)buffer;for(i=0;istrlen(shellcode);i+)large_string i =shellcode i ;strcpy(buffer,large_string);2023/3/18The 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*

26、/x88x46x07 /*movb%al,0 x07(%esi)*/x89x46x0c /*movl%eax,$0 x0c(%esi)*/xb0 x0b /*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 */*ca

27、llz:*/xe8xdcxffxffxff /*call start */*DATA*/bin/sh;1322023/3/18基于堆栈的缓冲区溢出攻击举例基于堆栈的缓冲区溢出攻击举例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*lo

28、ng_ptr;long_ptr=(long*)large_string;for(i=0;i 32;i+)*(long_ptr+i)=(int)buffer;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;2

29、023/3/18缓冲区溢出攻击的防御技术缓冲区溢出攻击的防御技术l基于软件的防御技术基于软件的防御技术l类型安全的编程语言类型安全的编程语言l相对安全的函数库相对安全的函数库l修改的编译器修改的编译器l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件的防御技术基于硬件的防御技术l处理器结构方面的改进处理器结构方面的改进2023/3/18基于软件的防御技术(续)基于软件的防御技术(续)l修改的编译器修改的编译器l增强边界检查能力的增强边界检查能力的C/C+编译器编译器l例如针对例如针对GNU C编译器扩展数组和指针的边界检查。编译器扩展数组和指针的边界检查。Wind

30、ows Visual C+.NET的的GS 选项也提供动态检测缓冲区选项也提供动态检测缓冲区溢出的能力。溢出的能力。l返回地址的完整性保护返回地址的完整性保护l将堆栈上的返回地址备份到另一个内存空间;在函数执行返将堆栈上的返回地址备份到另一个内存空间;在函数执行返回指令前,将备份的返回地址重新写回堆栈。回指令前,将备份的返回地址重新写回堆栈。l许多高性能超标量微处理器具有一个返回地址栈,用于指令许多高性能超标量微处理器具有一个返回地址栈,用于指令分支预测。返回地址栈保存了返回地址的备份,可用于返回分支预测。返回地址栈保存了返回地址的备份,可用于返回地址的完整性保护地址的完整性保护 l缺点缺点l

31、性能代价性能代价l检查方法仍不完善检查方法仍不完善 2023/3/18缓冲区溢出攻击的防御技术缓冲区溢出攻击的防御技术l基于软件的防御技术基于软件的防御技术l类型安全的编程语言类型安全的编程语言l相对安全的函数库相对安全的函数库l修改的编译器修改的编译器l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件的防御技术基于硬件的防御技术l处理器结构方面的改进处理器结构方面的改进2023/3/18基于软件的防御技术(续)基于软件的防御技术(续)l内核补丁内核补丁l将堆栈标志为不可执行来阻止缓冲区溢出攻击;将堆栈标志为不可执行来阻止缓冲区溢出攻击;l将堆或者数据段标志为不可

32、执行。将堆或者数据段标志为不可执行。l例如例如Linux的内核补丁的内核补丁Openwall、RSX、kNoX、ExecShield和和PaX等实现了不可执行堆栈,并且等实现了不可执行堆栈,并且RSX、kNoX、ExecShield、PaX还支持不可执行堆。另外,为还支持不可执行堆。另外,为了抵制了抵制return-to-libc这类的攻击,这类的攻击,PaX增加了一个特性,增加了一个特性,将函数库映射到随机的内存空间将函数库映射到随机的内存空间l缺点:缺点:对于一些需要堆栈对于一些需要堆栈/堆堆/数据段为可执行状态的应数据段为可执行状态的应用程序不合适;需要重新编译原来的程序,如果没有源用程

33、序不合适;需要重新编译原来的程序,如果没有源代码,就不能获得这种保护。代码,就不能获得这种保护。2023/3/18缓冲区溢出攻击的防御技术缓冲区溢出攻击的防御技术l基于软件的防御技术基于软件的防御技术l类型安全的编程语言类型安全的编程语言l相对安全的函数库相对安全的函数库l修改的编译器修改的编译器l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件的防御技术基于硬件的防御技术l处理器结构方面的改进处理器结构方面的改进2023/3/18基于软件的防御技术(续)基于软件的防御技术(续)l静态分析方法静态分析方法l字典检查法字典检查法l遍历源程序查找其中使用到的不安全的库

34、函数和系统调遍历源程序查找其中使用到的不安全的库函数和系统调用。用。l例如静态分析工具例如静态分析工具ITS4、RATS(Rough Auditing Tool for Security)等。其中等。其中RATS提供对提供对C,C+,Perl,PHP以以及及Python语言的扫描检测。语言的扫描检测。l缺点:误报率很高,需要配合大量的人工检查工作。缺点:误报率很高,需要配合大量的人工检查工作。2023/3/18基于软件的防御技术(续)基于软件的防御技术(续)l静态分析方法(续)静态分析方法(续)l程序注解法程序注解法 l包括缓冲区的大小,指针是否可以为空,输入的有效约包括缓冲区的大小,指针是否

35、可以为空,输入的有效约定等等。定等等。l例如静态分析工具例如静态分析工具LCLINT、SPLINT(Secure Programming Lint)。l缺点:依赖注释的质量缺点:依赖注释的质量2023/3/18基于软件的防御技术(续)基于软件的防御技术(续)l静态分析方法(续)静态分析方法(续)l整数分析法整数分析法l将字符串形式化为一对整数,表明字符串长度将字符串形式化为一对整数,表明字符串长度(以字节以字节数为单位数为单位)以及目前已经使用缓冲区的字节数。通过这以及目前已经使用缓冲区的字节数。通过这样的形式化处理,将缓冲区溢出的检测转化为整数计算。样的形式化处理,将缓冲区溢出的检测转化为整

36、数计算。l例如静态分析工具例如静态分析工具BOON(Buffer Overrun detectiON)。l缺点:仅检查缺点:仅检查C中进行字符串操作的标准库函数。检查中进行字符串操作的标准库函数。检查范围很有限。范围很有限。2023/3/18基于软件的防御技术(续)基于软件的防御技术(续)l静态分析方法(续)静态分析方法(续)l控制流程分析法控制流程分析法l将源程序中的每个函数抽象成语法树,然后再把语法树将源程序中的每个函数抽象成语法树,然后再把语法树转换为调用图转换为调用图/控制流程图来检查函数参数和缓冲区的控制流程图来检查函数参数和缓冲区的范围。范围。l例如静态分析工具例如静态分析工具AR

37、CHER(ARrayCHeckER)、UNO、PREfast和和Coverity等。等。l缺点:对于运行时才会显露的问题无法进行分析缺点:对于运行时才会显露的问题无法进行分析;存;存在误报的可能。在误报的可能。2023/3/18缓冲区溢出攻击的防御技术缓冲区溢出攻击的防御技术l基于软件的防御技术基于软件的防御技术l类型安全的编程语言类型安全的编程语言l相对安全的函数库相对安全的函数库l修改的编译器修改的编译器l内核补丁内核补丁l静态分析方法静态分析方法l动态检测方法动态检测方法l基于硬件的防御技术基于硬件的防御技术l处理器结构方面的改进处理器结构方面的改进2023/3/18基于软件的防御技术(

38、续)基于软件的防御技术(续)l动态检测方法动态检测方法lCanary-based检测方法检测方法l将将canary(一个检测值一个检测值)放在缓冲区和需要保护的数据之放在缓冲区和需要保护的数据之间,并且假设如果从缓冲区溢出的数据改写了被保护数间,并且假设如果从缓冲区溢出的数据改写了被保护数据,检测值也必定被改写。据,检测值也必定被改写。l例如动态检测工具例如动态检测工具StackGuard、StackGhost、ProPolice、PointGuard等。等。l缺点:多少工具通过修改编译器实现检测功能,需要重缺点:多少工具通过修改编译器实现检测功能,需要重新编译程序;这种方法无法检测能过绕过检

39、测值的缓冲新编译程序;这种方法无法检测能过绕过检测值的缓冲区溢出攻击。区溢出攻击。protected Datacanary.buffer2023/3/18基于软件的防御技术(续)基于软件的防御技术(续)l动态检测方法(续)动态检测方法(续)l输入检测方法输入检测方法l向运行程序提供不同的输入,检查在这些输入条件下程向运行程序提供不同的输入,检查在这些输入条件下程序是否出现缓冲区溢出问题。不仅能检测缓冲区溢出问序是否出现缓冲区溢出问题。不仅能检测缓冲区溢出问题,还可以检测其它内存越界问题。题,还可以检测其它内存越界问题。l采用输入检测方法的工具有采用输入检测方法的工具有Purify、Fuzz和和

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

41、改进2023/3/18基于硬件的防御技术基于硬件的防御技术2023/3/18缓冲区溢出攻击防御技术展望缓冲区溢出攻击防御技术展望lSoftware-based solutions 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

42、implement software in a security conscious manner.2023/3/18教材与参考书教材与参考书l教材:教材:l李毅超李毅超曹跃,网络与系统攻击技术曹跃,网络与系统攻击技术电子科大出版社电子科大出版社2007l周世杰周世杰陈伟陈伟钟婷,网络与系统防御技术钟婷,网络与系统防御技术电子科大出版社电子科大出版社2007 l参考书参考书l阙喜戎阙喜戎 等等 编著,信息安全原理及应用,清华大学出版社编著,信息安全原理及应用,清华大学出版社lChristopher M.King,Curitis E.Dalton,T.Ertem Osmanoglu(常晓波(常晓

43、波等译)等译).安全体系结构的设计、部署与操作,清华大学出版社,安全体系结构的设计、部署与操作,清华大学出版社,2003(Christopher M.King,et al,Security Architecture,design,deployment&Operations)lWilliam Stallings,密码编码学与网络安全原理与实践(第三版),密码编码学与网络安全原理与实践(第三版),电子工业出版社,电子工业出版社,2004lStephen Northcutt,深入剖析网络边界安全,机械工业出版社,深入剖析网络边界安全,机械工业出版社,2003l冯登国,计算机通信网络安全,冯登国,计算机通信网络安全,2001lBruce Schneier,Applied Cryptography,Protocols,algorithms,and source code in C(2nd Edition)(应用密码学应用密码学 协议、算法与协议、算法与C源程序,源程序,吴世忠、祝世雄、张文政等译吴世忠、祝世雄、张文政等译)l蔡皖东,网络与信息安全,西北工业大学出版社,蔡皖东,网络与信息安全,西北工业大学出版社,20042023/3/18Any Question?Q&A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 考试试题 > 一级建造

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁