缓冲区溢出漏洞自从出现以来,一直引起许多严重的安全性问题,而且随着软件系统越做越大,越来越复杂,缓冲区溢出漏洞的出现越来越普遍。本文从检测程序的漏洞方面着手,比较了以前常用的静态代码分析和实时错误注入的检测方法,提出了一种对可执行文件反汇编后的代码进行缓冲区溢出漏洞检测的技术, 提高了检测软件系统漏洞的效率。缓冲区溢出方面的漏洞在过去十几年中一直是普遍存在的安全威胁。无论是在主要的计算机系统还是在网络服务软件上的漏洞很大一部分是由缓冲区溢出造成的,而且,缓冲区溢出已经成为突破远端网络的主要手段。这种攻击手段屡次得逞主要利用了C 程序中数组边境条件、函数指针等设计不当的漏洞,大多数Windows、Linux、Unix、数据库系列的开发都依赖于C 语言,而C 的缺点是缺乏类型安全。C 语言包含很多C 标准库,C 标准库包含各种类型的函数,程序员可以直接使用这些函数,在编写程序时使用“#include”语句把函数所在的头文件包含进来。在编译C 程序时,预处理程序将有关的头文件内容包含进来。大部分缓冲区溢出漏洞和C 标准库中的函数有关,尤其是和字符串操作有关的函数,像strcpy,strcat,sprintf,gets 等。在这些函数中数组和指针没有自动边界检查,依靠编程者自己去做这些检测,看是否有数据溢出了边界。但是在实际编程时,程序员经常检测不充分或者忽略了这种检测。有些人认为在 Windows 程序中查找缓冲区溢出比在 UNIX 程序中难。的确是这样,因为 Windows 程序往往是不带源代码交付的,而 UNIX 程序是带源代码交付的。当有源代码时,就非常容易找到潜在的缓冲区溢出。攻击者会查找所有可疑的函数调用,然后尝试确定哪些是弱点。通过查看该程序,攻击者更容易得出如何利用实际输入导致缓冲区溢出。在没有源代码时,做这些事就需要有更多的技巧。
猜您喜欢
推荐帖子
推荐内容
开源项目推荐 更多
热门活动
热门器件
用户搜过
随便看看
热门下载
热门文章
热门标签
评论