论文部分内容阅读
缓冲区溢出是常见的程序漏洞。近二十年来,利用缓冲区溢出的攻击行为越来越多,给用户造成巨大的损失。相对的,对缓冲区溢出检测的研究以及对防御利用缓冲区溢出的攻击行为的研究也越来越广泛、深入。目前有多种防御缓冲区溢出的工具,由于研究方法上的限制,导致这些工具大多具有以下两个缺点:需要源代码的支持;只能针对某种类型的缓冲区溢出攻击,不具有普遍性。为了解决现有缓冲区溢出防御的两个缺点,本文提出了综合运用动态二进制探测方法和污点分析方法构造缓冲区溢出防御工具的研究内容。动态二进制探测方法是指在二进制代码的层面上,加入分析程序行为的探测代码,收集并分析程序行为的一种方法。动态二进制探测方法不需要源代码的支持,能够很好的支持商用软件和遗留代码,打破了现有缓冲区溢出检测工具中需要源代码支持的局限。为提高效率,大部分的动态二进制探测工具都是在动态二进制探测框架的基础上进行开发的。污点分析的方法是指将程序中使用的数据分为被污染的和未被污染的两类,在程序运行的过程中,控制数据的污染属性,当非法使用被污染的数据时,则断言攻击行为存在的一种方法。污点分析的方法主要包括污染源的确定、污染属性的传递、被污染数据非法使用的判定三个步骤。它能够检测出各种类型的缓冲区溢出攻击,具有普适性。本研究以动态二进制探测方法和污点分析方法为指导,在动态二进制翻译系统Crossbit基础上构建了动态二进制探测框架CrossIF,并在此基础上实现了防御缓冲区溢出的动态二进制探测工具BufferSafeTy。通过实例验证BufferSafeTy的功能,可以得出这样的结论:综合动态二进制探测方法和污点分析方法的缓冲区溢出防御工具,能够在只有二进制代码的情况下,防御各种类型的缓冲区溢出的攻击行为,弥补了现有缓冲区溢出防御工具的不足。