一种基于语义分析的无害化处理识别方法技术

技术编号:31847569 阅读:32 留言:0更新日期:2022-01-12 13:28
本发明专利技术公开了一种基于语义分析的无害化处理识别方法,通过静态分析提取目标系统源码的自然语义与程序语义,并利用构建的程序语义特征模型识别无害化处理,能够有效识别无害化处理,提高了准确性。另外,这一方法可用于污点分析方法中进一步使用,对提高污点分析效率有显著效果,也能极大地降低基于污点分析的漏洞挖掘方法的误报率。挖掘方法的误报率。挖掘方法的误报率。

【技术实现步骤摘要】
一种基于语义分析的无害化处理识别方法


[0001]本专利技术涉及计算机安全
,尤其涉及一种基于语义分析的无害化处理识别方法。

技术介绍

[0002]输入型的漏洞是Web应用程序中最为普遍且威胁最大的漏洞类型之一,这一类漏洞通常是指由恶意的外部输入所引起的安全问题,比如SQL注入漏洞和XSS漏洞等。近几年,为检测这类漏洞,研究者提出很多方法对Web应用进行分析,其中,静态代码分析以其高效率的优点被广泛研究。这一方法能够在不运行程序的情况下,获取程序内部的结构和特性,进而分析程序中潜在的安全问题。在众多静态分析方法中,基于污点数据流分析的方法是一个研究热点。它对程序中的数据流动进行跟踪,根据数据的源头与使用是否到达敏感函数,判断是否存在安全风险。这一方法对于数据的源头与使用进行建模,和人工审计代码寻找漏洞时的方法相似,具备一定的准确性。然而,静态污点分析方法同样存在误报率较高的问题。
[0003]在目前的污点分析方法中,方法重点更偏向解决别名传播的分析问题,以提升污点分析的效果。无害化处理识别是污点分析的重要组成部分,也是污点分析结果是否有效的重要影响因素。在现有的无害化处理识别方法中,常使用的方法为库函数字典或关键字匹配。但实际上,由于Web应用的开发环境复杂,代码量大,难以确定一个有效的关键字集合对无害化处理进行有效识别。也就是说,现有的识别方法可能存在较多的漏报与误报,而这也会进一步影响到污点分析结果的准确性。

技术实现思路

[0004]为了克服上述现有技术的不足,本专利技术提供一种基于语义分析的无害化处理识别方法,能够准确识别源码中的无害化处理,构建一个较为精准的无害化处理集合,使污点分析结果与漏洞检测准确、高效。
[0005]本专利技术提供的技术方案是:一种基于语义分析的无害化处理识别方法,整个识别方法分为自然语义分析与程序语义分析两个部分:自然语义分析:在这一步中,基于自然语义分析对数据变换、异常处理函数和返回错误代码进行初步识别。我们对收集的基础函数集中的函数名进行分词,并根据负向词分词得到新的可疑关键词集合,从而实现智能化的可疑关键词集合构建,针对分析目标构建更加完整的函数与语句集合。
[0006]程序语义分析:构建无害化处理程序语义模型,对通过自然语义分析得出的数据变换函数进一步过滤。使用程序语义分析对前一步骤中得到的结果进一步校验,过滤掉不符合条件的结果。之后,我们结合分析得到的数据变换函数、异常处理函数与返回错误代码集合,利用程序语义分析识别程序中的安全检查。
[0007]其中,自然语义分析部分执行如下步骤:
步骤1,收集数据变换函数、异常处理函数和返回错误代码初始集合,即初始无害化处理集合,并进行分词得到关键词集合;步骤2,使用关键词集合对目标Web应用程序源码进行分析,并进行新一轮的分词,构建新的可疑关键词集合;步骤3,根据步骤2中得到的可疑关键词集合对目标Web应用程序源码进行第二轮分析,构建可疑的数据变换函数、异常处理函数和返回错误代码集合,即可疑无害化处理集合。
[0008]程序语义分析部分包含回溯过滤、安全检查识别两个阶段。
[0009]步骤4,回溯过滤:对于可疑的数据变换函数,使用数据流分析获取其数据流图,判断是否满足无害化处理条件,若满足则保留,不满足则将其剔除;对于可疑的异常处理函数和返回错误代码,首先使用控制流分析获取程序的控制流图,进而对集合中的每一个可疑元素进行分析,判断是否符合类安全检查的语义模型,是则保留,否则删除该元素。
[0010]针对步骤3得到的可疑的数据变换函数集合,符合无害化处理的数据变换函数应满足如下条件:(1)函数输入值经过函数内语句传播后,必须能够到达函数输出口,即返回值;(2)函数内语句的操作对象,应和输入值直接或间接相关,函数内不应出现与输入值毫无关联的数据传播链。
[0011]而对于可疑的异常处理函数和返回错误代码集合,需在回溯过滤阶段根据是否符合类安全检查的语义模型进行进一步校验,对集合中的每一个元素进行分析。其中,所述类安全检查的语义模型具体如下:假设分支语句整体为N,使用N(R
j
)表示其中特定的一条分支语句,用表示这一条分支中使用的函数与指令,上述可疑的异常处理函数与错误代码返回集合为D,D
i
为该集合中的某一元素,ND
i
表示D
i
外的任意元素。如果D
i
满足类安全检查的语义模型,则:and即在一个分支语句中,如果部分分支包含D
i
,部分分支不包含D
i
,则D
i
服从类安全检查的语义模型。若一个可疑函数不满足类安全检查的语义模型,则一定不是异常处理函数。
[0012]步骤5,使用安全检查识别进一步识别无害化处理集合,在这一步骤中,需要对步骤4回溯过滤后得到的数据变换函数、异常处理函数和返回错误代码集合所处的代码片段进行分析,判断是否符合安全检查的语义模型。其中,安全检查的语义模型为:假设分支语句整体为M,使用M(C
i
) 表示其中特定的一条分支,则分支语句可能的情况为:进而,如果分支语句M为一个无害化处理,则:
也就是说,如果一个条件语句的分支中有至少一个安全处理语句分支和正常程序分支,则这一个条件语句即为无害化处理。
[0013]本专利技术的有益效果是:本专利技术提供一种基于语义分析的无害化处理识别方法,通过静态分析,提取目标系统源码的自然语义与程序语义,并利用构建的程序语义特征模型识别无害化处理,能够有效识别无害化处理,提高了准确性。另外,这一方法可用于污点分析方法中进一步使用,对提高污点分析效率有显著效果,也能极大地降低基于污点分析的漏洞挖掘方法的误报率。
附图说明
[0014]图1为本专利技术基于语义分析的无害化处理识别方法的流程框图。
具体实施方式
[0015]下面结合附图,通过实施例进一步描述本专利技术,但不以任何方式限制本专利技术的范围。
[0016]图1展现了本专利技术提出方法的工作流程,整个分析流程分为自然语义分析与程序语义分析两个部分:自然语义分析:在这一步中,我们对数据变换函数、异常处理函数和返回错误代码进行初步识别。编程语言自带的函数可以很容易地从官方文档中找到。而处于编程规范的考虑,自定义的函数往往会使用一些相同的字符串,如“filter”、“safe”等。因此,我们提出基于自然语义分析进行自动化识别。我们对收集的基础函数集中的函数名进行分词,并根据负向词分词得到新的可疑关键词集合,从而实现智能化的可疑关键词集合构建,针对分析目标构建更加完整的函数与语句集合。
[0017]程序语义分析:我们通过构建语义模型,对通过自然语义分析得出的数据变换函数进一步过滤。使用程序语义分析对前一步骤中得到的结果进一步校验,过滤掉不符合条件的结果。之后,我们结合分析得到的数据变换函数、异常处理函数与返回错误代码集合,利用程序语义分析识别程序中的安全检查。
[0018]阶段本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于语义分析的无害化处理识别方法,分为自然语义分析与程序语义分析两个部分,其中:所述自然语义分析部分执行如下步骤1)至3):1) 收集数据变换函数、异常处理函数和返回错误代码初始集合,并进行分词得到关键词集合;2) 使用关键词集合对目标Web应用程序源码进行分析,并进行新一轮的分词,构建新的可疑关键词集合;3) 根据步骤2)得到的可疑关键词集合对目标Web应用程序源码进行第二轮分析,构建可疑的数据变换函数、异常处理函数和返回错误代码集合;所述程序语义分析部分包含回溯过滤、安全检查识别两个阶段,执行如下步骤4)至5):4) 回溯过滤:对于可疑的数据变换函数,使用数据流分析获取其数据流图,判断是否满足无害化处理条件,若满足则保留,不满足则将其剔除;对于可疑的异常处理函数和返回错误代码,首先使用控制流分析获取程序的控制流图,进而对集合中的每一个可疑元素进行分析,判断是否符合类安全检查的语义模型,是则保留,否则删除该元素;5) 安全检查识别:对于回溯过滤后的数据变换函数、异常处理函数和返回错误代码集合,进一步识别程序中的安全检查语句,判断其是否符合安全检查的语义模型,是则保留,否则删除,得到最终的无害化处理集合。2.如权利要求1所述的无害化处理识别方法,其特征在于,步骤1)通过收集编程语言库函数集合,得到数据变换函数、异常处理函数和返回错误代码初始集合,分词时将带有负向语义的高频词汇作为关键词集合。3.如权利要求1所述的无害化处理识别方法,其特征在于,在步骤4)中,符合无害化处理的数据变换函数应满足如下条件:
①ꢀ
函数输入值经过函数内语句传播后,必须能够到达函数输出口,即返回值;
②ꢀ
函数内语句的操作对象,应和输入值直接或间接相关,函数内不应出现与输入值毫无关联的数据传播链。4.如权利要求1所述的无害化处理识别方法,其特征在于,在步骤4)中,定义所述类安全检查的语义模型如下:假设分支语句整体为N,使用N(R
j
)表示其中特定的一条分支语句,用表示这一条分支中使用的函数与指令;可疑的异常处理函数和错误代码返回集合为D,D
i<...

【专利技术属性】
技术研发人员:陈夏润杨洲永志方莹刘宇航
申请(专利权)人:北京雁翎网卫智能科技有限公司
类型:发明
国别省市:

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

1