一种多语义动态污点分析方法技术

技术编号:13428265 阅读:322 留言:0更新日期:2016-07-29 18:19
本发明专利技术公开了一种多语义动态污点分析方法。本方法为:1)对每种待跟踪语义数据分别设定唯一的污点语义类型;在一次动态污点分析过程中配置同时跟踪多种语义信息数据;2)根据每种污点语义类型,监控程序运行过程中是否有该污点语义类型的语义信息数据产生函数的调用;如果有则判定存在相应的污点源,并进行记录;3)根据监控到的每条指令语义信息以及操作数的污点状态进行污点传播计算,并将计算结果记录到影子内存;4)进行传播计算后,根据已有污点语义类型中预置的程序敏感指令集合判定该程序执行的指令是否为敏感指令,如果是则进行污点检测确定该指令位置上是否存在对应类型的污点。本发明专利技术提高了动态污点传播方法的分析效率。

【技术实现步骤摘要】

本专利技术属于计算机
,具体涉及一种多语义动态污点分析方法
技术介绍
动态污点分析(DynamicTaintAnalysis,简称DTA)技术从基本原理上来讲,其主要是通过跟踪外部不可信数据在程序内部的处理逻辑,并通过污点扩散规则来发现程序敏感位置中可能隐藏的污点数据内容,最终利用该机制来解决程序安全性分析中的相关问题,例如恶意代码检测、软件漏洞挖掘以及敏感数据保护等。经过多年的发展,DTA技术已经成为软件安全性分析领域中的一种重要方法。据相关统计,自2004年至2015年间,和动态污点传播相关的研究成果多达百余项。其中,2004年由斯坦福大学J.Chow等人提出的TaintBochs系统在DTA方法的基础上首次分析了系统中敏感数据的生命周期问题,并发现许多知名软件(例如,Mozilla浏览器、Apache服务器以及Perl脚本解析引擎等)存在敏感数据泄露的风险。此外,2005年由卡内基梅隆大学的J.Newsome等人提出的TaintCheck系统首次通过DTA方法对CodeRed、Slammer等恶意蠕虫进行较好的检测和分析。最后,2010年由宾夕法尼亚大学的W.Enck、杜克大学的P.Gilbert以及英特尔实验室的B.G.Chun合作完成了著名开源系统—TaintDroid,该系统更是将DTA技术应用在了智能终端上的用户隐私保护问题。尽管已经有众多研究者根据DTA技术取得了很多瞩目的成绩,但是对于DTA技术本身r>来说,仍面临着众多难以解决的问题:(1)DTA技术适合于解决数据流相关的问题,而对于控制流相关问题来说,由于需要引入过多的污点数据,导致无法有效分析;(2)DTA技术存在误报和漏报的问题,由于现有污点内存映射机制无法实现bit级的一一映射,因此在实际传播分析的过程中,难以避免出现误报和漏洞问题;(3)DTA技术在分析过程中碰到的污点数据主要是代表了程序从外部接收的不可信内容,因此存在语义单一的问题,即一次DTA分析往往只能对一种语义的污点数据进行传播分析。目前,由于问题(1)和问题(2)已有相关研究人员提出了初步的解决方案。例如,2011年加州伯克利大学以及卡内基梅隆大学的M.G.Kang等人结合静态分析技术提出了DTA++来解决控制流相关的问题。此外,2014年美国雪城大学的H.Yin等人提出了DECAF系统,该系统首次通过理论证明的方式给出了基于Bit级的污点传播规则,尽可能的消除了DTA技术中的误报和漏报问题。对于问题(3)来说,目前尚未有相关的解决方案,如果需要对多个语义的数据内容进行动态污点分析,则现有方案一般都是通过多次分析的方式来解决,这种方式费时费力,难以应用在实际场景中。
技术实现思路
针对现有DTA技术存在语义单一的问题,本专利技术的目的在于提供一种多语义动态污点分析方法,通过不同的污点类型来表明程序中不同语义的污点数据,并设置每种类型的污点传播规则和默认传播规则,进而通过一次分析即可完成多语义污点传播过程。一种多语义动态污点分析方法,其步骤如下:1、根据在一次动态污点分析过程中同时跟踪多种语义信息数据的配置要求,对每种待跟踪语义信息数据设定唯一的污点语义类型;2、根据每种污点语义类型,监控程序运行过程中是否有该污点语义类型的语义信息数据产生函数的调用进而判断是否在程序中引入了相应的污点源,如果有相应污点源的产生,则以影子内存的方式进行记录;3、在程序动态执行的过程,根据监控到的每条指令语义信息以及操作数的污点状态进行污点传播计算,并将最终的结果记录到影子内存;4、在进行传播计算后,根据已有污点语义类型中预置的程序敏感指令集合来判定当前目标程序执行的指令是否为敏感指令,如果是则进行污点检测,并且如果在该指令位置上存在对应类型的污点,则调用其处理方法。程序敏感指令集合是指检测污点可能被误用的一系列指令集合,包括程序跳转指令JMP以及方法调用指令CALL/RET等;这些信息只需要提前写到配置文件即可。进一步,在上述步骤1)中的污点语义类型包括类型标识、传播规则集合、程序敏感点以及污点处理方法;步骤2)中的影子内存包括污点语义信息数据对应的内存地址或者寄存器编号、污点语义信息数据的长度以及污点语义类型,污点语义类型为空表示未被感染。此外,在步骤3)中提到的污点传播计算流程主要包括以下三个过程:即首先在程序动态执行过程提取程序当前执行指令的语义信息;其次,根据提取的语义信息得到该指令的指令操作数,然后根据待分析指令操作数的地址来查询其对应的影子内存中污点状态,如果污点语义类型不为空且对应的传播规则集合中包含有该指令操作码的具体传播规则,则按照该规则进行污点传播计算,否则按照预置的默认传播规则计算;最后,将传播计算结果记录在该指令目的操作数对应的影子内存,同时如果该指令属于程序敏感指令集合且该指令操作数中存在污点,则调用该污点语义类型中的污点处理方法。本专利技术的优点和积极效果如下:1、本专利技术在传统DTA的基础上,给出了多语义污点类型的相关描述,增强了污点分析方法的描述能力;2、本专利技术通过为每种语义污点定义特殊的规则集合和处理方法,保证在污点传播计算过程中,既能对多种污点类型进行统一的传播计算,同时也能够对特殊类型的污点数据进行特殊处理,从而提高了污点分析方法的处理能力;3、本专利技术通过在一次动态分析的过程中对多种语义污点进行传播计算,提高了动态污点传播方法的分析效率。综上,本专利技术提出的多语义动态污点分析方法,解决现有DTA技术中语义单一的问题,为推动DTA技术应用在更多的实际问题中起到了基础支撑作用。附图说明图1为多语义动态污点分析流程图。图2为多语义动态污点传播计算流程图。具体实施方式下面结合附图详细说明本专利技术的技术方案:如图1所示,一种多语义动态污点分析方法,包括以下阶段:1.根据多语义污点配置生成不同的污点语义类型首先解析多语义动态污点分析的配置要求,即提取同时跟踪多少种不同的污点语义类型,其次结合每种污点语义类型,初始化相关的实例参数。具体的,本专利技术使用实例参数TT=(T,L,C,R,P,F)来描述污点语义类型,其中T表示唯一的类型标示,例如0表示普通文件类型污点,1表示网络数据类型污点;L为污点语义类型,C表示程序中产生该种污点语义类型污点的所有方法,例如ReadFile表示产生文件类型污点的方法,recv表示网络数据类型污点的方法;R表示该种污点语义类型污点对应的传播规则集合,例如“T=1的污点的减本文档来自技高网...
一种多语义动态污点分析方法

【技术保护点】
一种多语义动态污点分析方法,其步骤为:1)对每种待跟踪语义数据分别设定唯一的污点语义类型;其中,在一次动态污点分析过程中配置同时跟踪多种语义信息数据;2)根据每种污点语义类型,监控程序运行过程中是否有该污点语义类型的语义信息数据产生函数的调用;如果有,则判定该程序中存在相应的污点源,并以影子内存的方式进行记录;3)在程序动态执行的过程,根据监控到的每条指令语义信息以及操作数的污点状态进行污点传播计算,并将计算结果记录到影子内存;4)在进行传播计算后,根据已有污点语义类型中预置的程序敏感指令集合判定该程序执行的指令是否为敏感指令,如果是则进行污点检测确定该指令位置上是否存在对应类型的污点。

【技术特征摘要】
1.一种多语义动态污点分析方法,其步骤为:
1)对每种待跟踪语义数据分别设定唯一的污点语义类型;其中,在一次动态污点分析过
程中配置同时跟踪多种语义信息数据;
2)根据每种污点语义类型,监控程序运行过程中是否有该污点语义类型的语义信息数据
产生函数的调用;如果有,则判定该程序中存在相应的污点源,并以影子内存的方式
进行记录;
3)在程序动态执行的过程,根据监控到的每条指令语义信息以及操作数的污点状态进行
污点传播计算,并将计算结果记录到影子内存;
4)在进行传播计算后,根据已有污点语义类型中预置的程序敏感指令集合判定该程序执
行的指令是否为敏感指令,如果是则进行污点检测确定该指令位置上是否存在对应类
型的污点。
2.如权利要求1所述的方法,其特征在于,步骤2)中以影子内存方式记录的信息包括污点
数据对应的内存地址或者寄存器编号、污点语义数据的长度以及污点语义类型。
3.如权利要求1或2所述的方法,其特征在于,所述污点语义类型包括类型标识以及程序中
产生该种污点语义类型污点的方法集合、传播规则集...

【专利技术属性】
技术研发人员:和亮苏璞睿杨轶闫佳黄桦烽
申请(专利权)人:中国科学院软件研究所
类型:发明
国别省市:北京;11

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

1