登录 注册
当前位置:主页 > 资源下载 > 50 > 基于roBDD的细颗粒度污点分析方法与基于matlab实现的一维条形码检测技术

基于roBDD的细颗粒度污点分析方法与基于matlab实现的一维条形码检测技术

  • 更新:2024-05-25 15:07:20
  • 大小:2.93MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:系统安全 - 安全技术
  • 格式:PDF

资源介绍

第二章 基于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)操作,这也将导致严重的性能损失。虽然很多污点分析系