论文部分内容阅读
随着互联网技术的高速发展,网络应用数量保持了快速的增长。与此同时,网络应用中的安全漏洞数量和影响程度也在随之增加。而人工的代码审核有着耗时、易出错以及成本高的缺点,不断变化着的互联网环境对保守的技术方案提出了挑战,自动审核技术的迫切需求已经显现。因此,本文选择对流行的脚本语言PHP进行基于源码的静态分析研究,包括了编译前端,控制流图构建、数据流分析和缺陷函数设计等主要部分。编译前端部分主要是对词法分析和语法分析进行了研究,同时结合PHP语言的实际情况,在已有的开源软件基础上,搭建了高效准确的源码编译模块。作者在此处增加了对PHP语言中类的考虑,扩大了静态分析范围,为后续处理提供了全面的数据基础。在构建控制流图的过程中,定义了相关数据结构,并将抽象语法树作为输入,完成了向控制流图转换的过程,同时对路径分析子模块的算法思想进行了介绍,以上工作为PHP源码静态分析系统的高效运行在技术上提供了可靠的保证。对PHP源码静态分析系统的数据流分析做了详尽的研究。PHP语言具有弱类型的特点,该特点对PHP源码的静态分析可能造成数据类型分析过程复杂、分析性能下降、分析结果准确率降低等问题。目前,国外有关静态分析技术方面采用了格结构、转换函数等概念,其中格结构是用来存贮控制流图节点的数据结构,便于记录节点信息以及节点间的比较,转换函数则是用于对初始的格结构进行统一格式转换。本文还在文本分析、别名分析以及污点分析的研究中,针对不同分析的特点,对格结构和转换函数进行了适应性的优化,对系统分析准确度的提升起到了很大的帮助作用。在缺陷函数的设计方面,对实际应用中的常见漏洞进行了分类,首先从大的类别上明确了整体的解决流程,随后对具体漏洞进行了逐一分析,提供了较好的解决方案,覆盖了当前在线应用中的常见漏洞场景。以上的分析技术均已实现,作者在完成了大量工作的同时创新性的提出了一种对PHP语言中类成员的静态分析方法,在国内PHP源码静态分析领域处于领先地位,这为后续PHP源码静态分析的进一步研究提供了较好的基础,未来的工作重点将会是根据实际场景中遇到的各种漏洞,提出更具针对性的解决方案,进一步提升分析结果的准确度。