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 项信息进行描述.另外,我们收集