Page 140 - 《软件学报》2021年第6期
P. 140

1714                                     Journal of Software  软件学报 Vol.32, No.6,  June 2021

         续更新.FlowDroid 基于 Java 程序分析框架 Soot,采用 Jimple 语言作为中间表示.该工具主要具有以下创新点.
             •   第一,实现了对 Android 系统环境的建模.FlowDroid 根据 Android 应用的特点建立了一个虚拟主函数
                dummyMain 模拟系统环境,虚拟主函数直接调用了各组件中的生命周期函数和回调函数,因此,
                FlowDroid 可生成完整的函数调用图,并解决了 Android 应用多入口的问题;
             •   第二,创新性地设计了按需反向别名分析,使得污染变量的别名可根据需要及时得到追踪,并在确定新
                的别名后启动新的线程对别名变量进行前向污点分析;
             •   第三,设计了专门用于评价污点分析工具的测试集 DroidBench                [27] ,该测试集中的应用包含各种类型的
                                                   [7]
                污染流且近年来不断得到扩充和升级.IccTA 工具对 FlowDroid 工具进行了扩充,该工具使用程序静
                态插桩的方法增加了组件间分析,并为每个组件都单独创建一个虚拟主函数以模拟该组件的生命周
                期,使得分析的查准率和查全率都得到提高.
                     [8]
             Amandroid 是一个通用的 Android 应用静态分析平台,可用于检测隐私数据泄露、数据注入及 API 误用
         滥用等多种问题.该工具采用完全不同于 FlowDroid 的技术框架,使用 Scala 语言实现.Amandroid 对 Android 系
         统环境同样进行了模拟,在组件层面建立一个虚拟主函数 ENV_C,并为每个组件都建立了数据流图 DFG 和数据
         依赖图 DDG.Amandroid 与 FlowDroid 在别名分析上有很大不同,Amandroid 在污点分析前首先进行大规模的别
         名分析,计算出所有对象(包括非污染变量)的别名信息.与之相比,FlowDroid 仅对污染变量进行按需的反向别名
         分析从而减少开销,而我们提出的 FastDroid 工具将别名分析与污点分析结合,进一步提升了效率.DroidSafe                           [9]
         是一个开源的面向 Android 应用的支持组件间分析的污点分析工具,该工具基于 Android 开源项目(AOSP)的分
         析对 Android 应用环境建模,并基于所建立的 ADI 模型进行信息流分析,但该工具不支持流敏感的分析.在 Pauck
                                                                              [5]
         等人  [29] 的论文实验中,DroidSafe 的精度和运行效率都不如 FlowDroid.Apposcopy 工具 是一种基于语义的分
         析,可以检测泄露隐私的 Android 恶意应用.该工具基于 Soot 框架并使用 Jimple 中间表示,定义了一系列谓词用
         于描述应用中的某些特征,并生成恶意软件家族的特征签名;同样也定义了相应谓词描述污染流,并在构建的组
         件间函数调用图(ICCG)上进行污点分析,但该工具无法从网络上公开获取.
         5.2   提升污点分析效率的方法

             目前,研究人员提出了一些用于改进静态污点分析效率的方法.Cai 等人                       [30] 设计了一种可以减少污点分析
         搜索空间的方法,该方法基于对旧版本应用的分析结果,在分析该应用升级后的新版本时,仅对有差异的代码进
         行分析.这种方法可以有效提高效率,但对于全新的应用并没有优势;而 FastDroid 可以检测全新的应用.
         SparseDroid 工具 [31] 对 FlowDroid 中的传统 IFDS 框架算法进行稀疏化的改进,从而提升了运行效率,其沿用了
         FlowDroid 其他组件,没有提升检测的精度.
         6    总结与未来工作


             本文针对精确污点分析技术存在的效率低、运行慢的问题,提出了一种基于污染变量关系图的污点分析方
         法.该方法支持流敏感、上下文敏感、域敏感、对象敏感的分析,在保证精度的基础上提高了分析效率,降低了
         分析时间.本文阐述了方法涉及到的污染变量关系图、污染传播规则等概念,详细叙述了基于该方法实现的
         FastDroid 工具的架构、模块及各模块细节.最后,在 3 个不同测试集上,与主流工具 FlowDroid 进行了实验对比,
         结果表明:FastDroid 的查准率和查全率达到 93.3%和 85.8%,高于目前主流工具 FlowDroid;同时,FastDroid 的运
         行时间更少且更稳定.
             本文方法和工具仍然存在一些不足:工具不能支持利用反射机制进行的隐私泄露、工具在个别情况下无法
         正确检测或存在误报、工具的运行效率仍存在提升空间等.在未来工作中,我们将继续完善污染传播规则,优化
         TVG 构建和污染流验证的算法,进一步提高工具精度和效率.

         References:
          [1]    Mobile operating system market share worldwide. https://gs.statcounter.com/os-market-share/mobile/worldwide
   135   136   137   138   139   140   141   142   143   144   145