论文部分内容阅读
程序漏洞攻击威胁严重。随着计算机的广泛应用以及internet的深入发展,计算机软件的功能变得越来越强,程序代码量也惊人地增长,庞大的软件巨无霸将不可避免地包含软件漏洞。漏洞攻击带来的巨大的经济损失。2004年的Sasser是一个利用微软操作系统的Lsass缓冲区溢出漏洞(MS04-011漏洞信息)进行传播的蠕虫,自2004年4月30日爆发以来,给全球带来数千万美元损失[23]。2003冲击波(Blaster)利用DCOM RPC缓冲区漏洞攻击windows操作系统,一旦攻击成功,病毒体将会被传送到对方计算机中进行感染,使系统操作异常、不停重启、甚至导致系统崩溃[21]
新的漏洞攻击从出不穷,软件发布商反应迟缓。在软件漏洞被发现之后,通常是由软件开发人员通过手工的代码审计,跟踪,调试等手段进行漏洞定位并修补漏洞。然而,由于当前计算机程序日益复杂,这种手工的修补方式导致程序的修补时间明显地落后于程序漏洞攻击时间。这导致程序发布商很难在第一时间内发布程序补丁,把损失减小到最小。虽然到目前已提出了多种错误定位方法,然而这些方法很难有效地应用于程序的漏洞定位。
针对目前的状况,本文提出一种自动定位错误的方法。在程序遭受恶意攻击时可以自动捕获正在被攻击的程序错误,找出程序遭受攻击的根源。自动的错误定位使得程序开发者可以迅速地定位程序漏洞,修补程序漏洞;自动的错误定位使得自动补丁,程序自动修复等成为可能。
本文的方法的基本思想是,从程序状态中,提取出与程序控制流相关的程序对象,通过对程序控制流对象的监控,检测出程序控制流对象遭受的不恰当的更改。这样,我们自动定位正在遭受攻击程序漏洞。
为检测系统针对程序攻击定位错误的有效性,本研究采用最为常见的缓冲区溢出攻击和格式化字符串攻击这两种攻击手段来测试。Wilander开发的缓冲区测试平台提供了常见的18种缓冲区攻击实例。本文按照Wilander的基本思想,开发了基于格式化字符串攻击的测试平台,提供了20种格式化字符串攻击实例。经过测试后,系统捕获了所有的恶意攻击,并定位到了所有的程序漏洞的源程序行。