论文部分内容阅读
现代信息社会对计算机系统和互联网络的高度依赖使得作为其基础设施的软件变得尤为重要。作为信息安全中重要的一环,软件安全得到了学术界和工业界高度的重视。
软件的庞多,漏洞攻击的层出不穷,迫切需要对各种漏洞攻击进行剖析,分析其表现、分类和本质,以期有针对性地防范。
近十多年来,以程序安全为主的软件安全研究取得了丰硕的成果,如根据特定已知的漏洞和攻击方式的传统防范方法从软件代码自身、运行环境和平台上以及网络入口进行安全增强,能够有效地防范缓冲区溢出、格式化串、整数溢出等各种漏洞攻击和攻击方式以及网络蠕虫攻击。而根据程序行为的内外部特征及系统资源的使用情况进行的程序安全运行建模则更一般地考虑了软件安全的问题,结合入侵检测、系统调用和控制流监控等技术,能够有效地防范未知的攻击。然而,这些方式都有其局限性,它们的反应方式和防范能力取决于对漏洞攻击或环境影响的认知程度,缺乏基于程序分析的软件安全知识,存在着攻击发现的判断精度低,性能代价高、攻击容忍、定位、漏洞清除困难等问题。因此,基于程序分析,具有程序意识地研究程序中各种安全相关的对象静态和动态的特征,建立完整的攻击/错误检查与发现、容忍与消除以及能够主动反馈的安全保障体系成为将来的研究目标。
本文首先介绍了软件安全的研究背景,及漏洞攻击的表现与其本质,在此基础上对各种防范方法进行了科学分类和比较,然后以堆溢出为例详解其攻击演变过程与本文的解决方案;从第三部分开始,详细阐述了保障软件安全的两类防范方法,基于特定漏洞和攻击方式的传统防范方法和基于程序行为的程序安全建模。之后则是近期的防范格式化串溢出的研究成果FASTV,它借鉴了程序意识相关的数据流分析和动态污染技术,通过有效性和性能测试证明了它能够透明有效地防范格式化串漏洞攻击。最后我们进行了总结,并对利用程序意识进行安全防范提出了进一步工作的思路。