背景目的
了解第三方应用程序是如何使用用户的隐私数据的。比如说,一个用户允许了第三方应用程序获取她的地理位置,但是她武大得知这个应用程序是都会将她的信息送到地理位置服务系统、广告商等。
方法概述
从污染源标记敏感信息,追踪被标记的敏感数据怎么污染其他数据,从而导致敏感数据从污染泄露点泄露。
1、变量级别的污点追踪,利用VM解释器在应用程序代码内追踪污染数据;
2、信息级别的污点追踪,利用IPC追踪应用程序之间的污染信息传递;
3、方法级别的污点追踪,针对的是本地库,run native code without instrumentation and patch the taint propagation on return
4、文件级别的污点追踪。
前提:可信的Android固件,包括可信的vm、可信的本地库。
TaintDroid介绍
1、Taint Tag Storage
Dalvik有五种类型的变量需要污染存储:方法局部变量、方法参数、类静态字段、类实例字段、数组。
污染标记在变量之间交叉存储(32bit) 每个数组只储存一个污染标记
2、Interpreted Code Taint Propagation
data flow logic
变量定义:
vx:局部变量和方法参数 fx:类字段 vy(fx):实例字段,vy代表要实例的对象 S(fx):静态字段 vx[·]:数组 R:返回变量 E:异常变量
污染map功能可以表示为τ (·), τ (v)表示为变量v制定一个污染标记t