一种基于规则定义的Java污点分析方法技术

技术编号:27006153 阅读:19 留言:0更新日期:2021-01-08 17:09
本发明专利技术具体公开了一种基于规则定义的Java污点分析方法,所述方法包括:S1、定义Java语言中source点和sink点的规则并形成格式化的规则;S2、定义Java语言的污点传播规则;S3、根据步骤S1中所定义的Java语言中source点和sink点的规则和步骤S2中所定义的污点传播规则,构建Java语言中每个污点的传播路径以对Java污点进行分析。本发明专利技术通过对Java语言中source点和sink点的规则以及对污点传播规则进行定义,从而构建出Java语言中污点的传播路径并进行追踪,通过将程序中的污点构建与source点规则、sink点规则和pass点规则的定义相分离,使得污点传播分析具有自定义性和可扩展性,因此,用户可以在不了解静态分析核心技术的情况下构造出对Java污点进行分析的自定义污染分析规则。

【技术实现步骤摘要】
一种基于规则定义的Java污点分析方法
本专利技术涉及源代码分析
,尤其涉及一种基于规则定义的Java污点分析方法。
技术介绍
现有的污点分析技术大多是基于指针分析的技术,指针分析技术主要是为指针变量构建指针流图(PFG),即:为各指针变量之间的引用传递/相互引用关系构建一个关系图。这种分析存在一个问题,就是当静态分析源代码时,遇到一些不可直接进入函数继续进行分析的节点。比如Java语言中JNI提供的native方法,不能够再深入地进行分析,因为JNI接口调用层的两侧为不同的编程语言:Java和C/C++语言,且另一侧的C/C++编程语言一般会被编译成二进制的代码,所以分析起来相当困难。另外,污点安全分析工具主要是针对用户的代码进行分析,也不需要再进行深入分析。
技术实现思路
本专利技术的目的是提供一种基于规则定义的Java污点分析方法,所述方法通过定义Java语言中的source点和sink点的规则以及对污点传播规则进行定义,从而构建出每个污点的传播路径并进行追踪,使得污点传播分析具有自定义性和可扩展性,因此,用户可以在不了解静态分析核心技术的情况下构造自定义污染分析规则以对Java污点进行分析。为解决上述技术问题,本专利技术提供一种基于规则定义的Java污点分析方法,所述方法包括以下步骤:S1、定义Java语言中source点和sink点的规则以形成格式化的规则;S2、定义Java语言的污点传播规则;S3、根据步骤S1中所定义的Java语言中source点和sink点的规则和步骤S2中所定义的污点传播规则,构建Java语言中每个污点的传播路径以对Java污点进行分析。优选地,所述步骤S1中source点的规则具体包括source标识、第一命名空间、第一类名、第一函数名和第一flags,其中,所述source标识表示sourse点ID,第一命名空间、第一类名第一和函数名用于确定程序中的source函数并进行匹配,第一flags表示source点返回数据所携带的污点信息。优选地,所述步骤S1中sink点的规则具体包括sink标识、第二命名空间、第二类名、第二函数名和第二flags,其中,所述sink标识表示sink点ID,第二命名空间、第二类名和第二函数名用于确定程序中的sink函数并进行匹配,第二flags表示sink点返回数据所携带的污点信息。优选地,所述步骤S2中的污点传播规则是指类实例化、函数传参和赋值中的至少一种。优选地,所述步骤S2中的污点传播规则具体包括Pass标识、第三命名空间、第三类名、第三函数名和第三flags,其中,所述Pass标识表示pass点ID,第三命名空间、第三类名和第三函数名用于确定程序中的Pass函数并进行匹配,第三flags包括用于过滤掉流向sink点污点数据的+flags和-flags。优选地,所述步骤S3的具体实现方式为:根据source点和sink点的规则分别对source点和sink点进行匹配,同时根据污点传播规则对pass点进行匹配,然后将匹配到的source点、pass点和sink点连接成边以形成一条污染路径,进而实现对Java污点的分析。与现有技术比较,本专利技术通过定义Java语言中的source点和sink点的规则以及对污点传播规则进行定义,从而构建出每个污点的传播路径并进行追踪,使得污点传播分析具有自定义性和可扩展性,因此,用户可以在不了解静态分析核心技术的情况下构造出自定义污染分析规则以对Java污点进行分析。附图说明图1是本专利技术一种基于规则定义的Java污点分析方法的流程图,图2是本专利技术中source函数和sink函数之间的调用关系以及污点传播的路径指向图。具体实施方式为了使本
的人员更好地理解本专利技术的技术方案,下面结合附图对本专利技术作进一步的详细说明。如图1所示,一种基于规则定义的Java污点分析方法,所述方法包括以下步骤:S1、定义Java语言中source点和sink点的规则以形成格式化的规则;S2、定义Java语言的污点传播规则;S3、根据步骤S1中所定义的Java语言中source点和sink点的规则和步骤S2中所定义的污点传播规则,构建Java语言中每个污点的传播路径以对Java污点进行分析。本实施例中,首先对Java语言中source点和sink点的规则进行定义,同时对污点传播规则进行定义,进而构建出Java语言中污点的传播路径并进行追踪,通过将程序中的污点构建与source点规则、sink点规则和污点传播规则定义相分离,使得污点传播分析具有自定义性和可扩展性,对于一些开发人员而言,每个人都有一套自己对程序的某种source函数->sink函数感兴趣的规则,既可以根据本专利技术的技术方案在不修改程序的源代码的情况下,进行规则扩展,换句话说,对于不同用户,如果他们对一个程序源代码的source函数->sink函数的兴趣侧重点不同,就可以针对不同的兴趣侧重点来定义不同的规则,系统将为其生成不同的source函数->sink函数的传播路径。因此,用户可以在不了解静态分析核心技术的情况下构造出自定义污染分析规则以实现对Java污点进行分析。其中,所述步骤S1中source点的规则具体包括source标识、第一命名空间、第一类名、第一函数名和第一flags,其中,所述source标识表示sourse点ID,第一命名空间、第一类名第一和函数名用于确定程序中的source函数并进行匹配,第一flags表示source点返回数据所携带的污点信息。本实施例中,每个source点均由五个部分组成:source标识(sourceid),第一命名空间(1thNameSpace),类名(1thClassName),函数名(1thFunctionName),1thflags。通过“第一命名空间、第一类名和第一函数名”能够唯一确定程序中出现的source函数(即程序中出现的source函数必可以表示成“第一命名空间.第一类名.第一函数名”的形式),进而能够对程序中的source函数进行匹配,从而得到一个source点,其中第一flags是指source点返回数据所携带的的污点信息,用一个表示。设定程序中出现source函数为x=source(),假设等号右侧的函数可以表示成“1thnamespace1.1thclassname1.1thsource”这种形式,如果我们系统中预定义了一个规则(source1:1thnamespace1.1thclassname1.1thsource,{1,2}),通过匹配,可以得出source函数x=source()能够匹配到id为1的source规则,并且通过等号赋值,使得其携带了污点为{1,2}的第一flags信息。其中,所述步骤S1中sink点的规则具体包括sink标识、第二命名空间、第二类名、第二函数名和第二flags,其中,所述sink标识表示si本文档来自技高网
...

【技术保护点】
1.一种基于规则定义的Java污点分析方法,其特征在于,所述方法包括以下步骤:/nS1、首先定义Java语言中source点和sink点的规则以形成格式化的规则;/nS2、定义Java语言的污点传播规则;/nS3、根据步骤S1中所定义的Java语言中source点和sink点的规则和步骤S2中所定义的污点传播规则,构建Java语言中每个污点的传播路径以对Java语言中的污点进行分析。/n

【技术特征摘要】
1.一种基于规则定义的Java污点分析方法,其特征在于,所述方法包括以下步骤:
S1、首先定义Java语言中source点和sink点的规则以形成格式化的规则;
S2、定义Java语言的污点传播规则;
S3、根据步骤S1中所定义的Java语言中source点和sink点的规则和步骤S2中所定义的污点传播规则,构建Java语言中每个污点的传播路径以对Java语言中的污点进行分析。


2.如权利要求1所述的基于规则定义的Java污点分析方法,其特征在于,所述步骤S1中source点的规则具体包括source标识、第一命名空间、第一类名、第一函数名和第一flags,其中,所述source标识表示sourse点ID,第一命名空间、第一类名第一和函数名用于确定程序中的source函数并进行匹配,第一flags表示source点返回数据所携带的污点信息。


3.如权利要求2所述的基于规则定义的Java污点分析方法,其特征在于,所述步骤S1中sink点的规则具体包括sink标识、第二命名空间、第二类名、第二函数名和第二flags,其中,所述sink标识表示sink点ID,第二...

【专利技术属性】
技术研发人员:王盛杨智霖欧鹏程
申请(专利权)人:湖南泛联新安信息科技有限公司
类型:发明
国别省市:湖南;43

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

1