博客
关于我
TaintDroid简介
阅读量:480 次
发布时间:2019-03-06

本文共 1568 字,大约阅读时间需要 5 分钟。

TaintDroid是一种全系统动态污点跟踪和分析系统,旨在监控和分析移动设备中的敏感信息流动,帮助用户了解第三方应用程序的隐私行为。以下是TaintDroid的核心功能和设计原理:

信息流动追踪与实时动态监控

TaintDroid通过细粒度的动态污点跟踪技术,能够同时跟踪多个敏感信息源,实时监控数据的流动路径。这种技术不仅能够追踪数据在内存中的传播,还可以延伸到文件系统,确保污点标记能够在必要时被恢复。

基于Android虚拟化架构的多层次污点传播机制

TaintDroid整合了四种粒度的污点传播机制:

  • Message-level(消息层面):适用于应用程序之间的通信,开销较低,覆盖范围广。
  • Variable-level(变量层面):针对不受信任的代码,污点标记存储在变量的内存旁边,减少存储开销。
  • Method-level(方法层面):用于跟踪系统原生库的调用,通过解释型代码的特性进行监控。
  • File-level(文件层面):对永久性信息进行跟踪,确保污点标记能够在文件被读取时恢复。
  • 信息流动的具体实现过程

    信息在可信应用程序中被标记为tainted后,会通过以下路径传播:

  • 污点接口调用:污点标记会调用一个native方法,进入DVM解释器。
  • DVM解释器的Virtual Taint Map:每个解释器都有自己的Virtual Taint Map,用于存储特定的污点标记。
  • 数据传输与binder机制:当可信应用程序通过IPC通信发送数据时,binder机制会确保数据包中包含污点标记。
  • 远程DVM解释器的处理:远程的不可信应用程序接收到数据包后,会从binder中提取污点标记,并将其传递给DVM解释器。
  • 动态库的调用:当不可信应用程序调用动态库时,污点标记会被抽取并报告,确保隐私信息的可追踪性。
  • 系统设计中的关键挑战

    TaintDroid在实现过程中需要解决以下关键问题:

  • taint tag存储优化:通过将污点标记存储在与变量相邻的内存中,显著降低了存储开销。
  • 解释型代码的污点传播:需要设计机制来跟踪解释型代码中的变量引用,确保污点能够在多层次传播中被正确传递。
  • 原生库的污点传播:由于原生库的调用方式复杂,TaintDroid需要通过profile表来跟踪JNI方法的数据流。
  • IPC污点传播:确保在应用程序间通信过程中,污点能够被正确传递。
  • 二次存储的污点恢复:在文件存储过程中,污点标记需要被临时保留,以便在文件被读取时能够恢复。
  • 隐私信息的采集与分析

    TaintDroid通过对30款常用应用程序的监控,发现了20款应用程序中存在滥用用户位置信息和设备识别信息的行为。研究结果显示:

  • 半数应用程序将位置信息发送到广告服务器。
  • 30款应用程序中有20款要求获取手机状态权限并访问互联网。
    3.设备唯一标识符IMEI的泄露问题:恶意软件通过收集设备标识符,进行用户追踪和行为分析。
  • 性能评估与系统局限性

    TaintDroid在性能上表现良好,系统运行的总体CPU消耗为14%,内存开销为4.4%。然而,系统设计存在以下局限性:

  • 控制流跟踪的缺失:为了降低性能开销,TaintDroid仅跟踪显式的信息流,而未对控制流进行跟踪,这可能导致恶意软件通过控制流泄露隐私信息。
  • 数据传输的局限性:TaintDroid无法跟踪信息离开手机后的传输过程,包括网络应答数据的返回路径。
  • DirectBuffer对象的限制:由于DirectBuffer对象的数据存储方式,TaintDroid无法跟踪文件IO操作中的直接变量。
  • 污点来源的准确性:部分配置标识符会被误判为污点来源,需要对相关变量进行单独标记处理。
  • 本文主要介绍了TaintDroid的核心设计理念和实现细节,全面分析了系统的功能、性能以及存在的局限性。

    转载地址:http://dgtbz.baihongyu.com/

    你可能感兴趣的文章
    MYSQL 查看最大连接数和修改最大连接数
    查看>>
    MySQL 查看有哪些表
    查看>>
    mysql 查看锁_阿里/美团/字节面试官必问的Mysql锁机制,你真的明白吗
    查看>>
    MySql 查询以逗号分隔的字符串的方法(正则)
    查看>>
    MySQL 查询优化:提速查询效率的13大秘籍(避免使用SELECT 、分页查询的优化、合理使用连接、子查询的优化)(上)
    查看>>
    mysql 查询,正数降序排序,负数升序排序
    查看>>
    MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)...
    查看>>
    mysql 死锁 Deadlock found when trying to get lock; try restarting transaction
    查看>>
    mysql 死锁(先delete 后insert)日志分析
    查看>>
    MySQL 死锁了,怎么办?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 深度分页性能急剧下降,该如何优化?
    查看>>
    MySQL 添加列,修改列,删除列
    查看>>
    mysql 添加索引
    查看>>
    MySQL 添加索引,删除索引及其用法
    查看>>
    MySQL 用 limit 为什么会影响性能?
    查看>>
    MySQL 用 limit 为什么会影响性能?有什么优化方案?
    查看>>
    MySQL 用户权限管理:授权、撤销、密码更新和用户删除(图文解析)
    查看>>
    mysql 用户管理和权限设置
    查看>>
    MySQL 的 varchar 水真的太深了!
    查看>>