软件安全分析与应用第7章污点传播分析读书笔记。

  • 污点传播分析
    • 基本原理
    • 主要方法
      • 污点源识别
      • 污点内存映射
      • 污点动态跟踪
      • 传播规则设计
      • 污点误用检测
    • 典型系统
      • TaintCheck 系统
      • TEMU 系统
      • AOTA 系统
    • 典型实例分析
      • 分析环境搭建
      • 污点传播过程
      • 污点回溯分析

应用领域

主要应用领域有:

  • 恶意代码检测(恶意代码通常依赖特定的外部数据)
  • 软件漏洞挖掘(构造测试样本触发漏洞)
  • 敏感数据泄漏(跟踪敏感数据)

主要方法

污点源识别

污点分析的第一项工作就是进行污点源的识别,而完整、高效的污点源识别是保证后续污点分析正确性的前提。
目前,主要的污点源识别方法分为两类:

  • 无约束识别,所有外部数据识别为污点数据
  • 有约束识别,只将特定数据识别为污点数据

污点内存映射

映射过程可以分为三种方法:

  • 简单映射
  • 页表映射
  • 复杂映射

污点动态跟踪

污点动态跟踪是污点分析主要的中间过程,也是整个分析过程中最为复杂的一项。在动态跟踪过程中,一般需要涉及3个阶段,即:

  • 污点指令监控
  • 污点传播计算
  • 污点状态更新(影子内存更新)

传播规则设计

  • 规则的完备性和精确性
  • 面向原始指令或者中间指令
  • 规则的分类和表示形式

污点误用检测

在污点传播计算的过程中,不仅要时刻跟踪记录污点的扩散情况,同时还需要在程序的“关键点”检测是否有污点数据被错误使用,即污点误用检测。
另外在确定程序的关键点后,还需要给出相关的误用检测规则。

典型系统

TaintCheck 是一套面向恶意代码自动检查、分析以及攻击特征生成的动态污点分析系统,接住了二进制代码插桩工具 Valgrind 来实现程序的动态跟踪。
该工具主要由3个功能模块组成:

  • TaintSeed
  • TaintTracker
  • TaintAssert

TEMU 系统是著名的开元二进制分析平台 BitBlaze 的重要组成部分,主要负责完成程序的动态分析任务。与 TaintCheck 相比,TEMU 不仅在硬件模拟器 QEMU 的基础上实现了面向全系统跟踪的污点分析功能,同时通过基础污点分析引擎和丰富的调用接口实现了一套高可用的插件机制,利用该机制可以快速构建面向不同应用领域的污点分析应用系统。

AOTA 系统是一套面向 windows 大规模二进制应用程序的高实用性动态污点分析系统。该系统主要有以下特点:

  • 在硬件虚拟化平台上构建完全透明的动态分析环境
  • 提供离线或者半在线污点分析,保证了对于大规模程序的分析效率
  • 在系统级重放的基础上构建自动化分析与并行化分析过程