TaintDroid论文随笔

没有使用静态分析,只是用了数据流分析,没有控制流分析,不能对本地方法进行污点追踪,不能对程序控制流进行污点追踪。

前提条件:虚拟机和应用程序加载的本地系统库是安全的

在VM解释器里是变量级的污点追踪,各种的污点标记被存储为一个污点标签(tag),应用程序执行本地方法时,污点标签被作为返回值返回,最后污点标签被分配给包通过binder机制进行出传播

在受信任的应用程序中标记污染源,当某个被标记的污染源API调用native方法时,Dalvik vm解释器把污染markings存进map,Dalvik虚拟机根据数据流规则传播污点tags,当应用程序将污染信息通过IPC传递时,TaintDroid修改过的binder给每个包分配一个污染tag。包通过kernel传播给远方的不受信任的应用程序。TaintDroid修改过的binder把所有从这个包里读取的数据都指派这个污染tag,Dalvik虚拟机根据数据流规则传播污点tags,当不受信任的应用程序调用sink API时,sink api会判断接收的数据是否有污染tag,并且给出报告。

把污染tag和变量相邻存储在内存中

ipc的包、二级存储、数组都只存储一个污染tag

aget-op把数组的污点tag和下标的tag都传递给接收的变量

你可能感兴趣的:(TaintDroid论文随笔)