收藏 分享(赏)

嵌入式网络安全设备的抗缓冲区溢出攻击机制new.doc

上传人:dzzj200808 文档编号:2339090 上传时间:2018-09-11 格式:DOC 页数:6 大小:502KB
下载 相关 举报
嵌入式网络安全设备的抗缓冲区溢出攻击机制new.doc_第1页
第1页 / 共6页
嵌入式网络安全设备的抗缓冲区溢出攻击机制new.doc_第2页
第2页 / 共6页
嵌入式网络安全设备的抗缓冲区溢出攻击机制new.doc_第3页
第3页 / 共6页
嵌入式网络安全设备的抗缓冲区溢出攻击机制new.doc_第4页
第4页 / 共6页
嵌入式网络安全设备的抗缓冲区溢出攻击机制new.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

1、1嵌入式网络安全设备的抗缓冲区溢出攻击机制杜皎 1,2 ,荆继武 2,李国辉 1 (国防科技大学 信息系统与管理学院,长沙 410073) 1(中国科学院研究生院 信息安全国家重点实验室,北京 100039) 2摘要:缓冲区溢出攻击已经成为网络安全威胁中最为严重的一类,而嵌入式网络安全设备则更需要有抗缓冲区溢出攻击的能力。本文在分析了缓冲区溢出的基本原理以及抗缓冲区溢出攻击的方法后,提出建立全新的嵌入式网络安全设备的安全架构,并构建多层次的抗缓冲区溢出攻击机制。文章根据网络安全设备的特点和特殊需求,详细阐述了适合嵌入式网络安全设备需要的多层次,全方位的抗缓冲区溢出攻击机制。关键词:嵌入式,网络

2、安全设备,缓冲区溢出,抗缓冲区溢出攻击机制1 引言缓冲区溢出已经成为近十年来最常见的安全隐患,并且在远程网络中利用缓冲区溢出进行的攻击占据了绝大多数。这样造成的后果非常严重,网络上的某个匿名用户可以获得其他主机部分甚至全部的控制权。缓冲区溢出攻击成为安全威胁中最为严重的一类【1,2,3】 。缓冲区溢出攻击之所以在安全攻击中占有这么大的比重,是因为缓冲区溢出的缺陷普遍存在并且非常容易被探测到。攻击者利用它能够准确地获得自己想要的东西,他插入攻击代码并使其运行在一定的特权下,最坏的情况,攻击者能够重新引导任何程序,甚至控制整个主机。人们在设计嵌入式系统时,除了本身必须的性能,还要考虑安全方面的因素

3、。它和普通的系统一样,缓冲区溢出攻击也会对它造成严重的破坏。对于嵌入式的网络安全设备来说,由于它在整个计算机和网络系统中特殊位置,各种各样的网络数据都会首先到达网络安全设备,它本身可能是受攻击最多的地方。它不但要能接受网络大流量的冲击,而且要能在较短的时间内对网络攻击做出反应。抗缓冲区溢出攻击的能力是网络安全设备的一项重要性能。所以,嵌入式网络安全设备的特殊性和复杂性,要求在整个系统设计的时期就考虑到这个问题,使它有较强的入侵容忍能力,避免以后各种问题的出现。系统中存在的缓冲区溢出缺陷的种类非常多,所以缓冲区溢出攻击的形式也多种多样。本文把抗缓冲区溢出攻击的方法从对抗层次上进行划分,并且针对嵌

4、入式网络安全设备的特点和需求,全面设计适合于它的对抗缓冲区溢出攻击机制,从根本上对抗缓冲区溢出攻击。2. 缓冲区溢出攻击的原理缓冲区溢出攻击向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。缓冲区溢出是程序员使用 C/C+库函数不当造成的,而更加根本的原因是 C/C+某些库函数的设计存在致命的缺陷。像 Strcpy这样依赖 NULL 标志来认定缓冲区的结束的 C 语言的库函数有很多,例如Strcat, Sprintf,Gets,Sscanf 等等都是,一旦在使用它们时没有进行正确的缓冲区长度检查,就可能形成缓冲区溢出漏洞。缓冲

5、区溢出攻击可以发生在堆栈、堆甚至 BSS(Block Storage Segment)和其他任何存放变量的地方。常见的是基于堆栈的缓冲区溢出攻击,只要找到一个堆栈,把其中的返回地址(return address)换成事先已经插入的恶意代码的起始地址,这样的缓冲区溢出攻击叫做摧毁堆栈攻击(stack smashing attack) 【4,5】 ,当然同样的情况可以发生在堆和 BSS 中。另一种2叫做函数指针攻击(function pointer attack) ,它把堆或 BSS 中的指针指向恶意代码或其他不在原程序流程中的代码,从而达到攻击的目的【6,7,8】 。缓冲区溢出攻击的目的是破坏程

6、序原有的特权级别,使得攻击者获得程序的控制权。如果原程序有足够的权限,攻击者甚至能获得主机的控制权。为了达到这个目标,攻击者通常分两步来做:a 在被攻击程序的地址空间安排一段合适的代码,或利用系统中原有的代码;b 通过把合适的参数装载到寄存器或内存中,使被攻击程序跳到这段代码中运行。3. 抗缓冲区溢出攻击的相关研究工作3.1 编写正确的代码使用安全的编程语言,编写正确的代码可以有效的对抗缓冲区溢出攻击。但是,为了提供良好的平台接口和符合大多数人的编程习惯,系统的程序都是用不安全的语言 C 和 C编写的。现在已经有很多代码的检查工具【9,10】 ,但是做代码检查的开销是非常大的,而且往往检查结果

7、不完整也不精确。代码中的一些缺陷是很难察觉的,却可能导致非常严重的后果。3.2 缓冲区不可执行如果系统中的数据段不可执行,那么,攻击者插入的恶意代码就不会被激活。如 Linux 的一些内核补丁就是采用这个原理【11】 。但是在一些要使用动态链接库的系统中就有矛盾了【12,13】 。通常可以使用一些折衷,如堆栈不可执行,这样还可以保持系统的兼容性。这种方法对抗摧毁堆栈攻击效果很好,但是它不能对抗其他类型的攻击。如果把攻击代码插入堆中或者静态的数据段中,或者用函数指针攻击,这个方法就无能为力了。3.3 边界检查与缓冲区不可执行相比,如果能做到完整的边界检查,那么缓冲区就不会被溢出,攻击也不可能成功

8、。这需要对每一条读和写的指令都进行检查,以确保在操作在边界的范围内。这类的工具很多,如 StackShield【14】 ,通常对编译器进行改造来完成边界检查,由此带来了很大的开销。而且它只能监测到直接指针,却绕过需要转换的指针。另外,对当前还没有发现的缓冲区溢出缺陷的攻击,本方法也不能对抗。3.4 指针完整性检查和边界检查不同,指针的完整性检查不是防止指针被篡改,而是找出已经被攻击篡改过的指针。这样,即使攻击者成功地破坏了原代码的指针,新的指针也不会被使用。因为每个指针使用之前都会对它的完整性进行检查,如 StackGuard【15】 、PointGuard。这种方法虽然不能防止入侵行为,但是

9、它能保证整个系统的性能和兼容性。这个也需要对编译器进行改造,通常在返回地址(return address)的下一个地址放置一个特殊标记,进一步的改造还可以放置随机数作为标记。标记的特点是容易维护,攻击者想得到它但非常困难。这样,指针即使被篡改,因为新指针的标记不符合系统要求,所以不会使用。4. 嵌入式网络安全设备4.1 简介现在的嵌入式系统大多用在手机、PDA、GPS、Set-Top-Box或是嵌入式伺服器(embedded server)及精简型终端设备(thin client)等等上,嵌入式的网络安全设备还比较少,一般都建立在较为成熟的硬件和操作系统的基础上。主要是因为网络安全设备需要有较

10、强的数据处理能力和网络协议的支持,但如果因此就使用通常的操作系统来做开发环境,所建立完成的系3统利用了嵌入式操作系统所提供的服务,但系统往往会付出较大的资源管理和应用上的开销;同时也沿袭了操作系统固有的缺陷和漏洞,这些安全隐患还会延伸到所开发完成的产品中。设计合理的嵌入式网络安全设备提供网络安全这一目标明确的服务,普通操作系统中大量的系统服务可以被抛弃掉,而加强和网络安全有关的服务。它只需要底层的硬件和软件向上层提供直接、简洁的抽象,从而节省系统开销,大大提高性能。并且,整个系统经过目标明确统一的整体设计,不划分明确的内核,只是把基本微内核扩展成底层的服务。这样会最大程度地发挥硬件的优势,不会

11、沿袭原有环境中的一些固有的缺陷和漏洞,使得整个系统硬件、系统服务软件和上层应用软件融合成一个和谐高效的整体。4.2 系统整体结构网络安全设备多种多样,网络安全设备所需完成的功能也纷繁复杂。系统的设计目标,就是设计建立可以完成多种网络安全功能的网络安全设备。该设备通过简洁高效的配置,可以完成某种或多种网络安全功能。整个系统不依赖某种操作系统而建立;系统开销小,对底层硬件资源可以进行较为直接的应用,极具高效性;它面对开发者的接口良好,符合开发人员原有的编程习惯;引入抗缓冲区溢出攻击的思想,整个系统建立一套自上而下,互为支持和补充的完整的抗缓冲区溢出攻击机制,使得系统有强大的抗缓冲区溢出攻击能力,系

12、统稳定性很强。本系统的特点是:1提供可定制的网络安全设备,开发人员可以容易地配置完成自己所需要的功能;2整个系统不依赖现有的操作系统而建立,整体结构简洁高效,并避免系统沿袭操作系统的固有漏洞;3为应用提供基于硬件的多重级别的保护;4建立自上而下,完善有效的机制对抗缓冲区溢出攻击。系统整体结构如图1所示。图 1 系统的整体结构5. 本系统的抗缓冲区溢出攻击机制5.1 多层次的抗缓冲区溢出攻击机制由于网络安全设备在网络中的特殊位置和作用,缓冲区溢出攻击对它的危害尤为显著。缓冲区溢出攻击所利用的漏洞多种多样,缓冲区溢出攻击的具体方法也分很多种,抗缓冲区溢出多级保护机制已经过普通编译器编译过的一个或多

13、个目标文件 *.obj系统基本框架抗缓冲区溢出攻击机制Flash image Memory image嵌入式网络安全设备linker loader 其他机制4不可能只采用某种办法,需要一套自上而下,互为支持和补充的完善有效的机制。任何情况下,攻击者需要溢出被攻击者的缓冲区,然后跳到自己的攻击程序,它利用的是系统内核本身或者应用程序的漏洞,我们在透彻分析了缓冲区溢出的机理后,使用有效手段,建立完善的机制。所以我们除了规范程序设计,主要应该通过一些有效的策略和方法,在系统设计时就采取措施,使缓冲区溢出攻击必须的条件不能满足,从根本上使得缓冲区溢出攻击在本系统不能成功。完善的抗缓冲区溢出攻击的机制应

14、该有五个层次:芯片级,操作系统级,编译器级,系统装载和连接级(loader&linker)以及编程级。我们的系统中的机制主要侧重于操作系统级和编译与链接级。但我们建议系统开发人员在其他级别也采用我们推荐的措施,加强系统的整体抗攻击能力。5.1.1 芯片级芯片级的改造往往能较为彻底地对抗一些类型的缓冲区溢出攻击。较多采用的办法是用硬件电路保护边界指针、返回地址及变量等等【16】,所以要付出一定的硬件上的开销。对于一般的嵌入式系统,由于芯片电路专门针对某项应用,整体结构相对于普通的计算机较为简单,所以芯片级的改造也相对较为容易完成。我们的系统中因为采用 PC 机架构,所以不对其进行芯片级的处理,这

15、样也保证了通用性和节省整个系统开发的时间。5.1.2 操作系统级虽然我们的系统中不使用明确的内核架构,但是在建立系统框架和提供系统服务时,采用了很多独特和创新的机制对抗缓冲区溢出攻击,以保证系统的强壮性和抗攻击能力。(1)区分不同的级别Intel 的 80386 以上的 CPU 在进入保护模式后,提供四级强度不同的保护等级。该机制通过限制对任务中的段进行访问,能有效地实现不同任务之间的保护和同一任务内的保护。按照包含在段中的数据的重要性和代码的可信任程度,给段一定的特权级别。把最高的特权级别分配给最重要的数据段和最可信任的代码段。处于较高级别的数据和代码,较低级别的代码不能随意访问,需要通过严

16、格的权限管理机制。给不重要的数据段和一般代码段分区较低的特权级别。具有最低特权级别的数据,可以被具有任何特权级别的代码访问。特权级别用数字 03 表示,数字 0 代表最高特权级别,而数字 3 表示最低特权级别。我们把 0 级特权表示成最内级的特权级别,3 级表示为最外层的特权级别。如图 2 所示:图 2 CPU 保护模式下提供的多级保护机制(2) 划分不同的段本系统采用段机制来管理存储空间。用一张全局描述符表(GDT)来对系统中的各段进行描述,每个段在表中占据一个表项,即一个描述符,它可以对本段的起始地址,大小及性质做出细致严格的规定。系统可以根据数据性质的不同把它们分别放置到不同的段中。具体

17、地说,:a. 不同的任务分处不同的段。b. 不同内容的数据分处不同的段;5c. 不同安全级别的数据分处不同的段。(3)严格控制段的属性根据系统中对象性质不同可以分处于不同的段中,各个段又分处于不同的保护级别。各个段的属性可以通过段描述符中的属性字进行规范。使得整个系统中的各段按照一定的策略相互联系又相互制约,实际上做了边界检查和指针检查的工作。这样,通过对段特征字的描述可以控制段的属性和行为,通常的操作系统对抗缓冲区溢出的措施在本系统中可以轻松地做到。如:堆栈段不可执行, 数据段不可执行,代码段不可更改等等。另外,不同任务,不同性质,不同级别的数据之间都有严格的隔离。安全级别低的段不可访问安全

18、级别高的段。并且即使溢出攻击在某个段中成功,也很难扩散到其他的段中,更难扩散到高于本级的其他保护级别的段中。5.1.3 编译器级事实上,已经有大量的对编译器进行改造的工作来对抗缓冲区溢出攻击。如:StackGuard【15】 ,StackShield【17】 。本系统希望给用户提供良好的接口,以便于系统下一步的配置和应用。所以,在系统开发者使用我们的平台时,可以使用他习惯使用的 C 语言编译器,最后只需向系统提供标准的*.obj 文件和系统要求的一个配置文件。所以,我们的系统中,不对编译器进行改造,也不排斥第三方对编译器的抗缓冲区溢出方面的改造,只需用户向系统提供标准的*.obj 文件。5.1

19、.4 连接和装载级(linker&loader)本系统要求系统开发人员依照自身需求提供配置文件。系统再结合固有安全策略,使用自主开发地连接器(linker)和装载器(loader),完成整个系统的开发,参看图 1。系统连接的对象是标准 obj 文件,linker 首先把 obj 文件拆分成数据、代码等等不同的块,并重建重定位表,同时使用安全策略建立全局描述符表(GDT) 、中断描述符表( IDT)等等。然后根据各块不同的性质封装到不同级别、不同属性的段中。装载时把数据和代码分别放置到连续的内存中。从上述过程可以看出,这些措施对数据实现了严格的段和级别的限制,从根本上阻挡了缓冲区溢出的发生和蔓延

20、。5.1.5 编程级我们建议编程人员避免采用会引发缓冲区溢出攻击的语句。还可以利用一些工具对以完成的代码进行检查,如进行静态和动态的代码分析。系统力争为编程人员提供尽可能良好的接口,不改变原有的开发习惯。6. 总结缓冲区溢出攻击已经成为网络安全威胁中最为严重的一类,而嵌入式网络安全设备则更需要有抗缓冲区溢出攻击的能力。本文在分析了缓冲区溢出的基本原理以及抗缓冲区溢出攻击的方法后,提出建立全新的嵌入式网络安全设备的安全架构,并构建多层次的抗缓冲区溢出攻击机制。文章根据网络安全设备的特点和特殊需求,详细阐述了适合嵌入式网络安全设备需要的多层次,全方位的抗缓冲区溢出攻击机制。参考文献:1 E.H.S

21、pafford,“The internet worm program:an analysis,”Tech.Rep.TR823,Purdue University,19982 Mark M. Eichin and Jon A.Rochlis,”With microscope and tweezers: An analysis of the internet virus of November 1988,” in Proc. Of the IEEE Computer Society Symposium on Scurity and Privacy, 1989.3 D.Seeley, “A tour

22、 of the worm,” in Proc. of the USENIX Annual Technical Conference, Winter 61989.4 Aleph1, “Smashing the stack for fun and profit,” Phrack, 7(49), Nov. 1996.5 pr1, Exploiting Sparc buffer overflow vulnerabilities, World Wide Web, http:/www.u-n- 2003.6 Matt conover and w00w00 Security Team, w00w00 on

23、Heap Overflow, World Wide Web, http:/www.w00w00.org/articles.html, January 1999.7 Michel Kaempf, “Vudo an object superstitiously believed to embody magical powers,” Phrack, 8(57), August 2001.8 anonymous author, “Once upon a free(),” Phrack,9(57), August 2001.9 David Wagner, Jeffrey S. Foster, Eric

24、A. Brewer, and Alexander Aiken, “A first step towards automated detection of buffer overrun vulnerabilities,” in Network and Distributer System Security Symposium, San Diegom, CA, Feburary 2000, pp. 3-17.10 R. Hastings and B. Joyce, “Purify: Fast detection of memory leaks and access errors,” in Proc

25、eedings of the Winter USENIX Conference, 1992, pp. 125-136.11 Solar Designer, Kernel Patches from the openwall project, World Wide Web, http:/ Rafel Wojtczuk, Defeating solar designer non-executable stack patch, World Wide Web, http:/www.insecure.org/sploits/nonexecutable .stack.problems.html, 1998.

26、13 Nergal, “The advanced return to-lib exploits: Paxcase study,” Phrack, 4(58), December 2001.14 Vendicator, Stack Shield: A stack smashing technique protection tool for Linux, World Wide Web, http:/ C. Cowan, C. Pu, D. Maier, H. Hinton, J. Walpole, P.Bakke, S. Beattie, A. Grie, P. Wagle, and Q. Zha

27、ng, “Stackguard: Automatic adaptive detection and prevention of buffer-overflow attacks,” in Proc. of the USENIX Security Symposium, January 1998. 16 Zili shao, Chun Cue, Qingfeng Zhuge, Edwin H.-M. Sha,“Security Protection and Checking in Embedded System Integration Against Buffer Overflow Attacks,

28、 ”Proceeding of the International Conference on Information Technology: Coding and Computing, 200417 Vendicator, Stack Shield: A Stack smashing technique protection tool for Linux, World Wide Web, http:/ 者 简 介1杜皎:1976 年生,女,工程师,国防科技大学 信息系统与管理学院,中科院研究生院 信息安全国家重点实验室,博士生,主要研究方向是网络信息安全。2荆继武:男,教授,中科院研究生院 信息安全国家重点实验室,博士生导师,主要研究方向是网络信息安全。3李国辉:男,教授,国防科技大学 信息系统与管理学院,博士生导师,主要研究方向是信息系统工程。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

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


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

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

道客多多©版权所有2020-2025营业执照举报