跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises

Do Android Taint Analysis Tools Keep their Promises

本文发表于ESEC/FSE 2018,三位作者Felix Pauck、Eric Bodden、Heike Wehrheim均来自于University of Paderborn。其中,Eric Bodden教授的团队在android taint analysis方面有深入的研究,本文中使用的FlowDroid、IccTA等工具都是该团队的研究成果。

主要内容

近年来,在安卓静态污点分析方面的研究越来越多,产生了许多的分析工具。然而在性能评估方面,现有工作对于安卓静态污点分析工具的功能、准确度等方面却缺乏一种普遍适用的评估标准。因此本文提出了名为REPRODROID的框架,用于实现对安卓静态污点分析工具的对比评估。同时,REPRODROID的评估结果可以用于验证这些工具是否达到了它们在各自论文中宣称的性能水平。本文属于一项重现性研究。本文主要包括两个部分,第一个是REPRODROID的框架设计,第二个是实验部分。

框架设计

REPRODROID主要分为三个部分,分别是Android App Analysis Query Language (AQL)、AQL System和Benchmark Refinement and Execution (BREW) 。如下图所示。

跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第1张图片
REPRODROID结构

Android App Analysis Query Langrage (AQL)这一部分包括两个部分,分别是AQL-Queries和AQL-Answers。AQL-Queries使得REPRODROID可以在tool-independent的情况下,针对特定的feature对安卓静态污点分析工具进行测试。AQL-Answers则将不同安卓静态污点分析工具的测试结果转为统一的xml格式,便于对比分析。例如对于DirectLeak1.apk针对特征flow产生的AQL-Query和AQL-Answer如下图所示。

跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第2张图片
Figure1AQL-Query

跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第3张图片
Figure2AQL-Anser

AQL-System这一部分可以视为一个黑盒操作,它集合了多个安卓静态污点分析工具,并用一个xml格式的文件来描述这些工具的使用方式。AQL-System接受AQL-Query并将其分发给安卓静态污点分析工具,将分析结果转换为AQL-Answer的格式并输出。

Benchmark Refinement and Execution (BREW)这一部分用于产生测试所用的benchmark。对于已有的benchmark的修改包括以下三个步骤:第一步,对benchmark中的app按需求进行删减或合并;第二步,对识别出的source和sink按需求进行删减或合并;第三步,通过人工检验的方式给出每一个case的ground truth。对于每一个case,都有其相应的一对AQL-Query和AQL-Answer用于测试。

实验环境

本文选择了以下六个安卓静态污点分析工具用于测试。

跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第4张图片
六个安卓静态污点分析工具

本文主要使用了三个benchmark,其中一个是包含real-world apps的DIALDROID-BENCH,另外两个属于Micro-benchmark,分别是DROIDBENCH和ICC-BENCH。除此之外,针对安卓静态污点分析工具所支持的额外的feature,REPODROID设计了针对性的apps加入到所使用的benchmark中。这些额外的feature包括别名、静态域、周期及回调函数等,其中本文着重强调了对内部组件通讯特征的支持。最终使用的benchmark包括211个app的源码及其ground truth。

实验结果

本文针对主要关注的三个问题进行了对比实验。

第一个问题是“Do Android app analysis tools keep their promises?”。关注的是安卓静态污点分析工具在feature支持方面的能力,以及其准确性方面的数据。实验中使用多种有针对性的benchmark对工具进行测试,实验结果表明与工具宣称的性能有差距。Feature支持方面的实验结果如下图所示。其中红色标记的部分是工具promise支持但实验结果显示不支持的情况。

跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第5张图片

准确度方面使用了多个版本不同特征的benchmark,实验结果如下图所示。


跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第6张图片

第二个问题是“How do the tools compare to each other with respect to accuracy?”。关注的是工具之间的准确度比较。实验结果如下图所示,结果表明没有各个方面表现都最好的工具,各个工具各有所长。

跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第7张图片
各工具结果对比

第三个问题是“Which tools support large-scale analyses of real-world apps?”。关注的是工具对real-world app的分析效果方面的情况。如下图所示,各个工具在real-world app上的效果差异很大:部分工具只能成功分析很少量的真实app,部分工具只能召回很少的真样本,并且存在较多假阳性。

跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises_第8张图片

文丨Wisher, LKK, Dr.XX


你可能感兴趣的:(跟着白泽读paper丨Do Android Taint Analysis Tools Keep their Promises)