论文部分内容阅读
随着黑客攻击事件数量的不断上升,蠕虫在Internet上的泛滥,信息安全逐渐成为人们眼中的焦点。信息安全中的一个核心问题就是存在于计算机系统中的软件安全漏洞,恶意的攻击者可以利用这些安全漏洞提升权限,访问未授权资源,甚至破坏敏感数据。因此如何发现软件中的安全漏洞至关重要。再好的防火墙、入侵检测和杀毒软件,如果软件自身的安全都不能保证,那么根本起不到提高安全性的作用。 本文的主要目的就是研究那些能够在软件开发周期中有效减少软件安全漏洞的方法和技术,尤其侧重于程序分析技术在代码层安全漏洞检测上的应用。程序分析技术分为静态分析和动态分析两种。静态分析扫描源码,在无需程序执行的情况下进行漏洞的检测,但是容易产生误报。动态分析执行程序,通过收集运行时的信息进行漏洞的检测,结果精确但容易产生漏报。基于现有的方法和经验,本文设计了一个代码层软件安全漏洞的检测模型,论文主要工作如下: 1.研究了软件开发周期中的软件安全问题并对软件需求阶段、设计阶段和测试阶段中一些能有效减少软件安全漏洞的实践方法进行了详细的分析。总结了现有的常见软件安全漏洞和代码层的软件安全漏洞分类。 2.总结了用于漏洞检测的静态分析和动态分析手段,详细分析了两种方法的特点和不足,讨论了它们结合互补的方式。 3.提出了一个静态分析,动态验证的安全漏洞检测模型。说明了模型中的各个功能部件和分析流程。详细介绍了程序抽象表示形式,漏洞描述问题,别名信息分析问题和代码植入问题。 4.对输入验证相关漏洞进行实例分析,总结了这类漏洞的本质,并给出了一种Java数据流跟踪模式。 5.研究了一种基于关系数据库的程序分析方法,设计了模型静态分析部分的实现结构,构造了SQL注入攻击漏洞的Datalog检测规则。同时设计了Java数据流动态跟踪的方案,说明了代码植入的实现手段,并利用Javassist工具包进行了字节码植入的实验。 6.最后对漏洞检测的实现做了整体的概述,并对模型的优缺点进行了评价,指出了将来的工作和改进的方向。