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都传递给接收的变量

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容