软件漏洞分析技术:动态污点分析
软件漏洞分析技术第10章动态污点分析读书笔记。
- 动态污点分析
- 基本原理
- 方法实现
- 实例分析
- 典型工具
- TaintCheck
- Argos
- TaintDroid
基本原理
动态污点分析在程序运行的基础上,对数据流或者控制流进行监控,从而实现对数据在内存中的显式传播、数据误用等操作进行跟踪和检测。
根据流,动态污点分析可以归类为:
- 基于数据流的
- 基于控制流的
根据范围,动态污点分析可以归类为: - 用户进程级
- 全系统级
动态污点分析的基本步骤有:
- 污点数据标记
- 污点动态跟踪
- 污点误用检查
优点是低误报和高可信。
缺点是:
- 漏报率高
- 平台相关性高
- 资源消耗大
实现
动态代码插桩:在被分析的程序的控制流中,插入用户定义的代码,从而对程序的行为进行监控的方法。
根据时机的不同,可以被分为:
- 源代码插桩
- 编译时插桩
- 链接时插桩
- 运行时插桩
污点敏感点,即 Sink 点,是污点数据有可能被误用的指令或者系统调用。主要可以分为:
- 跳转地址
- 格式化字符串
- 系统调用参数
典型工具
TaintCheck:基于开源的x86模拟器Valgrind设计实现,先将机器指令翻译成为 ucode,然后将 ucode 传递给TaintCheck,根据指令类型执行相应的操作或者报警。
Argos:主要用作主机蜜罐,分析被检测到的攻击,检测 0day 漏洞攻击。
TrainDroid:针对安卓应用的动态监测软件。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.