论文部分内容阅读
作为移动互联网最大的流量入口,Android手机推动着社会发展,同时也因为存在大量的应用程序漏洞而对人们的信息安全造成了巨大威胁。对Android应用漏洞的自动化检测方法目前主要集中于污点分析技术,其中静态污点分析技术由于代码覆盖率高,操作过程简单而得到了广泛的关注。然而,当前的静态污点分析工具大都停留在学术研究的领域,当应用于实际的漏洞挖掘工作时会产生很多问题。首先,静态污点分析工具对硬件的要求很高,几乎无法检测大型的Android应用程序。其次,对整个程序的分析过程会分析很多无用的目标,导致缺乏对漏洞的针对性。最后,静态污点分析技术对分析路径是不敏感的,因此会产生大量误报。为了解决上述的问题,本文对于传统的静态污点分析技术进行了改进,设计并实现了一种新的Android应用漏洞检测系统STDroid。一方面,STDroid系统继承传统静态污点分析的优点。另一方面,STDroid增加了对系统库函数进行分析封装、基于上下文选择分析目标和采用符号执行技术过滤分析结果三种改进技术。一定程度上解决了静态污点污点分析在分析大型Android应用时的性能问题,提高分析过程的针对性,提高了漏洞检测的准确率。本论文的主要贡献如下:1.总结了利用静态污点分析进行安卓漏洞检测的关键技术,并对传统静态污点分析工具存在的问题进行了分析,制定了相应的改进目标。2.通过对Android应用程序结构的研究,提出了系统库函数分析封装的改进方案。并根据Android和Java官方的API说明,对系统库函数进行了分类并构建相应的分析模型,优化了污点分析的性能。3.设计了基于上下文选择分析目标的改进方案,并在理论上证明了方案的可行性。该方案基于函数调用上下文,结合用户已有的知识,对被分析的漏洞目标进行精确定位来避免无效分析,提高了漏洞检测的针对性和效率。4.设计了静态符号执行过滤分析结果的改进方案。利用符号执行技术在求解程序执行条件可满足性方面的优势,判断污点分析结果是否在执行路径上可达,过滤了大部分由于路径不敏感特性引起的误报。5.基于静态污点分析技术和改进设计,实现了一个快速、有针对性、准确率高的Android应用漏洞检测系统STDroid。并通过一系列的对比测试,证明STDroid了对商业Android应用程序进行漏洞检测的可行性。