CN115618363B - 漏洞路径的挖掘方法及相关设备 - Google Patents
漏洞路径的挖掘方法及相关设备 Download PDFInfo
- Publication number
- CN115618363B CN115618363B CN202211465657.6A CN202211465657A CN115618363B CN 115618363 B CN115618363 B CN 115618363B CN 202211465657 A CN202211465657 A CN 202211465657A CN 115618363 B CN115618363 B CN 115618363B
- Authority
- CN
- China
- Prior art keywords
- node
- calling
- user input
- backtracking
- security sensitive
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
- G06F9/449—Object-oriented method invocation or resolution
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供一种漏洞路径的挖掘方法及相关设备。所述方法包括:遍历抽象语法树,得到摘要信息和调用节点;利用摘要信息,构建代码属性图;基于代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集;基于调用节点,与预设的攻击字典进行匹配,并根据代码属性图,进行数据流回溯,得到安全敏感调用节点集;基于用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据代码属性图,进行数据流回溯,得到漏洞路径。本申请实施例通过回溯数据流检测位于函数或方法封装内的用户输入节点,提取并识别多种类型的从用户输入到安全敏感函数或方法调用的漏洞路径,有效保障了网络应用可用性和安全性。
Description
技术领域
本申请涉及信息安全技术领域,尤其涉及一种漏洞路径的挖掘方法及相关设备。
背景技术
以往静态检测工具采用的方法不能适用现在复杂应用漏洞检测的问题也日益突出。因此,检测复杂应用中存在的漏洞是保障网络应用可用性和安全性的必需。
多层的Web应用以控制器(Controller)为媒介,将用户输入(View)转发到模型层(Model)进行处理,并将处理后结果通过控制器返回到视图层展示给用户。MVC架构的应用将用户输入与处理隔离,并且封装,路由和统一全局配置的特性,使得静态分析无法通过回溯用户输入和简单的敏感函数定位等来发现漏洞路径。
发明内容
有鉴于此,本申请的目的在于提出一种漏洞路径的挖掘方法及相关设备。
基于上述目的,本申请提供了一种漏洞路径的挖掘方法,包括:
遍历抽象语法树,得到摘要信息和调用节点;
利用所述摘要信息,构建代码属性图;
基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集;
基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集;
基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径。
在一种可能的实现方式中,所述摘要信息包括:类和方法定义的摘要信息、函数定义的摘要信息;
其中,所述利用所述摘要信息,构建代码属性图,包括:
将所述类和方法定义的摘要信息与类实例创建及方法调用语句进行关联映射,得到类和方法映射;
将所述函数定义的摘要信息与函数调用语句进行关联映射,得到函数映射;
结合所述类和方法映射和所述函数映射,构建所述代码属性图。
在一种可能的实现方式中,所述基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集,包括:
基于所述代码属性图,与所述预定义超全局变量进行匹配,标记得到第一用户输入节点;
基于所述代码属性图,根据所述第一用户输入节点进行数据流回溯,根据回溯节点类型标记用户输入节点,得到第二用户输入节点;
根据所述第一用户输入节点和所述第二用户输入节点,得到所述用户输入节点集。
在一种可能的实现方式中,述回溯节点类型包括:定义节点和调用节点;
其中,所述根据回溯节点类型标记用户输入节点,得到第二用户输入节点,包括:
响应于所述回溯节点类型为所述定义节点,跳转至所述定义节点对应的调用节点,标记所述对应的调用节点为第二用户输入节点;
响应于所述回溯节点类型为所述调用节点,标记所述调用节点为第二用户输入节点。
在一种可能的实现方式中,所述基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集,包括:
基于所述调用节点,与预设的攻击字典进行匹配,得到第一安全敏感调用节点;
基于所述第一安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到第二安全敏感调用节点;
根据所述第一安全敏感调用节点和所述第二安全敏感调用节点,得到所述安全敏感调用节点集。
在一种可能的实现方式中,所述调用节点包括:方法调用节点和函数调用节点;
其中,所述基于所述调用节点,与预设的攻击字典进行匹配,得到第一安全敏感调用节点,包括:
从所述函数调用节点中提取函数名称,与所述预设的攻击字典中对应的函数名称字段进行匹配,判断是否匹配成功;响应于匹配成功,将所述函数调用节点作为所述第一安全敏感调用节点;
从所述方法调用节点中提取得到类信息和方法名称;
利用所述类信息和所述方法名称与所述预设的攻击字典中对应的类信息字段和方法名称字段进行匹配,判断是否匹配成功;
响应于匹配成功,将所述方法调用节点作为所述第一安全敏感调用节点。
在一种可能的实现方式中,所述代码属性图包括:数据流图;
其中,所述基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径,包括:
基于所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述数据流图进行数据流回溯,判断数据流回溯过程中经过的节点是否在所述用户输入节点集中;
响应于数据流回溯过程中经过的节点在所述用户输入节点集中,停止所述数据流回溯,将所述数据流回溯的路径作为漏洞路径。
在一种可能的实现方式中,所述将所述数据流回溯的路径作为漏洞路径,包括:
将所述安全敏感调用节点集中的每个安全敏感调用节点作为起点,将所述用户输入节点集中的节点作为终点,将所述数据流回溯过程中经过的节点作为中间节点;
根据所述起点、所述终点和所述中间节点构建得到所述漏洞路径。
基于同一发明构思,本申请实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任意一项所述的漏洞路径的挖掘方法。
基于同一发明构思,本申请实施例还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述任一所述的漏洞路径的挖掘方法。
从上面所述可以看出,本申请提供的漏洞路径的挖掘方法及相关设备,通过遍历抽象语法树,得到摘要信息和调用节点;利用所述摘要信息,构建代码属性图;基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集;基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集;基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径。本申请不仅能够同时识别安全敏感函数和安全敏感方法调用,而且通过回溯数据流检测位于函数或方法封装内的用户输入节点,替代只匹配全局变量检测用户输入节点的方法,提取并识别多种类型的从用户输入到安全敏感函数或方法调用的漏洞路径,可以良好的适用于检测复杂应用中存在的漏洞,有效保障了网络应用可用性和安全性。
附图说明
为了更清楚地说明本申请或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例的漏洞路径的挖掘方法流程图;
图2为本申请实施例的电子设备结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本申请进一步详细说明。
需要说明的是,除非另外定义,本申请实施例使用的技术术语或者科学术语应当为本申请所属领域内具有一般技能的人士所理解的通常意义。本申请实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
如背景技术部分所述,相关技术中,多层的Web应用以控制器(Controller)为媒介,将用户输入(View)转发到模型层(Model)进行处理,并将处理后结果通过控制器返回到视图层展示给用户。MVC架构的应用将用户输入与处理隔离,并且封装,路由和统一全局配置的特性,使得静态分析无法通过回溯用户输入和简单的敏感函数定位等来发现漏洞路径,而静态检测工具采用的方法不能适用现在复杂应用漏洞检测的问题也日益突出。因此,检测复杂应用中存在的漏洞是保障网络应用可用性和安全性的必需。
综合上述考虑,本申请实施例提出一种漏洞路径的挖掘方法,通过遍历抽象语法树,得到摘要信息和调用节点;利用所述摘要信息,构建代码属性图;基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集;基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集;基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径。不仅能够同时识别安全敏感函数和安全敏感方法调用,而且通过回溯数据流检测位于函数或方法封装内的用户输入节点,替代只匹配全局变量检测用户输入节点的方法,提取并识别多种类型的从用户输入到安全敏感函数或方法调用的漏洞路径,可以良好的适用于检测复杂应用中存在的漏洞,有效保障了网络应用可用性和安全性。
以下,通过具体的实施例来详细说明本申请实施例的技术方案。
本申请实施例以PHP应用为例说明本申请的技术方案,下述实施例的步骤均在PHP应用环境中进行。
参考图1,本申请实施例的漏洞路径的挖掘方法,包括以下步骤:
步骤S101,遍历抽象语法树,得到摘要信息和调用节点;
步骤S102,利用所述摘要信息,构建代码属性图;
步骤S103,基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集;
步骤S104,基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集;
步骤S105,基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径。
针对步骤S101,抽象语法树是由代码解析得到的,摘要信息包括类和方法定义的摘要信息、函数定义的摘要信息以及全局文件包含信息。调用节点包括方法调用节点和函数调用节点。
首先,需要对由代码解析得到的抽象语法树进行遍历,得到摘要信息和调用节点,上述的类和方法的摘要信息包括:类名、类的命名空间、类的属性名称和类型以及继承的父类信息,方法名称和参数列表(参数名称、类型、参数顺序)。
其中,所述利用所述摘要信息,构建代码属性图,包括:
将所述类和方法定义的摘要信息与类实例创建及方法调用语句进行关联映射,得到类和方法映射;
将所述函数定义的摘要信息与函数调用语句进行关联映射,得到函数映射;
结合所述类和方法映射和所述函数映射,构建所述代码属性图。
对于提取摘要信息的过程,具体为:对于语法树中出现的类定义节点,标识为AST_CLASS(注:在接下来的表述中,标识将统一表示抽象语法树中节点的类型,实际代码中的变量名称称为变量标识符);从该节点的属性信息中提取命名空间信息,为属性namespace对应的值;从该节点的子节点中解析出类名信息,为AST_CLASS节点的第1个子节点,标识为string;从该节点的第三个子节点提取父类信息,标识为AST_NAME;对于类属性信息,从标识为AST_PROP_DECL的子节点中提取,包括类属性名称和类型;对于类的方法定义节点,可通过标识AST_METHOD识别,并从其子节点中提取参数信息。所述类属性类型信息主要从该节点对应的注释、声明或者其他赋值语句中提取而来。对于类实例创建摘要信息,首先识别赋值语句节点,标识为AST_ASSIGN,从该赋值节点的右值中识别AST_NEW子节点并提取实例创建对应的类类型,从赋值节点的左值中识别实例变量的标识符信息,存储该标识符与实例创建对应的类类型信息的映射关系。对于方法调用信息,识别标识为AST_METHOD_CALL的节点,从其子节点中提取标识符和被调用方法名称和参数信息。
进一步的,利用前述获取的摘要信息,构建代码属性图。
具体的,将前述获取得到的摘要信息,与类实例创建以及方法调用语句进行关联映射,并使用调用边连接方法定义节点和方法调用节点,借此来补充构建代码属性图。在建立连接的过程中,依据方法调用信息中的标识符,在类实例创建信息中提取对应的类类型信息,基于类类型信息和方法调用中的被调用方法名称和参数信息,从类摘要信息中匹配对应类的方法定义节点,构造从方法调用节点到方法定义节点的调用边,标识为CALLS。
进一步的,根据前述手机的函数定义的摘要信息记忆全局文件包含信息,结合函数调用节点,建立函数调用节点和函数定义节点之间的映射关系,以使得代码属性图中的函数调用图更加准确。
进一步的,针对步骤S103,基于上述过程中构建好的代码属性图,对用户输入节点进行标记,得到用户输入节点集,具体的,与所述预定义超全局变量进行匹配,标记得到第一用户输入节点;基于所述代码属性图,根据所述第一用户输入节点进行数据流回溯,根据回溯节点类型标记用户输入节点,得到第二用户输入节点;根据所述第一用户输入节点和所述第二用户输入节点,得到所述用户输入节点集。
首先需要找到预定义超全局变量。在本实施例中,所述的预定义超全局变量包括但不限于_GET、_POST、_REQUEST,这些变量为PHP应用中系统环境定义的变量,用以接收用户从外界输入到系统的信息。
在遍历抽象语法树的过程中,需要将语句节点与预定义超全局变量进行匹配,若匹配成功,则将该节点标记为第一用户输入节点,并记录。之后从其中一个与预定义超全局变量匹配后得到的第一用户输入节点开始回溯数据流图(数据流图是包含在代码属性图中的,在前述构建完代码属性图后,数据流图自然也构建完成),之后在回溯过程中,如果遇到函数定义节点,将跟随该节点的调用边调转到该函数定义节点对应的函数调用节点,若遇到的是方法定义节点,则将跟随该节点的调用边调转到该方法定义节点对应的方法调用节点,将前述回溯过程中经过的函数调用节点和方法调用节点标记为第二用户输入节点,若遇到的直接为调用节点,则直接将该调用节点标记为第二用户输入节点,之后将所有的第一用户输入节点和第二用户输入节点汇总形成用户输入节点集。
进一步的,针对步骤S104,基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集。
具体的,前述步骤中,需要遍历抽象语法树,搜索其中的函数调用节点,标识为AST_CALL,搜索其中的方法调用节点,标识为AST_METHOD_CALL。
攻击字典是由一系列的字典对象组成的列表,每个字典对象包含四个字段:isMethod、vulType、className和method。参考表1,为本申请实施例的攻击字典结构字段类型与解释。
字段 | 类型 | 解释 |
isMethod | 布尔(true或者false) | 该字典展示的是一个安全敏感方法(true)或者安全敏感函数(false) |
vulType | 字符串(sql、xss、rce等) | 表示安全敏感方法或函数对应的漏洞类型(SQL注入、XSS、远程代码执行等) |
className | 字符串(PDO、mysqli、mysql等) | 表示安全敏感方法对应的类名称 |
method | 字符串(mysql_query、query等) | 表示安全敏感函数或方法名称 |
之后,对于函数调用节点而言,从所述函数调用节点中提取函数名称,与所述预设的攻击字典中对应的函数名称字段进行匹配,判断是否匹配成功;响应于匹配成功,将所述函数调用节点加入所述安全敏感调用节点集中,具体的,需要遍历其子节点,提取函数名称f1;之后遍历攻击字典,匹配method字段值为f1,isMethod字段值为false的字典,如果存在该字典,则判断该函数调用节点为第一安全敏感函数节点。
对于方法调用节点而言,从所述方法调用节点中提取得到类信息和方法名称;利用所述类信息和所述方法名称与所述预设的攻击字典中对应的类信息字段和方法名称字段进行匹配,判断是否匹配成功;响应于匹配成功,将所述方法调用节点加入所述安全敏感调用节点集中。具体的,遍历其子节点,提取类实例变量的标识符v1和被调用方法名称m1;遍历类实例创建摘要信息列表,匹配实例变量标识符v1,提取实例对应的类名称c1;遍历攻击字典,匹配isMethod字段值为true,className字段值为c1,并且method字段值为m1的字典,如果存在该字典,则判定该方法调用节点为第一安全敏感方法调用节点。
具体的,在本申请实施例中,若代码字段为:
{
"isMethod":false,
"vulType":"sql",
"className":"",
"method":"mysql_query"
}
则具体解释为:该实例代表一个安全敏感函数,函数名称为mysql_query, 是经常使用的数据库查询函数,用户输入如果未经安全处理以参数形式传入mysql_query函数,将导致SQL注入漏洞(”vulType”:”sql”表明漏洞类型为SQL注入)。
在另一可行的实施例中,若字段为:
{
"isMethod":true,
"vulType":"sql",
"className":"mysqli",
"method":"query"
}
则具体解释为:该实例代表一个安全敏感方法,方法名称为query,”className”:”mysqli”表示query方法属于mysqli类中的一个类方法。”isMethod”:”true”指出该示例包含的是一个安全敏感方法。
进一步的,基于上述获取得到的第一安全敏感调用节点,根据在前述步骤中构建得到的代码属性图中的数据流图,进行数据流回溯,将在回溯过程中经过的每个调用节点均作为第二安全敏感调用节点。具体回溯过程和标记过程与上述的标记用户输入节点的回溯过程和标记过程基本一致,故在此不再赘述。
在上述步骤中将第一安全敏感调用节点和第二安全敏感调用节点汇总后得到安全敏感调用节点集。
进一步的,基于用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径。
具体的,基于所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述数据流图进行数据流回溯,判断数据流回溯过程中经过的节点是否在所述用户输入节点集中;
响应于数据流回溯过程中经过的节点在所述用户输入节点集中,停止所述数据流回溯,将所述数据流回溯的路径作为漏洞路径。
其中,所述将所述数据流回溯的路径作为漏洞路径,包括:
将所述安全敏感调用节点作为起点,将所述用户输入节点集中的节点作为终点,将所述数据流回溯过程中经过的节点作为中间节点;
根据所述起点、所述终点和所述中间节点构建得到所述漏洞路径。
具体的,在得到安全敏感调用节点集后,从安全敏感调用节点集的其中一个安全敏感调用节点开始,以该节点为起点回溯数据流图数据流边标记为REACHES,当回溯到函数或方法的参数节点,标识为AST_PARAM,递归遍历其父节点至函数或方法定义节点,标识为AST_FUNC_DECL或AST_METHOD;对于函数或方法定义节点,将根据调用图边,标识为CALLS,跳转到对应的函数或方法调用节点,并重复以上的数据流回溯过程,直至数据流图顶点,且该顶点非函数或方法参数节点。在回溯过程中,检查经过的每个节点是否存在用户输入节点标记,如果存在该标记,则停止回溯,并输出回溯过程中的所有节点,构成漏洞路径,抛弃其余不以用户输入标记节点为结束节点的路径。
此外,在回溯过程中,还需要通过检查当前节点是否在已遍历节点列表内,这是为了防止遇到循环语句导致回溯重复遍历语句节点,忽略已遍历的节点。
漏洞路径为从用户输入节点到安全敏感函数或方法调用节点的数据流路径,是由抽象语法树内节点组成的列表。输出的漏洞路径中的节点至少包含节点ID、类型标识、对应的代码文件路径、位于代码文件中的代码行数。输出的漏洞路径基础信息包含安全敏感函数或方法调用节点信息、漏洞类型信息以及漏洞路径列表。
通过上述实施例可以看出,本申请实施例所述的漏洞路径的挖掘方法,通过遍历抽象语法树,得到摘要信息和调用节点;利用所述摘要信息,构建代码属性图;基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集;基于所述调用节点,与预设的攻击字典进行匹配,得到安全敏感调用节点集;基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径。不仅能够同时识别安全敏感函数和安全敏感方法调用,而且通过回溯数据流检测位于函数或方法封装内的用户输入节点,替代只匹配全局变量检测用户输入节点的方法,提取并识别多种类型的从用户输入到安全敏感函数或方法调用的漏洞路径,可以良好的适用于检测复杂应用中存在的漏洞,有效保障了网络应用可用性和安全性。
需要说明的是,本申请实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本申请实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本申请的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上任意一实施例所述的漏洞路径的挖掘方法。
图2示出了本实施例所提供的一种更为具体的电子设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
上述实施例的电子设备用于实现前述任一实施例中相应的漏洞路径的挖掘方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
基于同一发明构思,与上述任意实施例方法相对应的,本申请还提供了一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行如上任一实施例所述的漏洞路径的挖掘方法。
本实施例的计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
上述实施例的存储介质存储的计算机指令用于使所述计算机执行如上任一实施例所述的漏洞路径的挖掘方法,并且具有相应的方法实施例的有益效果,在此不再赘述。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本申请的范围(包括权利要求)被限于这些例子;在本申请的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本申请实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。
另外,为简化说明和讨论,并且为了不会使本申请实施例难以理解,在所提供的附图中可以示出或可以不示出与集成电路(IC)芯片和其它部件的公知的电源/接地连接。此外,可以以框图的形式示出装置,以便避免使本申请实施例难以理解,并且这也考虑了以下事实,即关于这些框图装置的实施方式的细节是高度取决于将要实施本申请实施例的平台的(即,这些细节应当完全处于本领域技术人员的理解范围内)。在阐述了具体细节(例如,电路)以描述本申请的示例性实施例的情况下,对本领域技术人员来说显而易见的是,可以在没有这些具体细节的情况下或者这些具体细节有变化的情况下实施本申请实施例。因此,这些描述应被认为是说明性的而不是限制性的。
尽管已经结合了本申请的具体实施例对本申请进行了描述,但是根据前面的描述,这些实施例的很多替换、修改和变型对本领域普通技术人员来说将是显而易见的。例如,其它存储器架构(例如,动态RAM(DRAM))可以使用所讨论的实施例。
本申请实施例旨在涵盖落入所附权利要求的宽泛范围之内的所有这样的替换、修改和变型。因此,凡在本申请实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (7)
1.一种漏洞路径的挖掘方法,其特征在于,包括:
遍历抽象语法树,得到摘要信息和调用节点;所述摘要信息包括:类和方法定义的摘要信息、函数定义的摘要信息;
利用所述摘要信息,构建代码属性图;
基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集;
基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集;
基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径;
其中,所述基于所述代码属性图,根据预定义超全局变量进行数据流回溯,标记用户输入节点,得到用户输入节点集,包括:
基于所述代码属性图,与所述预定义超全局变量进行匹配,标记得到第一用户输入节点;
基于所述代码属性图,根据所述第一用户输入节点进行数据流回溯,根据回溯节点类型标记用户输入节点,得到第二用户输入节点;
根据所述第一用户输入节点和所述第二用户输入节点,得到所述用户输入节点集;
其中,所述基于所述调用节点,与预设的攻击字典进行匹配,并根据所述代码属性图,进行数据流回溯,得到安全敏感调用节点集,包括:
基于所述调用节点,与预设的攻击字典进行匹配,得到第一安全敏感调用节点;
基于所述第一安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到第二安全敏感调用节点;
根据所述第一安全敏感调用节点和所述第二安全敏感调用节点,得到所述安全敏感调用节点集;
所述代码属性图包括数据流图;
其中,所述基于所述用户输入节点集和所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述代码属性图,进行数据流回溯,得到漏洞路径,包括:
基于所述安全敏感调用节点集中的每个安全敏感调用节点,根据所述数据流图进行数据流回溯,判断数据流回溯过程中经过的节点是否在所述用户输入节点集中;
响应于数据流回溯过程中经过的节点在所述用户输入节点集中,停止所述数据流回溯,将所述数据流回溯的路径作为漏洞路径。
2.根据权利要求1所述的方法,其特征在于,所述利用所述摘要信息,构建代码属性图,包括:
将所述类和方法定义的摘要信息与类实例创建及方法调用语句进行关联映射,得到类和方法映射;
将所述函数定义的摘要信息与函数调用语句进行关联映射,得到函数映射;
结合所述类和方法映射和所述函数映射,构建所述代码属性图。
3.根据权利要求1所述的方法,其特征在于,所述回溯节点类型包括:定义节点和调用节点;
其中,所述根据回溯节点类型标记用户输入节点,得到第二用户输入节点,包括:
响应于所述回溯节点类型为所述定义节点,跳转至所述定义节点对应的调用节点,标记所述对应的调用节点为第二用户输入节点;
响应于所述回溯节点类型为所述调用节点,标记所述调用节点为第二用户输入节点。
4.根据权利要求1所述的方法,其特征在于,所述调用节点包括:方法调用节点和函数调用节点;
其中,所述基于所述调用节点,与预设的攻击字典进行匹配,得到第一安全敏感调用节点,包括:
从所述函数调用节点中提取函数名称,与所述预设的攻击字典中对应的函数名称字段进行匹配,判断是否匹配成功;响应于匹配成功,将所述函数调用节点作为所述第一安全敏感调用节点;
从所述方法调用节点中提取得到类信息和方法名称;
利用所述类信息和所述方法名称与所述预设的攻击字典中对应的类信息字段和方法名称字段进行匹配,判断是否匹配成功;
响应于匹配成功,将所述方法调用节点作为所述第一安全敏感调用节点。
5.根据权利要求1所述的方法,其特征在于,所述将所述数据流回溯的路径作为漏洞路径,包括:
将所述安全敏感调用节点集中的每个安全敏感调用节点作为起点,将所述用户输入节点集中的节点作为终点,将所述数据流回溯过程中经过的节点作为中间节点;
根据所述起点、所述终点和所述中间节点构建得到所述漏洞路径。
6.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至5任意一项所述的方法。
7.一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,其特征在于,所述计算机指令用于使计算机执行权利要求1至5任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211465657.6A CN115618363B (zh) | 2022-11-22 | 2022-11-22 | 漏洞路径的挖掘方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211465657.6A CN115618363B (zh) | 2022-11-22 | 2022-11-22 | 漏洞路径的挖掘方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115618363A CN115618363A (zh) | 2023-01-17 |
CN115618363B true CN115618363B (zh) | 2023-03-21 |
Family
ID=84879501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211465657.6A Active CN115618363B (zh) | 2022-11-22 | 2022-11-22 | 漏洞路径的挖掘方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115618363B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116974619B (zh) * | 2023-09-22 | 2024-01-12 | 国网电商科技有限公司 | 一种软件物料清单库的构建方法、装置、设备及可读介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455759B (zh) * | 2012-06-05 | 2017-03-15 | 深圳市腾讯计算机系统有限公司 | 一种页面漏洞检测装置及检测方法 |
CN104298921B (zh) * | 2013-07-15 | 2019-01-29 | 深圳市腾讯计算机系统有限公司 | 动画源文件安全漏洞检查方法及装置 |
US20210279338A1 (en) * | 2020-03-04 | 2021-09-09 | The George Washington University | Graph-based source code vulnerability detection system |
CN113971278A (zh) * | 2020-07-24 | 2022-01-25 | 中移(苏州)软件技术有限公司 | 一种内存漏洞检测方法及其装置、设备和存储介质 |
CN113360915B (zh) * | 2021-06-09 | 2023-09-26 | 扬州大学 | 基于源代码图表示学习的智能合约多漏洞检测方法及系统 |
CN114579969B (zh) * | 2022-05-05 | 2022-08-23 | 北京邮电大学 | 漏洞检测方法、装置、电子设备及存储介质 |
-
2022
- 2022-11-22 CN CN202211465657.6A patent/CN115618363B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN115618363A (zh) | 2023-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112733158B (zh) | Android系统漏洞检测方法、电子设备及存储介质 | |
CN107506181A (zh) | 业务处理、数据处理方法、装置以及电子设备 | |
CN110007920B (zh) | 一种获取代码依赖关系的方法、装置及电子设备 | |
CN112257054B (zh) | 一种软件应用越权风险检测方法、电子设备及存储介质 | |
CN112214210A (zh) | 后勤业务规则引擎及其配置方法、装置、设备和存储介质 | |
CN111260336B (zh) | 基于规则引擎的业务核对方法、装置及设备 | |
CN106295346B (zh) | 一种应用漏洞检测方法、装置及计算设备 | |
CN115618363B (zh) | 漏洞路径的挖掘方法及相关设备 | |
CN111508562A (zh) | 流程描述性语言的可视化显示方法、装置、设备和介质 | |
CN112069052B (zh) | 一种异常对象检测方法、装置、设备及存储介质 | |
CN111880785A (zh) | 程序代码转换方法、装置,电子设备 | |
CN114640590A (zh) | 意图网络中策略集冲突检测方法及相关设备 | |
CN109284222B (zh) | 软件单元、数据处理系统中的项目测试方法、装置及设备 | |
CN116432185B (zh) | 一种异常检测方法、装置、可读存储介质及电子设备 | |
CN112527302B (zh) | 错误检测的方法及装置、终端和存储介质 | |
CN111459802A (zh) | 一种基于GUI的Android应用程序WebView页面的测试方法、装置及设备 | |
CN116880847A (zh) | 基于开源项目的溯源方法、装置电子设备及存储介质 | |
CN111273980A (zh) | 界面线程可视化方法、装置、计算机设备及存储介质 | |
CN113656044B (zh) | 安卓安装包压缩方法、装置、计算机设备及存储介质 | |
US11947966B2 (en) | Identifying computer instructions enclosed by macros and conflicting macros at build time | |
CN117149153A (zh) | 业务数据模型的生成方法、装置、计算机设备以及介质 | |
CN115809193A (zh) | 前端逆向异常数据健壮性检测方法、装置及存储介质 | |
CN113687880A (zh) | 一种调用组件的方法、装置、设备和介质 | |
CN114625372A (zh) | 组件自动编译方法、装置、计算机设备及存储介质 | |
CN117555533B (zh) | 代码生成方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |