| 【论文摘要】 |
缓冲区溢出漏洞一直是安全漏洞的最常见的一种形式。近年来,在CERT/CC(Computer Emergency Response Team/ Coordination Center)发布的公告中,关于缓冲区溢出漏洞的占50%以上。缓冲区溢出问题主要出现在C/C++这类老牌的编程语言中,而在新一代的编程语言,例如Java、C#中不存在。一个最重要的原因就是C/C++允许通过指针进行间接内存访问但没有缓冲区边界检查和提供了大量对缓冲区可能存在不安全操作的库函数,在Windows操作系统中也存在类似的函数。因此,如果能采用有效的手段对缓冲区溢出漏洞进行检测,将能极大地提高软件系统的安全性。
从一个程序中检测出可能的安全漏洞是一件非常困难和耗时的事情。目前针对缓冲区溢出漏洞的检测主要分为两类:静态检测的方法和动态检测的方法。通过使用静态和动态分析工具,可以从一定程度上减轻漏洞检测的困难。
本文研究分析了与缓冲区溢出相关的基本原理并分析了国内外缓冲区溢出检测的典型技术和工具。通过分析目前几个开源的源代码扫描工具,以及参与的一个源代码静态扫描工具的开发,本文提出一种对二进制代码的静态检测方法:对... |