关于非控制数据攻击的防御方法探讨.docVIP

关于非控制数据攻击的防御方法探讨.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于非控制数据攻击的防御方法探讨

关于非控制数据攻击的防御方法探讨 一、相关防御方法 针对非控制数据攻击,目前存在一些防御方式。其中大部分都是静态方法,需要程序源代码进行重新编译,无法应用于商业软件。也有一些动态分析解决方案,但是存在较严重的误报漏报。文献[9]提出了C语言的一个扩展语义mdash;mdash;YARRA,通过将程序中的关键数据声明为一种特殊类型,只有类型匹配的指针才能访问这类数据。实现了一个编译器的原型,编译后的程序可以有效地防御非控制数据攻击。ValueGuard在程序数据前添加哨兵位,将原始数据和哨兵位数据包装为结构体,每次运行时检查该哨兵位。这种方式同样需要对源程序进行重新编译。数据空间随机化DSR[11][DataSpaceRandomization]将内存中数据的存储内容随机化,针对不同的变量使用不同的掩码,和实际数值进行异或操作,当读取的时候再使用该掩码异或操作获取实际数值。攻击者通过覆写关键数据进行攻击时,由于不同变量掩码不同,因此实际写入的将会是垃圾数据,无法实施攻击。文献[12]针对非控制数据攻击多数都存在非法指针解引用的现象,设计了一种基于边界检查的防御方法,但是文献[3][15]指出这存在很严重的误报和漏报。文献[13]通过在硬件层面给寄存器、内存添加标记位,这样可以高效地进行污点标记,不过这需要全新的硬件支持,实用性不强。 二、防御原理 基础的动态污点分析(DTA)针对控制数据攻击非常有效,但是无法防御非控制数据攻击。研究发现,控制数据攻击和大部分非控制数据攻击都具备相同的特征,向攻击者构造的地址写入数据,或者读取攻击者构造的地址的数据。概括地说,大部分攻击都依赖于一个不安全的指针解引用[12][13],而这个不安全的指针通常是由攻击者构造的。例如格式化串攻击中,常见的攻击方式是攻击者往自己精心构造的地址写入一个数值,这就存在不安全指针的解引用。Chenet.al[2]提到的针对HTTPserver-GHTTPD和WU-FTPD的攻击实例,也是通过覆写指针,指针解引用后实施攻击。根据这一特征,我们提出了指针污点分析方法,它是DTA的一种扩展,因此我们这一方法也分为三个步骤:taintsource(标记污点来源);taintpropagation(传递污染属性);taintsink(污点信息终点)。污点来源source就是来自外部的数据,可以是读取自文件、网络等;根据二进制指令的实际含义定义不同的传播规则(即propagation);sink是污点数据的到达处,通常会在此处设置安全规则检查。下面我们定义两个重要的概念。定义1污点标记(tainttag,T-tag)是内存数据的一个属性,表示该数据是否是来自外部、受污染的。真值表示是受污染的,假值表示不是受污染的。定义2指针标记(pointertag,P-tag)是内存数据的一个属性,表示该数据是否是合法指针,是否可以用作地址。真值表示是合法指针,假值表示是非法指针。我们的防御方法就是围绕内存数据的这两个属性的标记、传播和检查。 1.标记污点来源 针对T-tag,我们监控程序读取文件、网络数据等行为,将获取的数据初始化标记为受污染的,其他数据标记为非污染的。针对P-tag,我们需要识别出该内存数据是否是合法的地址。有两种方式产生的数据可以用作指针,分别是动态分配空间的指针和静态分配空间的指针。初始状态下,只有通过这些方式产生的数据,才认为是合法的指针,其他数据默认会标记为非法指针。 2.传递污染属性 数据作为不同指令类型操作数时,其传播规则也不同。表1概括了不同的传播策略。我们将指令主要分为算术运算指令、逻辑运算指令、数据传输指令和特殊指令,下面针对T-tag和P-tag分别进行详细描述。 (1)T-tag传播策略 算术运算指令:add,sub,mul等Example:mulop1,op2Rule:T(op1)=T(op1)or;T(op2)解析:只要两个操作数中任一个为受污染的,则污染属性传播到目标操作数中。数据传输指令:mov型指令,包括mov、movsb等Example:movop1,op2Rule:T(op1)=T(op2)解析:源操作数的污染属性直接传播到目标操作数中。逻辑运算指令:and,or,shl等Example:andop1,op2Rule:T(op1)=T(op1)or;T(op2)解析:只要两个操作数中任一个为受污染的,则污染属性传播到目标操作数中。特殊指令:xor,test等Example:xorop1,op1Rule:T(op1)=0解析:该指令的目的是将相应寄存器中的数据清空,因此污染属性将会清除。 (2)P-tag传播策略 算术指令(相加、相减):add,subExample:addop1,o

文档评论(0)

docman126 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7042123103000003

1亿VIP精品文档

相关文档