论文部分内容阅读
随着移动终端的广泛普及,移动应用程序为用户提供着便捷的服务,目前几乎覆盖了人们日常生活的方方面面。与此同时,移动应用携带了大量用户数据信息,既可以对数据进行快速的计算处理、也能够对数据进行存储和传输。然而,对大量且重要的信息数据应用处理也同样带来了数据的安全性威胁,当前移动数据隐私泄露问题变得越来越严重,隐私数据泄露给用户和公司带来了大量安全隐患甚至财产损失。 污点分析技术通过对系统中敏感数据进行标记,继而跟踪标记数据在系统中的传播,以检测其中安全问题。本研究重点关注用于Android智能手机应用隐私泄露检测的静态污点分析技术。目前,静态污点分析技术对于检测该问题往往会有较高的误报率。这一方面来源于低精确度的程序分析技术会带来大量误报,而提高精确度势必带来很大的性能开销;另一方面来源于一些良性的软件同样会产生大量的污点分析结果,这些结果往往对检测隐私泄露问题带来严重干扰,从而产生误报。因此,针对第一个问题,本文将探索提高高精确度的程序分析方法性能的技术,使其能够适用于大规模程序的检测应用;针对第二个问题,本文尝试提供为污点分析的结果进一步细化的分析技术,以便可以有效地区分出良性软件和恶意软件中的污点结果。本文从上述的两个切入点,探索了一系列污点分析技术。 本文的主要贡献与创新如下: 1.提出了一种基于稀疏框架的污点分析技术。本工作通过对目前主流的污点分析工具FlowDroid进行深入分析,发现其污点分析计算中大量无关联污点传播是导致开销过高的原因之一;通过插桩统计实验,发现无关联传播占比高达85.2%。针对这一问题,本工作尝试利用近年来一种有效的程序分析优化手段——稀疏优化的方法,对静态污点分析中无关联的传播进行消除,达到时间和空间的开销优化。创新地将经典的数据流分析框架IFDS扩展成稀疏的形式,其核心思想就是使得数据流值的传递从传统的控制流图转移到DEF-USE链形成的结构(自治数据流图)中传播并且完整保留了原IFDS流敏感和上下文敏感的特性。同时,本文又针对域敏感的特性提供了一种基于域剪枝的优化方法。最后,在此稀疏的框架上提供了与其适配的污点分析方法,实现了工具FlowDroidSP。实验表明,该工具在非剪枝模式下相比原FlowDroid具有平均4.8倍的时间加速和61.5%的内存降低。在剪枝模式下,具有平均18.1倍的时间加速和76.1%的内存降低。 2.提出了一种基于摘要的污点分析优化技术。为了进一步对性能进行提升,本文创新地提出了一种分阶段的基于摘要的污点分析优化技术。与传统的摘要相比,分阶段方法对摘要点进行了扩展,将传统的过程内的起始点到终止点之间的摘要扩展到起始点、函数调用点、终止点之间的摘要。传统的污点分析因此被扩展成两个步骤:首先在扩展的摘要点之间(分阶段)的生成过程内摘要,其次在摘要之间进一步维护数据流值传播。该方法最大的优势是可以有效地维护污点分析别名传播的流敏感关系,与流敏感密切相关的摘要激活点即可以在过程内进行精简。最终结合稀疏优化的方法实现了工具BlinkFlow。实验数据表明:应用本文方法之后摘要路径确实能够有效地进行重用,重用比例平均高达96.1%;因此,BlinkFlow相比原始FlowDroid有平均44.1倍的加速比提升,内存消耗平均降低82.9%。 3.提出了一种高效的多源污点分析技术。为了能对污点结果进一步的划分,本文提出了一种多源绑定发生的污点分析技术。该技术可以精确地判断污点分析结果中多组源是否可以在一次执行中绑定发生,用户可以从单一分析一条结果转为分析有关联的多组结果,这既缩小了分析范围,又降低了检测的误报率。该技术的核心思想是将数据流值升级成向量的形式,在精度上,该技术支持上下文敏感、流敏感、域敏感等特性并且可以有效地区分出分支互斥的情况。在效率上,本文提供了一种高效的需求驱动的实现方法,可以将高复杂度(指数级别)的分析降低为与传统方法时间相近的分析(初始阶段开销为26.6%,进一步的多源分析平均时间为0.3秒)。 4.将本文技术综合应用到Android应用隐私泄露检测中。将本文提出的优化技术以及多源技术进行综合:两种效率优化技术针对单源问题进行优化,其结果再进一步利用多源方法进行细分,最终实现了一个原型系统MultiFlow。利用其对2100个良性手机软件和2089个恶意手机软件进行应用,应用结果表明多源污点分析技术可以有效地降低隐私泄露检测的误报率(减少多源对个数41.1%)。同时,还提出一种污点分析结果风险评级标准,评级标准可以进一步帮助用户提高隐私泄露检测的效率。