(12)发明专利申请
(10)申请公布号 CN 111291373 A(43)申请公布日 2020.06.16
(21)申请号 202010078574.6(22)申请日 2020.02.03
(71)申请人 思客云(北京)软件技术有限公司
地址 100194 北京市海淀区苏家坨镇绿地
中央广场连桥二街9号院1号楼602(72)发明人 王小东
(74)专利代理机构 北京八月瓜知识产权代理有
限公司 11543
代理人 李斌(51)Int.Cl.
G06F 21/56(2013.01)
权利要求书1页 说明书5页 附图2页
(54)发明名称
用于分析数据污染传播的方法、设备和计算机可读存储介质
(57)摘要
本发明涉及一种用于分析数据污染传播的方法、设备和计算机可读存储介质。该方法包括:步骤1:收集所有类内的全局变量和局部变量,以便得到所有变量的数据信息;步骤2:逐一分析所述数据信息,形成所述数据信息之间的关联关系。本发明解决了现有的数据污染传播只是理论上的描述并没有具体的实现方式的问题,使得完整地表达出来数据传播的流程,能够对任何一个节点进行查找,很快地定位节点,并且很快地溯源到数据的源头。
CN 111291373 ACN 111291373 A
权 利 要 求 书
1/1页
1.一种用于分析数据污染传播的方法,其特征在于,所述方法包括:步骤1:收集所有类内的全局变量和局部变量,以便得到所有变量的数据信息;步骤2:逐一分析所述数据信息,形成所述数据信息之间的关联关系。2.根据权利要求1所述的方法,其特征在于,在步骤1中,将所述全局变量和局部变量中的所有变量定义成多个数据节点,确定所述数据节点是否为污染源节点,然后获得所述多个数据节点中的每一个的属性,将所述多个数据节点组成最终数据信息表。
3.根据权利要求2所述的方法,其特征在于,所述数据节点的属性包括ID、所在函数名称、数据节点的变量名称、数据节点所在的行数、数据节点的引用节点、数据节点是否为全局变量以及数据节点是否为污染源节点。
4.根据权利要求2所述的方法,其特征在于,如果数据节点是局部变量,则所述数据节点的属性还包括所在方法名称;如果数据节点是全部变量,则所述数据节点的属性还包括所在类名称;如果数据节点是污染源节点,则将该数据节点标注为污染源节点,并且将该数据节点存储在污染源表中,该污染源节点也作为数据链表的第一个节点。
5.根据权利要求4所述的方法,其特征在于,在步骤2中,通过当前的数据节点所使用的数据节点,查找不同数据节点之间的上下文关系,其中将使用污染源节点的节点作为污染源节点的子节点。
6.根据权利要求5所述的方法,其特征在于,根据数据节点的名称,对最终数据信息表进行排序,遍历所述最终数据信息表中的每一个数据节点,找到所述数据节点的引用节点,将所述数据节点和其引用节点存储在数据链路中,同时记录所述数据节点所属于的数据链路Key,最终生成存储所有数据链路的Map对象,从而获得数据信息的数据传递过程。
7.根据权利要求6所述的方法,其特征在于,当前的数据节点能够引用多个数据节点,如果当前的数据节点引用多个数据节点,则当前的数据节点属于两个数据链路。
8.一种用于分析数据污染传播的设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的用于分析数据污染传播的方法的步骤。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如权利要求1至7中任一项所述的用于分析数据污染传播的方法的步骤。
2
CN 111291373 A
说 明 书
1/5页
用于分析数据污染传播的方法、设备和计算机可读存储介质
技术领域
[0001]本发明涉及源代码安全检测的技术领域,具体地涉及一种用于分析数据污染传播的方法、设备和计算机可读存储介质。背景技术
[0002]目前,数据流分析是软件源代码安全检测工具最重要的一种分析方法。数据流分析主要是分析数据在程序传播过程中使用不当或数据受到污染而引起的安全问题。数据污染传播理论由来已久,但是由于数据传播的复杂性和多样性导致数据流的表述和存储非常困难。首先现实中有多种多样的编程语言,有高级语言、脚本型语言、面向对象的语言和面向过程的语言等,每种语言对基础数据类型的定义又不一样。其次数据在传递过程中会经过不同的处理,最基本的对数据的append处理,在JAVA语言中表现为“+”或“buffer.append()”。第二种是对数据进行不同函数的处理,这个函数可以是引用第三方的,也可以是自定义的函数。但是在分析过程中要确定这个函数是否清理了数据,如果清理了,则污染传播到此结束。如果没有清理,则确定传播是不是继续往下。发明内容
[0003]本发明所要解决的技术问题是提供一种用于分析数据污染传播的方法、设备和计算机可读存储介质,使得能够完整地表达数据传播的流程。[0004]具体地,如何将数据传播的流程完整地表达出来是进行数据流分析的重点,这种表达方式能满足对任何一个节点进行查找,能够很快地定位到这个节点,并且能够很快地溯源到数据的源头。这个节点的所有信息必须能满足分析的要求,这个节点所在的链路信息也必须能随时查找。需要一种数据存储方法和高效的算法来满足这些要求。[0005]通过本发明可以实现的技术目的不限于上文已经特别描述的内容,并且本领域技术人员将从下面的详细描述中更加清楚地理解本文中未描述的其他技术目的。[0006]本发明解决上述技术问题的技术方案如下:[0007]根据本公开的一方面,本发明提供一种用于分析数据污染传播的方法,其特征在于,所述方法包括:步骤1:收集所有类内的全局变量和局部变量,以便得到所有变量的数据信息;步骤2:逐一分析所述数据信息,形成所述数据信息之间的关联关系。[0008]可选地,在如上所述的方法中,在步骤1中,将所述全局变量和局部变量中的所有变量定义成多个数据节点,确定所述数据节点是否为污染源节点,然后获得所述多个数据节点中的每一个的属性,将所述多个数据节点组成最终数据信息表。[0009]可选地,在如上所述的方法中,所述数据节点的属性包括ID、所在函数名称、数据节点的变量名称、数据节点所在的行数、数据节点的引用节点、数据节点是否为全局变量以及数据节点是否为污染源节点。[0010]可选地,在如上所述的方法中,如果数据节点是局部变量,则所述数据节点的属性还包括所在方法名称;如果数据节点是全部变量,则所述数据节点的属性还包括所在类名
3
CN 111291373 A
说 明 书
2/5页
称;如果数据节点是污染源节点,则将该数据节点标注为污染源节点,并且将该数据节点存储在污染源表中,该污染源节点也作为数据链表的第一个节点。[0011]可选地,在如上所述的方法中,在步骤2中,通过当前的数据节点所使用的数据节点,查找不同数据节点之间的上下文关系,其中将使用污染源节点的节点作为污染源节点的子节点。
[0012]可选地,在如上所述的方法中,根据数据节点的名称,对最终数据信息表进行排序,遍历所述最终数据信息表中的每一个数据节点,找到所述数据节点的引用节点,将所述数据节点和其引用节点存储在数据链路中,同时记录所述数据节点所属于的数据链路Key,最终生成存储所有数据链路的Map对象,从而获得数据信息的数据传递过程。[0013]可选地,在如上所述的方法中,当前的数据节点能够引用多个数据节点,如果当前的数据节点引用多个数据节点,则当前的数据节点属于两个数据链路。[0014]根据本公开的一方面,本发明提供一种用于分析数据污染传播的设备,其特征在于,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如上任一项所述的用于分析数据污染传播的方法的步骤。
[0015]根据本公开的一方面,本发明提供一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如上任一项所述的用于分析数据污染传播的方法的步骤。
[0016]上述技术方案仅为本发明实施例的一些部分,本领域技术人员从以下本发明的详细描述中可以导出和理解包含了本发明的技术特征的各种实施例。
[0017]本发明的技术方案采用数据节点的方式记录数据信息简单易于扩展,易于使用。数据信息表中的数据按名称排序,可以实现快速查找,使用起来更方便。数据信息表中存放所有的节点信息,后续所有数据方面的操作可以直接查找该表,不用再查找语法树,大大地提高了使用的效率。数据交叉的节点单独记录为多条数据链路,不容易产生混乱。以数组的方式记录数据链路,简单而易于使用。数据信息表可以作为数据字典表,也可以作为数据索引表来使用。数据污染点和数据传递过程记录详细,使用简单。[0018]本领域技术人员将会理解,通过本发明可以实现的效果不限于上文已经具体描述的内容,并且从以下详细说明中将更清楚地理解本发明的其他优点。附图说明
[0019]被包括以提供对本发明的进一步理解的附图示出本发明的实施例,并且与说明书一起用于解释本发明的原理。
[0020]图1为本发明实施例提供的一种用于分析数据污染传播的方法的流程图。[0021]图2-3为本发明实施例提供的一种用于分析数据污染传播的方法的示意图。[0022]图4为本发明实施例提供的一种用于分析数据污染传播的设备的示意图。具体实施方式
[0023]现在将详细参考本发明的示例性实施例,其示例在附图中示出。下面将参考附图给出的详细描述旨在解释本发明的示例性实施例,而不是示出可以根据本发明实现的唯一
4
CN 111291373 A
说 明 书
3/5页
实施例。以下详细描述包括具体细节以便提供对本发明的透彻理解。然而,对于本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下实践本发明。[0024]在一些情况下,已知的结构和设备被省略或以框图形式示出,集中于结构和设备的重要特征,以免模糊本发明的概念。在整个说明书中将使用相同的附图标记来表示相同或相似的部分。
[0025]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。[0026]在本发明的描述中,需要理解的是,术语“上”、“下”、“中心”、“内”、“外”、“顶”、“底”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。[0027]在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。源代码是指计算机编程语言的源码。不同的源码由该语言的关键字和基本语法组成。缺陷是指源代码中出现的设计不合理,或使用不当等造成程序的缺陷。漏洞是指源代码中出现的由于代码设计不合理引起的安全威胁。数据流是指数据在软件程序中的流转和传递。JAVA语言是指由Sun公司开发的一种面向对象的软件程序语言。污染传播是指软件中不安全的数据被传递给其它函数或其它对象。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。[0028]实施例1
[0029]图1示出本发明实施例提供的一种用于分析数据污染传播的方法的流程图。本发明实施例提供一种用于分析数据污染传播的方法,所述方法包括:步骤1:收集所有类内的全局变量和局部变量,以便得到所有变量的数据信息;步骤2:逐一分析所述数据信息,形成所述数据信息之间的关联关系。可选地,在步骤1中,将所述全局变量和局部变量中的所有变量定义成多个数据节点,确定所述数据节点是否为污染源节点,然后获得所述多个数据节点中的每一个的属性,将所述多个数据节点组成最终数据信息表。可选地,所述数据节点的属性包括ID、所在函数名称、数据节点的变量名称、数据节点所在的行数、数据节点的引用节点、数据节点是否为全局变量以及数据节点是否为污染源节点。可选地,如果数据节点是局部变量,则所述数据节点的属性还包括所在方法名称;如果数据节点是全部变量,则所述数据节点的属性还包括所在类名称;如果数据节点是污染源节点,则将该数据节点标注为污染源节点,并且将该数据节点存储在污染源表中,该污染源节点也作为数据链表的第一个节点。可选地,在步骤2中,通过当前的数据节点所使用的数据节点,查找不同数据节点之间的上下文关系,其中将使用污染源节点的节点作为污染源节点的子节点。可选地,根据数据节点的名称,对最终数据信息表进行排序,遍历所述最终数据信息表中的每一个数据节点,找到所述数据节点的引用节点,将所述数据节点和其引用节点存储在数据链路中,同时记录所述数据节点所属于的数据链路Key,最终生成存储所有数据链路的Map对象,从而获得数据信息的数据传递过程。可选地,当前的数据节点能够引用多个数据节点,如果当前的数据节点引用多个数据节点,则当前的数据节点属于两个数据链路。
5
CN 111291373 A[0030]
说 明 书
4/5页
根据本发明的具体实施方式,本发明定义三个数据结果来存储所有的节点以及来
构建数据传播的顺序。第一个数据结构为污染源表,所有的污染节点放在该表里。第二个数据结构为存放所有的节点的大表。第三个数据结构为数据链表及存放链表的Map。[0031]首先收集到所有类里面的全局变量和局部变量,所有的变量都定义为一个Node节点(即数据节点)。标注Node节点的属性,例如Node节点所在的类名称,如果属于局部变量则标注所在方法名称。如果当前节点属于污染源节点(即Source点),则标注这个属性(即数据节点是污染源节点)。并且将这个节点放在污染源表中。这些污染源节点也为数据链表的第一个节点。另一个重要属性是当前节点可能引用多个节点。在顺序收集完所有的变量后,得到了所有的数据信息。
[0032]第一步得到基础数据,第二步逐一分析这些数据,形成数据之间的关联关系。主要通过当前节点引用的节点建立不同节点之间的上下文关系,即这是一种至下而上的关系查找。给每一个数据链记录一个名字,一个Source点作为这个数据链的开始节点,使用到它的节点即为它的子节点。当找到一个链接关系就放到链表结果里。并对当前的节点进行链表名称的标注。由于节点是无序的,并且有多个引用的情况。所以每一个引用的情况就在链表里面记录一次。其中有节点重复也是可以的。这样遍历数据表里面所有的节点,反复对链路表进行操作(插入新的链路,查找老的链路,修改老的链路,合并链路)。最后得到最终的数据结构。
[0033]根据更具体的实施方式,本发明的方法的实际操作可以参考图2和图3所示。本发明分两步来实现。首先收集所有的数据点,对每一个数据节点进行属性标注,生成数据节点的名字,关键点为类名称、函数名称、节点的变量名称、节点所在的行数、当前节点的引用节点。以及当前节点是否为Source点。收集完所有的节点即得到如图2所示的完整的数据记录集合。第二步准备好数据结构。将一个数据链路放在一个数组集合中,数据链路的顺序为数组中的顺序。为每一个数据链路生成一个顺序ID。遍历数据集合中所有的节点,生成多条数据链路。例如,具体实施步骤如下:[0034]获得一个类的语法树,得到这个类的全局变量,例如在JAVA语言中public String name=“wang dong”;public Int age=20;这两个变量声明即为两个数据节点。[0035]然后遍历当前类的所有函数体,得到函数体内所有的局部变量,包括当前函数的参数值。例如public List getUserInfo(Int departmentId),即departmentId为一个数据节点。[0036]例如,一个数据节点的属性为:ID(唯一主键),ClassName(所在类名称),FunName(所在函数名称),CallNodeID(当前节点引用的数据节点),IsPublic(是否是全局变量),IsSourceNode(是否是数据污染点),SourceFunc(污染函数名称)。[0037]如果一个数据节点为Source点,则将这个节点放到SourceList队列中。[0038]依次遍历每一个类,得到所有的变量。生成的数据节点组成了最终的数据信息表。[0039]对数据信息表进行排序,按照数据节点名称进行排序。[0040]生成一个Map来存放所有的数据链路。一个Source点为一个数据链路的开始点,它的传递点为下一个节点。遍历数据信息表中的每一个节点,找到它的引用节点。将它们放在一个数据链路中。数据链路存储在Map中的一个Key中。[0041]如果一个链路没有source点,则也存放在Map中。
6
CN 111291373 A[0042]
说 明 书
5/5页
如果一个节点具有多个引用节点,则这个节点属于两个数据链路。
[0043]将一个节点记录到一个数据链路中时,同时记录这个节点所属的链路Key。[0044]最终生成存储所有数据链路的Map对象,在这个Map对象中我们可以拿到任何一条数据传递过程。
[0045]可以用快速查找算法查询数据信息表中的任何一个节点。得到这个节点所在的链路Key,从而得到这个节点所在数据链路。[0046]实施例2
[0047]根据本发明的实施例,本发明提供一种用于分析数据污染传播的设备,如图4所示,包括:存储器10、处理器12及存储在所述存储器10上并可在所述处理器12上运行的计算机程序,所述计算机程序被所述处理器12执行时实现如上实施例1中所述的用于分析数据污染传播的方法的步骤。[0048]实施例3
[0049]根据本发明的实施例,本发明提供一种计算机可读存储介质,所述计算机可读存储介质上存储有信息传递的实现程序,所述程序被处理器执行时实现如上实施例1中所述的用于分析数据污染传播的方法的步骤。
[0050]本发明的技术方案采用数据节点的方式记录数据信息简单易于扩展,易于使用。数据信息表中的数据按名称排序,可以实现快速查找,使用起来更方便。数据信息表中存放所有的节点信息,后续所有数据方面的操作可以直接查找该表,不用再查找语法树,大大地提高了使用的效率。数据交叉的节点单独记录为多条数据链路,不容易产生混乱。以数组的方式记录数据链路,简单而易于使用。数据信息表可以作为数据字典表,也可以作为数据索引表来使用。数据污染点和数据传递过程记录详细,使用简单。[0051]通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本申请可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。[0052]如上所述,已经给出了本发明的优选实施例的详细描述,以使本领域技术人员能够实施和实践本发明。虽然已经参照示例性实施例描述了本发明,但是本领域技术人员将会理解,在不脱离所附权利要求书中描述的本发明的精神或范围的情况下,可以在本发明中进行各种修改和改变。因此,本发明不应限于在此描述的特定实施例,而应被赋予与本文公开的原理和新颖特征一致的最宽范围。
7
CN 111291373 A
说 明 书 附 图
1/2页
图1
图2
8
CN 111291373 A
说 明 书 附 图
2/2页
图3
图4
9
因篇幅问题不能全部显示,请点此查看更多更全内容