论文部分内容阅读
随着信息化的高速发展,软件技术的发展也越来越快,如今已经成为人们生活中必不可的一部分,在日常生活当中的地位和作用也日显突出。如今,软件的规模日益庞大,软件中存在的缺陷和错误也越来越难以发现,传统手动检测软件缺陷的方法已经很难适应软件发展的步伐,开发软件自动检测工具成为一种必然。软件存在缺陷,发现的越早,损失才会越小,对软件可靠性的影响也会越小;在开发阶段尽可能的排除软件缺陷,从根源上减少软件存在的隐患。软件检测技术主要分为静态检测和动态检测两种,动态检测工具在程序运行的时候对系统进行检测,但是如果程序本身存在缺陷,动态检测工具无法检测;静态检测不需要代码的实际运行,通过分析源代码和中间代码进行检测。目前,国内能进行源代码静态分析工具很少,现有的研究成果对源代码中的脆弱性进行测评的能力也很弱。所以,能够提高在软件的安全性方面的漏洞分析能力,建立系统的、实用化的源代码漏洞分析系统,对国内软件检测工作有很大的意义。本文以静态分析技术为基础进行缺陷检测的研究,主要完成Python程序中存在死代码、未定义变量、定义变量和函数未使用等缺陷检测工作,缺陷检测将覆盖常见的Python缺陷类别,包括命令注入、Eval注入缺陷类型等。此外,通过文献的阅读和对比现有检测工具的不足,本文为用户提供XML格式的检测规则扩展接口,方便用户定义添加自定义检测规则;检测结果输出支持XML、HTML等多种格式,将输出完整的触发路径、数据传播途径、缺陷位置、缺陷类型、缺陷描述、可能的修补手段及危险级别等重要信息;在Linux开发环境下,本文的设计将支持Python程序进行控制流分析和数据流分析;能够正确对Python源文件进行词法和语法分析;能够正确的将表达式转化成为抽象语法树;能够提供过程内、过程间等各种层次的分析,全面深入的进行缺陷检测;解析过的Python程序转化为一种适宜分析的三地址码形式,系统能构建分析所需要的控制流、数据流等辅助信息;此外,在分析过程中,系统能够记录足够丰富的缺陷上下文,采用路径敏感遍历算法和文件间分析算法,提高了检测结果的精确度,有效减少了漏报率,准确定位和提供漏洞的详细信息。通过污点传播的净化处理,提高了检测的报警精度,降低了误报率。