用于细颗粒度污点分析的污染属性存储方法技术

技术编号:11128272 阅读:60 留言:0更新日期:2015-03-11 17:32
本发明专利技术提供了一种用于细颗粒度污点分析的污染属性存储方法,包括:以键值对的形式描述细颗粒度污点分析所得出的指定内存地址与其污染属性的映射关系,其中在每个键值对中,键用于存储内存地址,值用于存储该内存地址的当前的污染属性;并且直接将所述键值对存储于两级存储系统中,其中所述两级存储系统由作为第一级的高速内存和作为第二级的大容量外存组成。

【技术实现步骤摘要】

本专利技术涉及细颗粒度污点分析领域,更具体地说,本专利技术涉及一种用于细颗粒度 污点分析的污染属性存储方法。
技术介绍
污点分析是目前安全领域中应用最为广泛的分析技术,在漏洞发掘、恶意软件分 析、测试用例生成等领域具有广泛的应用。其基本思想是通过跟踪外部输入的数据在程序 中的传播过程,和最终执行的情况来分析是否存在安全漏洞和存在什么类别的漏洞,它不 需要任何特殊的攻击性的测试数据,而以一种溯源式的方式判断外部传递数据对跳转地 址、返回地址、函数指针的影响 细颗粒度污点分析是污点分析技术的一种。指在污点标记过程中把输入数据的每 一个字节都进行独立编号和标记,从而可以独立地跟踪输入数据的每个字节在程序运行过 程中的传播过程和状态信息。 由于细颗粒度污点分析对于目标软件的输入数据的每一个字节都进行唯一的标 记,因此引入如下问题: 1、程序运行时使用的每个内存单元都可能依赖于多个污点数据,记录每个内存单 元(或寄存器)与污染属性的映射关系对存储空间需求很大; 2、程序运行时每一条指令的执行都可能导致污点由一个内存地址传播至另一个 内存地址,传播过程需要对内存地址的污染属性进行合并、删除等运算操作,由于每条指令 的执行都可能需要进行计算,所以这一过程对计算性能有很高的要求。 目前,每个内存单元的污染属性通常是采用整数集合的形式进行描述和存储,整 数集合中的每个数对应于输入数据中的一个字节的编号;污点传播过程中的污染属性运 算,实际是以整数集合合并的方式来实现。 细颗粒度污点分析的污染属性存储的实际就是程序运行时内存地址(或寄存器, 下文同)与污点属性的映射关系,记为{mbt}。 以整数集合描述污点属性进行存储和运算,在空间和时间性能上都有很大的开 销。典型的实验过程表明,1千万条指令的执行轨迹大小约I. 5GB,对小规模程序进行动态 污点分析产生的映射数据量即可达到10GB。使用SQL关系数据库存储海量的内存地址与污 点属性的映射关系效率并不理想。 非专利文献1(王铁磊,面向二进制程序的漏洞挖掘关键技术研究,2011)提出以 规约有序二元决策图(roBDD)取代整数集合进行细颗粒度污点分析,即以roBDD的形式记 录{m&t}映射关系中的t的值,该方法可以在减少污染属性的存储空间需求的同时,提升细 颗粒度污点传播的运行速度。但使用了 roBDD取代整数集合,在内存空间有限的情况下,细 颗粒度污点分析仍可能会遇到存储空间和计算资源的性能瓶颈。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种两层存储 结构进行细颗粒度污点分析污染属性的存储,供分析例程高速读取和写入细颗粒度污点分 析过程中产生的海量内存地址与污点属性之间的映射关系。 为了实现上述技术目的,根据本专利技术,提供了一种用于细颗粒度污点分析的污染 属性存储方法,包括:以键值对的形式描述细颗粒度污点分析所得出的指定内存地址与其 污染属性的映射关系;以及直接将所述键值对存储于两级存储系统中。 优选地,所述两级存储系统由作为第一级的高速内存和作为第二级的大容量外存 组成。 优选地,在每个键值对中,键用于存储内存地址,值用于存储该内存地址的当前的 污染属性。 优选地,在第一级的内存中使用B+树结构对对键值进行存储。 优选地,在第二级的外存中使用Hash表对对键值进行存储。 优选地,在直接将所述键值对存储于两级存储系统中时,在第一级和第二级上同 时进行所述键值对的存储。 优选地,在第一级的内存的存储容量达到上限时,通过LRU策略淘汰出旧的数据。 通过在本专利技术提出的两级存储方法,直接以键值对形式存储细颗粒度污点分析过 程中产生的海量内存地址与污点属性之间的映射关系,在第一级内存空间充足的情况下, 可达到最高的读写性能;而在内存空间有限的情况下,也可借助大容量的第二级存储存储 更多的数据,同时将读写性能的下降尽可能减少。并且,这些过程都在内部实现,外部细颗 粒度污点分析例程调用完全不需要知道内部实现的细节。 【附图说明】 结合附图,并通过参考下面的详细描述,将会更容易地对本专利技术有更完整的理解 并且更容易地理解其伴随的优点和特征,其中: 图1示意性地示出了根据本专利技术优选实施例的用于细颗粒度污点分析的污染属 性存储方法的流程图。 图2示意性地示出了根据本专利技术优选实施例的细颗粒度污点分析的污染属性存 储架构。 图3示意性地示出了根据本专利技术优选实施例的污染属性存储架构的第一级。 图4示意性地示出了根据本专利技术优选实施例的污染属性存储架构的第二级。 图5示意性地示出了根据本专利技术优选实施例的用于细颗粒度污点分析的污染属 性存储方法的具体实例。 需要说明的是,附图用于说明本专利技术,而非限制本专利技术。注意,表示结构的附图可 能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。 【具体实施方式】 为了使本专利技术的内容更加清楚和易懂,下面结合具体实施例和附图对本专利技术的内 容进行详细描述。 本专利技术针对细颗粒度污点分析污染属性的数据特征,提出一种存储方法,该方法 采用图2所示的两个级别的键值对(key/value)数据存储系统,其中每一条键值对数据,对 应一个内存地址和其污点属性的映射关系,即键用于存储内存地址,值用于存储该内 存地址当前的污染属性。键值对数据存储既没有关系数据库表的概念,也不存在数据类型, 属于NOSQL数据库的范畴。 图1示意性地示出了根据本专利技术优选实施例的用于细颗粒度污点分析的污染属 性存储方法的流程图。 根据本专利技术优选实施例的包括: 第一步骤Sl :以键值对的形式描述细颗粒度污点分析所得出的指定内存地址与 其污染属性的映射关系,其中在每个键值对中,键用于存储内存地址,值用于存储该内存地 址的当前的污染属性;以及 第二步骤S2 :直接将所述键值对存储于两级存储系统中,其中所述两级存储系统 由作为第一级的高速内存和作为第二级的大容量外存组成。 具体而言,优选地,在第一级的内存中使用B+树结构对对键值进行存储,其结构 如图3所示,为了尽量使计算在容量有限的一级存储上进行,在数据结构设计上优先考虑 降低空间复杂度,由于B+树的实现上每个记录头只需4个字节,从而最大程度优化了空间 复杂度,降低内存使用量,根据内存地址查找其污染属性的时间复杂度O(IogN),N为污点 属性数据的总条数,使用LRU(Least Recent Use)策略删除最不常用的数据; 此外,优选地,在第二级的外存中使用Hash表对对键值进行存储,其结构如图4 所示,根据内存地址查找其污染属性的时间复杂度〇(1),优于第一次存储,但每个记录头需 16个字节,占用存储空间相对第一级变大。 优选地,定义两级存储的使用策略为:在直接将所述键值对存储于两级存储系统 中时,在第一级和第二级上同时进行所述键值对的存储(即,键值对被随机地存储在第一 级或第二级中);优选地,在读取期望获取的键值对时,首先在第一级存储的键值对进行查 找,如果第一级存储的键值对中未发现期望获取的键值对,再在第二级存储的键值对本文档来自技高网
...

【技术保护点】
一种用于细颗粒度污点分析的污染属性存储方法,其特征在于包括:以键值对的形式描述细颗粒度污点分析所得出的指定内存地址与其污染属性的映射关系;以及直接将所述键值对存储于两级存储系统中。

【技术特征摘要】
1. 一种用于细颗粒度污点分析的污染属性存储方法,其特征在于包括: 以键值对的形式描述细颗粒度污点分析所得出的指定内存地址与其污染属性的映射 关系;以及 直接将所述键值对存储于两级存储系统中。2. 根据权利要求1所述的污染属性存储方法,其特征在于,所述两级存储系统由作为 第一级的高速内存和作为第二级的大容量外存组成。3. 根据权利要求1或2所述的污染属性存储方法,其特征在于,在每个键值对中,键用 于存储内存地址,值用于存储该内存地址的当前的污染属性。4. 根据权利要求...

【专利技术属性】
技术研发人员:张垚董超群司品超廖军张超容黄东海
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1