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

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

         2.6   方法对各敏感性的支持情况
             我们提出的污点分析方法的主要环节在于 TVG 的构建和污染流提取及验证.构建 TVG 时,根据规则分析
         每条语句并生成污染变量作为新的 TVG 顶点.如前所述,我们使用访问路径表示污染变量,访问路径的生成需
         解析 Jimple 语句中的变量对象,从而确定污染变量具体的变量名或类名和域名,所以此阶段的分析可以支持对
         象敏感和域敏感.然而,TVG 构建过程中没有考虑语句的执行顺序和函数调用点信息,所以属于流不敏感和上下
         文不敏感的分析.为了提高分析精度,我们对污染流进行提取及验证,在控制流图上搜索一条符合条件的可执行
         路径,此阶段不仅考虑语句的执行顺序,而且在污染流跨越多个函数时,根据污染变量的上下文信息分析函数调
         用情况,所以经过该阶段的验证后,工具可以支持流敏感和上下文敏感.综上,FastDroid 工具的污点分析能够支
         持流敏感、上下文敏感、域敏感及对象敏感.
         3    FastDroid 工具的实现


         3.1   工具架构
             根据基于污染变量关系图的污点分析方法,我们开发了污点分析工具 FastDroid 用于检测 Android 应用中
         隐私数据的泄露.工具基于 Eclipse 平台开发,由大约 9 000 行 Java 代码组成,使用 Maven 进行项目管理.工具使
         用了一些公开项目,包括 FlowDroid-2.5      [23] 、IC3 [15] 、JGraphT 图形库 [24] 等.其中:FlowDriod-2.5 是 FlowDroid 1.0
         工具的升级版本,它基于 Soot 框架和 IFDS 数据流框架             [25] 实现了精确的污点分析,并集成了 IccTA 模块用以支
         持组件间通信分析,FastDroid 主要使用 FlowDroid-2.5 的 app 解析和系统环境建模相关模块;IC3 是一个独立的
         分析应用中组件间通信的工具,可获取应用中显式和隐式的组件调用;JGraphT 库是一个免费的图形运算库,提
         供了图论相关的常用数据结构和算法,FastDroid 基于 JGraphT 库进行图、路径的相关运算.图 4 展示了 FastDroid
         的整体架构.工具从功能上可以分为 4 个模块:配置文件解析模块、App 解析及建模模块、TVG 构建模块、污
         染流提取及验证模块.工具的输入是待分析应用的 APK 文件及一些配置文件,输出为污染流信息,即隐私泄露
         信息.目前,我们已经公开了 FastDroid 工具,地址为:https://github.com/zhangjie-xd/FastDroid.

                                                             ICFG
                                                           call graph
                                 ICC
                         IC3
                                 model
                                                                TVGs
                                App解析                                         污染流提取
                               及建模模块     Jimple   TVG构建模块                     及验证模块
                    APK
                                          Sources, sinks,
                               配置文件       taint wrappers                      Taint flows
                               解析模块

                                                                                Output
                    配置文件
                     Input
                                         Fig.4    Framework of FastDroid
                                           图 4   FastDroid 工具框架

         3.2   配置文件解析模块
             FastDroid 的配置文件包括污点源和泄露点 API 列表文件和污染封装 API 列表文件.污点源和泄露点 API
         列表文件存储了 Android SDK 中获取和泄露隐私数据的所有 API 集合.FastDroid 使用 SUSI              [20] 提供的经过分类
         的污点源和泄露点列表,每个 API 由其所属类、方法名、参数值、返回值这 4 项信息进行描述.另外,我们收集
   129   130   131   132   133   134   135   136   137   138   139