-
基于roBDD的细颗粒度污点分析方法与基于matlab实现的一维条形码检测技术
资源介绍
第二章 基于roBDD的细颗粒度污点分
析技术
2.1 引言
作为一种新兴的程序分析技术,动态污点分析(Dynamic Taint Analysis)已
经广泛应用于信息安全很多领域,例如恶意代码分析[175, 146],网络攻击检测
与防护 [127],软件安全漏洞挖掘 [158, 47]、协议格式逆向分析[48, 170, 106, 69,
62]等。动态污点分析的基本思想是在程序执行过程中,追踪特定数据片段(例如
输入数据、密码)的传播过程,收集目标程序对这些数据的详细使用信息。例如,
TaintCheck系统 [127]在程序执行过程中,跟踪网络报文数据的传播;一旦程序计
数器PC依赖于网络报文数据,TaintCheck 生成一个攻击警报。
动态污点分析主要由两个部分构成:污点数据的标定和污点数据的追踪。污
点数据的标定通常可以通过对特定系统API函数的劫持实现。但为了追踪污点数
据,通常需要维护一个影子内存(shadow memory),用于记录内存地址和污点属
性的映射关系。为便于表达,本章中将内存地址记为m,污点属性记为t。影子内
存M 为m到t的映射,记为{m 7→ t}。由于传统污点分析系统大多关注内存单元是
否依赖于污点数据,布尔变量即可描述此类型的污点属性t。例如,M(m) = 1表
示内存单元m依赖于污点数据,M(m′) = 0表示内存单元m′不依赖于污点数据。
换而言之,在传统污点分析中,所有的污点数据被赋予了同样的标签。
与传统污点分析不同,细颗粒度污点分析指为每个污点数据字节赋予唯一的
标签,进而跟踪每个污点字节的传播过程。由于程序内部复杂的数据依赖关系,
一个内存单元通常依赖于很多污点数据,因此需要用集合结构体来描述污点属
性t。集合结构体的引入给细颗粒度污点分析带来严重影响。一方面,集合结构体
的使用会显著增加内存消耗。另一方面,追踪污点数据传播的过程中,涉及到大
量的集合合取(union)操作,这也将导致严重的性能损失。虽然很多污点分析系
- 上一篇: 操作系统课程设计:司机与售票员源代码.docx
- 下一篇: 角色服务和验证-odoo中文开发手册