CN109002712B - 一种基于值依赖图的污染数据分析方法、系统与电子设备 - Google Patents
一种基于值依赖图的污染数据分析方法、系统与电子设备 Download PDFInfo
- Publication number
- CN109002712B CN109002712B CN201810650652.8A CN201810650652A CN109002712B CN 109002712 B CN109002712 B CN 109002712B CN 201810650652 A CN201810650652 A CN 201810650652A CN 109002712 B CN109002712 B CN 109002712B
- Authority
- CN
- China
- Prior art keywords
- pollution
- propagation
- starting point
- dependency graph
- pollution propagation
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种基于值依赖图的污染数据分析方法、系统与电子设备,所述方法包括:S1,将目标计算机程序转换为守卫值依赖图,并通过自定义外部输入函数摘要和外部输入函数摘要用户定义接口,在所述守卫值依赖图上确定多个污染传播起始点;S2,基于污染传播规则、用户自定义漏洞特征的节点特征以及所述污染传播起始点,构成污染传播图;S3,基于所述污染传播图,通过对各所述污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条所述污染传播路径的污染类型。本发明能够清晰且便利的表达污染数据传播范围、传播关系和每一条路径的污染传播类型,保证污染数据传播范围的全面性。
Description
技术领域
本发明涉及信息处理技术领域,更具体地,涉及一种基于值依赖图的污染数据分析方法、系统与电子设备。
背景技术
利用软件的安全漏洞,通过输入数据对软件进行攻击,这样的输入数据构成污染数据。污染数据的存在会对用户数据安全或系统安全构成威胁,甚至造成不可弥补的损失。因此,对数据中的污染数据进行识别和分析具有较大的实用意义。
目前,对污染数据的分析主要体现在两个方向:一是静态分析,主要通过数据类型检查、基于库函数的污染指针分析、待检测数据特权代码分析或待检测数据程序走向分析等,识别并分析污染数据;二是动态分析,例如采用污染数据检测数据库注入缺陷模式的方式进行污染数据分析,或利用污染数据检测缓冲区溢出等方式,建立恶意的动态的测试用例,进行动态的污染数据检测。
但是,静态分析会造成污染数据的污染路径个数过多,俗称状态爆炸,静态分析的污染数据分析往往会十分的低效并且有比较低的精确度,与此同时,静态分析的误报率往往比较高。动态分析往往会在已经运行的程序中动态执行每一个测试用例,但是测试用例并不能保证路径全覆盖,因此,动态分析往往会有比较高的漏报率。而一般来说,有些分析采用了动静结合的技术,结合方式不统一,但是目的依然是权衡动态分析的漏报率以及静态分析的误报率。
发明内容
为了克服上述问题或者至少部分地解决上述问题,本发明提供一种基于值依赖图的污染数据分析方法、系统与电子设备,用以清晰且便利的表达污染数据传播范围、传播关系和数据污染类型,保证污染数据传播范围的全面性。
第一方面,本发明提供一种基于值依赖图的污染数据分析方法,包括:S1,将目标计算机程序转换为守卫值依赖图,并通过自定义外部输入函数摘要和外部输入函数摘要用户定义接口,在所述守卫值依赖图上确定多个污染传播起始点;S2,基于污染传播规则、用户自定义漏洞特征的节点特征以及所述污染传播起始点,构成污染传播图;S3,基于所述污染传播图,通过对各所述污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条所述污染传播路径的污染类型。
其中,步骤S1中所述通过自定义外部输入函数摘要和外部输入函数摘要用户定义接口,在所述守卫值依赖图上确定多个污染传播起始点的步骤进一步包括:自定义所述外部输入函数摘要,并通过开放所述外部输入函数摘要用户定义接口,接受用户自定义的用户输入函数摘要;遍历所述守卫值依赖图中的每一个节点,若判断所述节点为库函数的调用点,且契合所述外部输入函数摘要或所述用户输入函数摘要,则确定所述节点为所述污染传播起始点。
其中,所述S2的步骤进一步包括:在所述守卫值依赖图中,遍历各所述污染传播起始点,对守卫值依赖图的边和点进行点的前向广搜遍历,并通过对各所述污染传播起始点所属的所述污染传播规则的判断,确定各所述污染传播起始点的传播边和传播点,以及通过对各所述污染传播起始点基于所述漏洞特征的节点特征的判断,建立漏洞特征集合;基于各所述污染传播起始点以及对应的各所述传播边和所述传播点,以及所述漏洞特征集合,构成所述污染传播图。
进一步的,在所述S1和S2的步骤之间,所述方法还包括:通过开放外部规则定义接口,接受用户自定义的所述污染传播规则,并通过开放外部漏洞特征定义接口,接受用户自定义的所述漏洞特征的节点特征。
其中,所述污染传播规则进一步包括:R(N)规则,表示污染数据到达点污染传播起始点N继续向下传播的规则;R(E)规则,表示污染数据沿边E向下传播的规则;以及,R(E,guard)规则,表示污染数据沿边E向下传播时E的守卫值需要满足的规则。
其中,所述通过对各所述污染传播起始点所属的所述污染传播规则的判断,确定各所述污染传播起始点的传播边和传播点,以及通过对各所述污染传播起始点基于所述漏洞特征的节点特征的判断,建立漏洞特征集合的步骤进一步包括:若判断所述污染传播起始点N满足所述R(N)规则,则判断所述污染传播起始点N的出边E是否满足所述R(E)规则,若是,且出边E上的守卫guard满足R(E,guard),则污染数据沿出边E向下传递,且确定出边E为所述传播边,确定所述污染传播起始点N为所述传播点;若所述污染传播起始点N满足所述漏洞特征的节点特征,则基于满足所述漏洞特征的节点特征的污染传播起始点,建立所述漏洞特征集合。
其中,所述S3的步骤进一步包括:遍历所述污染传播图中的各所述污染传播起始点,对所述污染传播起始点进行向下的广搜计算,并建立所述污染传播起始点的切片S;利用所述切片S中的漏洞特征sin k′集合,进行广搜计算,获取所述污染传播路径;通过判断所述污染传播路径的任一条边是否满足以下条件,确定所述污染类型:对于所述守卫值依赖图中的边E:N1→N2,可以找到边E的守卫值对应的守卫值依赖图控制节点Ne,使污染传播可以从Ne传到N2。
其中,步骤S1中所述将目标计算机程序转换为守卫值依赖图的步骤进一步包括:对所述目标计算机程序进行跟踪编译并解析源码,获取抽象语法树,并基于所述抽象语法树,建立所述守卫值依赖图;其中,所述守卫值依赖图包括常量传播分析、静态单赋值分析、指向分析、区间分析、复写传播分析、精化分析、域分析和死代码消除处理。
第二方面,本发明提供一种基于值依赖图的污染数据分析系统,包括:污染传播起始点确定模块,用于将目标计算机程序转换为守卫值依赖图,并通过自定义外部输入函数摘要和外部输入函数摘要用户定义接口,在所述守卫值依赖图上确定多个污染传播起始点;污染传播图构成模块,用于基于污染传播规则、用户自定义漏洞特征的节点特征以及所述污染传播起始点,构成污染传播图;数据分析模块,用于基于所述污染传播图,通过对各所述污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条所述污染传播路径的污染类型。
第三方面,本发明提供一种电子设备,包括:至少一个存储器、至少一个处理器、通信接口和总线;所述存储器、所述处理器和所述通信接口通过所述总线完成相互间的通信,所述通信接口用于所述电子设备与外部用户接口之间的信息传输;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上所述的基于值依赖图的污染数据分析方法。
本发明提供的一种基于值依赖图的污染数据分析方法、系统与电子设备,通过将目标计算机程序转换为守卫值依赖图,并基于守卫值依赖图进行污染数据传播范围、传播关系和数据污染类型的确定,能够清晰且便利的表达污染数据传播范围、传播关系和每一条路径的污染传播类型,保证污染数据传播范围的全面性。
附图说明
图1为本发明实施例一种基于值依赖图的污染数据分析方法的流程图;
图2为根据本发明实施例一种基于值依赖图的污染数据分析方法中确定VDG中污染传播起始点的流程图;
图3为根据本发明实施例一种基于值依赖图的污染数据分析方法中构成污染传播图的流程图;
图4为根据本发明实施例一种基于值依赖图的污染数据分析方法中确定污染传播路径和污染类型的流程图;
图5为根据本发明实施例的一段计算机程序代码的示意图;
图6为根据本发明实施例图5中计算机程序代码的VDG示意图;
图7为本发明实施例一种基于值依赖图的污染数据分析系统的结构示意图;
图8为本发明实施例一种电子设备的结构框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为本发明实施例的一个方面,本实施例提供一种基于值依赖图的污染数据分析方法,参考图1,为本发明实施例一种基于值依赖图的污染数据分析方法的流程图,包括:
S1,将目标计算机程序转换为守卫值依赖图,并通过自定义外部输入函数摘要和外部输入函数摘要用户定义接口,在守卫值依赖图上确定多个污染传播起始点。
可以理解为,本步骤考虑到对污染数据分析的直观性与便利性,首先将目标计算机程序转换为守卫值依赖图VDG,再根据内部自定义的外部输入函数摘要,以及用户通过外部输入函数摘要用户定义接口定义的用户输入函数摘要,对守卫值依赖图中的每个节点进行验证,筛选其中多个符合筛选条件的节点作为污染传播起始点。在其中一个实施例中,所有的污染传播起始点构成一个污染源集合SetSrc。
其中的外部输入函数摘要用户定义接口是预先在系统内部定义的,可以使用户通过该接口自定义外部输入函数摘要。为了进行区分,将用户通过该接口定义的外部输入函数摘要命名为用户输入函数摘要。
其中,在一个实施例中,步骤S1中将目标计算机程序转换为守卫值依赖图的步骤进一步包括:对目标计算机程序进行跟踪编译并解析源码,获取抽象语法树,并基于抽象语法树,建立守卫值依赖图;其中,守卫值依赖图包括常量传播分析、静态单赋值分析、指向分析、区间分析、复写传播分析、精化分析、域分析和死代码消除处理。
可以理解为,对于目标计算机程序,首先利用跟踪编译技术对其进行预处理,例如可以采用CoBOT产品所提供的跟踪编译技术,去掉冗余源码文件以及冗余宏定义模块,再采用CoBOT产品所提供的源码解析技术,对预处理后的数据进行进一步处理,获取精确的抽象语法树AST。然后在此基础上,采用CoBOT产品所提供的守卫值依赖图分析技术,获取高精度的守卫值依赖图VDG。该VDG包含常量传播分析、静态单赋值分析、指向分析和死代码消除等多种分析方法及流程。
S2,基于污染传播规则、用户自定义漏洞特征的节点特征以及污染传播起始点,构成污染传播图。
可以理解为,在根据上述步骤将目标计算机程序转化为守卫值依赖图后,把对目标计算机程序的分析转化为对守卫值依赖图的分析,进而得到污染传播图。具体通过遍历守卫值依赖图中的每一个污染传播起始点,利用守卫值依赖图中节点的边和点,进行污染传播起始点的前向广搜遍历,并通过判断污染传播起始点所属的污染传播规则,以及相对漏洞特征节点特征的满足属性,确定对应污染传播起始点的传播边和传播点,以及漏洞特征集合。再根据所有污染传播起始点的传播边和传播点,以及漏洞特征集合,构成污染传播图。
其中,所有污染传播起始点的传播边构成传播边集合SetE,所有污染传播起始点的传播点构成播点集合SetN。
在其中的一个实施例中,在S1和S2的步骤之间,该方法还包括:通过开放外部规则定义接口,接受用户自定义的污染传播规则,并通过开放外部漏洞特征定义接口,接受用户自定义的漏洞特征的节点特征。
可以理解为,在系统内部开放外部规则定义接口,使需要使用传播污染图的用户可以自定义污染传播规则接口R。在其中的一个实施例中,污染传播规则进一步包括:R(N)规则,表示污染数据到达点污染传播起始点N继续向下传播的规则;R(E)规则,表示污染数据沿边E向下传播的规则;以及,R(E,guard)规则,表示污染数据沿边E向下传播时E的守卫值需要满足的规则。
即,上述污染传播规则接口R内部具有三种规则R(N)、R(E)和R(E,guard),分别对应:污染到达节点N后继续向下传播的规则、污染沿边E向下传播的规则以及污染沿边E向下传播时E的守卫值需要满足的规则。这三个规则默认值为默认传播。
同时,在系统内部开放外部漏洞特征定义接口,使需要使用传播污染图的用户可以自定义污染传播的漏洞特征节点特征F。特征F不可缺省,用户可以通过自己的需求来定义特征。
S3,基于污染传播图,通过对各污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条污染传播路径的污染类型。
可以理解为,本步骤基于污染传播图进行污染数据的传播分析,具体的,遍历污染传播图中的每一个污染传播起始点,向下进行广搜计算,最终获取污染数据的污染传播路径和每一条污染传播路径污染类型。
本发明实施例提供的一种基于值依赖图的污染数据分析方法,通过将目标计算机程序转换为守卫值依赖图,并基于守卫值依赖图进行污染数据传播范围、传播关系和数据污染类型的确定,能够清晰且便利的表达污染数据传播范围、传播关系和每一条路径的污染传播类型,保证污染数据传播范围的全面性。
其中可选的,步骤S1中通过自定义外部输入函数摘要和外部输入函数摘要用户定义接口,在守卫值依赖图上确定多个污染传播起始点的进一步处理步骤参考图2,为根据本发明实施例一种基于值依赖图的污染数据分析方法中确定VDG中污染传播起始点的流程图,包括:
S11,自定义外部输入函数摘要,并通过开放外部输入函数摘要用户定义接口,接受用户自定义的用户输入函数摘要。
可以理解为,本步骤一方面在系统内部自定义一部分外部输入函数摘要。摘要包含污染数据类型和污染数据所在参数位置(返回值记为0)等信息。例如,默认摘要包含scanf函数簇和get函数簇等。
另一方面,本步骤在系统内部开放外部输入函数摘要用户定义接口,用户可以通过自行配置文件来决定哪些库函数为外部输入函数,并且定义外部输入函数的第几个参数为污染数据。相关属性包括外部输入函数名称、外部输入函数是否为库函数和污染数据的参数位置等。
S12,遍历守卫值依赖图中的每一个节点,若判断节点为库函数的调用点,且契合外部输入函数摘要或用户输入函数摘要,则确定节点为污染传播起始点。
可以理解为,本步骤遍历守卫值依赖图VDG中的每一个节点Node,如果Node是一个函数调用点,且该函数为库函数,且节点Node契合上述步骤获取的外部输入函数摘要或用户输入函数摘要中的某一点,那么该节点Node被标识为污染传播起始点。所有污染传播起始点构成污染源集合SetSrc。
其中,在上述实施例的基础上,S2的进一步处理步骤参考图3,为根据本发明实施例一种基于值依赖图的污染数据分析方法中构成污染传播图的流程图,包括:
S21,在守卫值依赖图中,遍历各污染传播起始点,对VDG的边和点进行点的前向广搜遍历,并通过对各污染传播起始点所属的污染传播规则的判断,确定各污染传播起始点的传播边和传播点,以及通过对各污染传播起始点基于漏洞特征的节点特征的判断,建立漏洞特征集合。
其中,在一个实施例中,通过对各污染传播起始点所属的污染传播规则的判断,确定各污染传播起始点的传播边和传播点,以及通过对各污染传播起始点基于漏洞特征的节点特征的判断,建立漏洞特征集合的步骤进一步包括:
若判断污染传播起始点N满足R(N)规则,则判断污染传播起始点N的出边E是否满足R(E)规则,若是,且出边E上的守卫guard满足R(E,guard),则污染数据沿出边E向下传递,且确定出边E为传播边,确定污染传播起始点N为传播点;
若污染传播起始点N满足漏洞特征的节点特征,则基于满足漏洞特征的节点特征的污染传播起始点,建立漏洞特征集合。
可以理解为,遍历污染源集合SetSrc中的每一个污染传播起始点VDGNode,在守卫值依赖图中通过VDG的边和点来进行污染的前向广搜遍历。对于每一个节点N,如果N满足R(N),则对于每一个N的出边E,如果满足R(E),且E上的守卫guard满足R(E,guard),则污染数据沿E向下传递,确定E为对应污染传播起始点的传播边,E加入传播边集合SetE,N为对应污染传播起始点的传播点,N加入传播点集合SetN。同时,如果N满足F,N加入漏洞特征集合。
S22,基于各污染传播起始点以及对应的各传播边和传播点,以及漏洞特征集合,构成污染传播图。
可以理解为,对于污染传播起始点中的某一条边E:N1→N2,如果可以找到E的守卫值对应的VDG控制节点Ne,使污染传播可以从Ne传到N2,则E:Ne→N2加入传播边集合SetE。基于传播边集合SetE和传播点集合SetN,利用G<SetE,SetN>构成污染传播图TG。可以看到SetN是守卫值依赖图中节点集合N的子集,污染传播图TG不是守卫值依赖图的子图。
其中可选的,S3的进一步处理步骤参考图4,为根据本发明实施例一种基于值依赖图的污染数据分析方法中确定污染传播路径和污染类型的流程图,包括:
S31,遍历污染传播图中的各污染传播起始点,对污染传播起始点进行向下的广搜计算,并建立污染传播起始点的切片S。
可以理解为,遍历污染传播图中的每一个污染传播起始点N,进行向下的广搜计算,建立切片S。其中节点N为S的起始点,对于每一个N′∈sin k,确定为切片目标点,得到的所有N′的集合为sin k′,sin k′为漏洞特征的子集。
S32,利用切片S中的漏洞特征sin k′集合,进行广搜计算,获取污染传播路径。
可以理解为,对于每一对点(N,N′),N′∈sin k′,通过深搜可以得到污染传播路径Path。适当调整深搜算法,可以做到O(N^2)的复杂度,得到切片S的所有污染传播路径。其中N为切片中VDG节点数量。切片S中所有污染传播路径获得污染传播路径集合SetP。
S33,通过判断污染传播路径的任一条边是否满足以下条件,确定污染类型:对于守卫值依赖图中的边E:N1→N2,可以找到边E的守卫值对应的VDG控制节点Ne,使污染传播可以从Ne传到N2。
可以理解为,对于任意一个污染传播路径Path∈SetP,如果Path中任意一条边满足“对于守卫值依赖图中的边E:N1→N2,可以找到边E的守卫值对应的VDG控制节点Ne,使污染传播可以从Ne传到N2”的属性,确定污染传播路径Path的污染类型为控制污染,否则为数据污染。即污染类型为Path的属性。
在其中的一个实施例中,在S33的步骤之后,该方法还包括:对污染传播路径进行排序。即,用户可以根据需求来自己实现路径排序逻辑。例如,可以根据路径长度排序以及根据缺陷发生概率排序,后者由机器学习实现。
为了进一步说明本发明的技术方案,提供如下优化技术方案,但不对本发明要求保护的范围进行限制。
首先,守卫值依赖图VDG的构建,根据上述实施例或现有技术的任意构建方法,可以将计算机程序转换为守卫值依赖图VDG。例如,图5中的计算机程序代码对应的VDG如图6所示。其中,图5为根据本发明实施例的一段计算机程序代码的示意图,图6为根据本发明实施例图5中计算机程序代码的VDG示意图。
然后,确定污染传播起始点。通过三种方法获得外部输入函数摘要,再根据该函数摘要在VDG上找到满足条件的VDGNode。可在系统内定义一些污点特征,例如C代码int x=scanf(“%s%d”,str,&num)中,scanf为内部定义的外部输入库函数,scanf中第2个参数str为污染数据,类型为字符串,scanf中第0个数据x以及第二个数据num为污染数据,类型为数字。另外,也可以通过数据挖掘以及用户自定义的方法来获得外部输入函数摘要。同时为了满足嵌入式的代码分析,本发明实施例开放接口给用户来自定义外部输入函数摘要。
再然后,污染传播图的获取。通过污染传播规则R和自定义的漏洞特征节点特征F,获得污染传播图TG。为了节省时间和空间,本发明一个实施例中,在原有VDG中添加一系列的满足“对于守卫值依赖图中的边E:N1→N2,可以找到边E的守卫值对应的VDG控制节点Ne,使污染传播可以从Ne传到N2”条件的边。
对于图5中代码所对应的VDG图6,上述条件会添加一条边8→15,VDG维护这样的边的集合SetC。假设用户要分析污染数据导致缓冲区溢出,定义F为数组或者指针的解引用,譬如a[i](i为污染数据)或者*p(p被污染数据控制污染),定义R(N),R(E,Guard)为默认传播,R(E)为PointerFieldLoadDependence不传播,污染图中点剩下4,6,8,15,16,边5→6、5→14不会传递。
最后,获取污染传播路径和污染类型。对每一个污染传播起始点进行向下的广搜计算,并获得该节点的切片S。基于切片S中的漏洞特征漏洞特征集合SetS,通过广搜获得污染传播路径集合。例如,图6中获得的路径集合为{4→6→16,4→6→8→15}。之后,对每一条污染传播路径进行污染类型分析,例如图6中4→6→16路径为数据污染,4→6→8→15为控制污染。
另外,可以确定污染传播路径的排序规则。对于污染数据导致的缓冲区溢出,一般通过机器学习获得的缺陷发生概率进行排序,如果对效率有要求的话,也可以根据Path的长度进行排序。
作为本发明实施例的另一个方面,本实施例提供一种基于值依赖图的污染数据分析系统,参考图7,为本发明实施例一种基于值依赖图的污染数据分析系统的结构示意图,包括:污染传播起始点确定模块1、污染传播图构成模块2和数据分析模块3。
其中,污染传播起始点确定模块1用于将目标计算机程序转换为守卫值依赖图,并通过自定义外部输入函数摘要和外部输入函数摘要用户定义接口,在守卫值依赖图上确定多个污染传播起始点;污染传播图构成模块2用于基于污染传播规则、用户自定义漏洞特征的节点特征以及污染传播起始点,构成污染传播图;数据分析模块3用于基于污染传播图,通过对各污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条污染传播路径的污染类型。
可以理解为,本实施例在分析系统中分别至少设置污染传播起始点确定模块1、污染传播图构成模块2和数据分析模块3三个功能模块。
首先,考虑到对污染数据分析的直观性与便利性,设置污染传播起始点确定模块1。利用污染传播起始点确定模块1,将目标计算机程序转换为守卫值依赖图VDG,再根据内部自定义的外部输入函数摘要,以及用户通过外部输入函数摘要用户定义接口定义的用户输入函数摘要,对守卫值依赖图中的每个节点进行验证,筛选其中多个符合筛选条件的节点作为污染传播起始点。在其中一个实施例中,所有的污染传播起始点构成一个污染源集合SetSrc。
其中的外部输入函数摘要用户定义接口是预先在系统内部定义的,可以使用户通过该接口自定义外部输入函数摘要。为了进行区分,将用户通过该接口定义的外部输入函数摘要命名为用户输入函数摘要。
在利用污染传播起始点确定模块1将目标计算机程序转化为守卫值依赖图后,利用污染传播图构成模块2,把对目标计算机程序的分析转化为对守卫值依赖图的分析,进而得到污染传播图。具体通过遍历守卫值依赖图中的每一个污染传播起始点,利用守卫值依赖图中节点的边和点,进行污染传播起始点的前向广搜遍历,并通过判断污染传播起始点所属的污染传播规则,以及相对漏洞特征节点特征的满足属性,确定对应污染传播起始点的传播边和传播点,以及漏洞特征集合。再根据所有污染传播起始点的传播边和传播点,以及漏洞特征集合,构成污染传播图。
最后,利用数据分析模块3,根据污染传播图进行污染数据的传播分析。即通过遍历污染传播图中的每一个污染传播起始点,向下进行广搜计算,最终获取污染数据的污染传播路径和每一条污染传播路径污染类型。
其中,所有污染传播起始点的传播边构成传播边集合SetE,所有污染传播起始点的传播点构成播点集合SetN。
应当理解的是,本发明实施例中可以通过硬件处理器(hardware processor)来实现相关功能模块。
本发明实施例提供的一种基于值依赖图的污染数据分析系统,通过在分析系统中设置相应的功能模块,将目标计算机程序转换为守卫值依赖图,并基于守卫值依赖图进行污染数据传播范围、传播关系和数据污染类型的确定,能够清晰且便利的表达污染数据传播范围、传播关系和每一条路径的污染传播类型,保证污染数据传播范围的全面性。
作为本发明实施例的又一个方面,本实施例提供一种电子设备,参考图8,为本发明实施例一种电子设备的结构框图,包括:至少一个存储器801、至少一个处理器802、通信接口803和总线804。
其中,存储器801、处理器802和通信接口803通过总线804完成相互间的通信,通信接口803用于该电子设备与外部用户接口之间的信息传输;存储器801中存储有可在处理器802上运行的计算机程序,处理器802执行计算机程序时实现如上述实施例的基于值依赖图的污染数据分析方法。
可以理解为,上述的电子设备中至少包含存储器801、处理器802、通信接口803和总线804,且存储器801、处理器802和通信接口803通过总线804形成相互之间的通信连接,并可完成相互间的通信。
通信接口803实现该电子设备与用户输入接口之间的通信连接,并可完成相互间信息传输,如通过通信接口803实现对用户输入设置数据的获取等。
上述的电子设备运行时,处理器802调用存储器801中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:基于污染传播图,通过对各污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条污染传播路径的污染类型等。
本发明另一个实施例中,提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储计算机指令,该计算机指令使计算机执行如上述实施例的基于值依赖图的污染数据分析方法。
可以理解为,上述的存储器801中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。或者,实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的电子设备的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分的方法。
本发明实施例提供的一种电子设备和一种非暂态计算机可读存储介质,通过在分析系统中设置相应的功能模块,将目标计算机程序转换为守卫值依赖图,并基于守卫值依赖图进行污染数据传播范围、传播关系和数据污染类型的确定,能够清晰且便利的表达污染数据传播范围、传播关系和每一条路径的污染传播类型,保证污染数据传播范围的全面性。
另外,本领域内的技术人员应当理解的是,在本发明的申请文件中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明的说明书中,说明了大量具体细节。然而应当理解的是,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。类似地,应当理解,为了精简本发明公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。
然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种基于值依赖图的污染数据分析方法,其特征在于,包括:
S1,将目标计算机程序转换为守卫值依赖图,自定义外部输入函数摘要,并通过开放所述外部输入函数摘要用户定义接口,接受用户自定义的用户输入函数摘要;
遍历所述守卫值依赖图中的每一个节点,若判断所述节点为库函数的调用点,且契合所述外部输入函数摘要或所述用户输入函数摘要,则确定所述节点为所述污染传播起始点;
S2,基于污染传播规则、用户自定义漏洞特征的节点特征以及所述污染传播起始点,构成污染传播图;
S3,基于所述污染传播图,通过对各所述污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条所述污染传播路径的污染类型。
2.根据权利要求1所述的方法,其特征在于,所述S2的步骤进一步包括:
在所述守卫值依赖图中,遍历各所述污染传播起始点,对守卫值依赖图中的边和点进行点的前向广搜遍历,并通过对各所述污染传播起始点所属的所述污染传播规则的判断,确定各所述污染传播起始点的传播边和传播点,以及通过对各所述污染传播起始点基于所述漏洞特征的节点特征的判断,建立漏洞特征集合;
基于各所述污染传播起始点以及对应的各所述传播边和所述传播点,以及所述漏洞特征集合,构成所述污染传播图。
3.根据权利要求1所述的方法,其特征在于,在所述S1和S2的步骤之间,还包括:
通过开放外部规则定义接口,接受用户自定义的所述污染传播规则,并通过开放外部漏洞特征定义接口,接受用户自定义的所述漏洞特征的节点特征。
4.根据权利要求2所述的方法,其特征在于,所述污染传播规则进一步包括:
R(N)规则,表示污染数据到达点污染传播起始点N继续向下传播的规则;
R(E)规则,表示污染数据沿边E向下传播的规则;
以及,R(E,guard)规则,表示污染数据沿边E向下传播时E的守卫值需要满足的规则。
5.根据权利要求4所述的方法,其特征在于,所述通过对各所述污染传播起始点所属的所述污染传播规则的判断,确定各所述污染传播起始点的传播边和传播点,以及通过对各所述污染传播起始点基于所述漏洞特征的节点特征的判断,建立漏洞特征集合的步骤具体包括:
若判断所述污染传播起始点N满足所述R(N)规则,则判断所述污染传播起始点N的出边E是否满足所述R(E)规则,若是,且出边E上的守卫guard满足R(E,guard)规则,则污染数据沿出边E向下传递,且确定出边E为所述传播边,确定所述污染传播起始点N为所述传播点;
若所述污染传播起始点N满足所述漏洞特征的节点特征,则基于满足所述漏洞特征的节点特征的污染传播起始点,建立所述漏洞特征集合。
6.根据权利要求2所述的方法,其特征在于,所述S3的步骤进一步包括:
遍历所述污染传播图中的各所述污染传播起始点,对所述污染传播起始点进行向下的广搜计算,并建立所述污染传播起始点的切片S;
利用所述切片S中的漏洞特征sink′集合,进行广搜计算,获取所述污染传播路径;
通过判断所述污染传播路径的任一条边是否满足以下条件,确定所述污染类型:对所述守卫值依赖图中的边E:N1→N2,可以找到边E的守卫值对应的守卫值依赖图控制节点Ne,使污染传播可以从Ne传到N2。
7.根据权利要求1所述的方法,其特征在于,步骤S1中所述将目标计算机程序转换为守卫值依赖图的步骤进一步包括:
对所述目标计算机程序进行跟踪编译并解析源码,获取抽象语法树,并基于所述抽象语法树,建立所述守卫值依赖图;
其中,所述守卫值依赖图包括常量传播分析、静态单赋值分析、指向分析、区间分析、复写传播分析、精化分析、域分析和死代码消除处理。
8.一种基于值依赖图的污染数据分析系统,其特征在于,包括:
污染传播起始点确定模块,用于将目标计算机程序转换为守卫值依赖图,自定义外部输入函数摘要,并通过开放所述外部输入函数摘要用户定义接口,接受用户自定义的用户输入函数摘要;遍历所述守卫值依赖图中的每一个节点,若判断所述节点为库函数的调用点,且契合所述外部输入函数摘要或所述用户输入函数摘要,则确定所述节点为所述污染传播起始点;
污染传播图构成模块,用于基于污染传播规则、用户自定义漏洞特征的节点特征以及所述污染传播起始点,构成污染传播图;
数据分析模块,用于基于所述污染传播图,通过对各所述污染传播起始点进行向下的广搜计算,获取对应的污染传播路径和每一条所述污染传播路径的污染类型。
9.一种电子设备,其特征在于,包括:至少一个存储器、至少一个处理器、通信接口和总线;
所述存储器、所述处理器和所述通信接口通过所述总线完成相互间的通信,所述通信接口用于所述电子设备与外部用户接口之间的信息传输;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810650652.8A CN109002712B (zh) | 2018-06-22 | 2018-06-22 | 一种基于值依赖图的污染数据分析方法、系统与电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810650652.8A CN109002712B (zh) | 2018-06-22 | 2018-06-22 | 一种基于值依赖图的污染数据分析方法、系统与电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109002712A CN109002712A (zh) | 2018-12-14 |
CN109002712B true CN109002712B (zh) | 2020-11-03 |
Family
ID=64601984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810650652.8A Active CN109002712B (zh) | 2018-06-22 | 2018-06-22 | 一种基于值依赖图的污染数据分析方法、系统与电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109002712B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110245496B (zh) * | 2019-05-27 | 2021-04-20 | 华中科技大学 | 一种源代码漏洞检测方法及检测器和其训练方法及系统 |
CN111291373B (zh) * | 2020-02-03 | 2022-06-14 | 思客云(北京)软件技术有限公司 | 用于分析数据污染传播的方法、设备和计算机可读存储介质 |
CN114710301A (zh) * | 2020-12-16 | 2022-07-05 | 中国移动通信有限公司研究院 | 一种数据污染程度确定方法、装置及存储介质 |
CN114510722B (zh) * | 2022-02-17 | 2023-01-06 | 北京大学 | 增量代码的静态检测方法及检测系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729295A (zh) * | 2013-12-31 | 2014-04-16 | 北京理工大学 | 一种污点传播路径分析方法 |
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
CN105117336A (zh) * | 2015-08-26 | 2015-12-02 | 中国科学院软件研究所 | 一种动态标记处理控制依赖的方法 |
CN106384050A (zh) * | 2016-09-13 | 2017-02-08 | 哈尔滨工程大学 | 一种基于最大频繁子图挖掘的动态污点分析方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101482847B (zh) * | 2009-01-19 | 2011-06-29 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
CN103455759B (zh) * | 2012-06-05 | 2017-03-15 | 深圳市腾讯计算机系统有限公司 | 一种页面漏洞检测装置及检测方法 |
-
2018
- 2018-06-22 CN CN201810650652.8A patent/CN109002712B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729295A (zh) * | 2013-12-31 | 2014-04-16 | 北京理工大学 | 一种污点传播路径分析方法 |
CN104765687A (zh) * | 2015-04-10 | 2015-07-08 | 江西师范大学 | 基于对象跟踪和污点分析的j2ee程序漏洞检测方法 |
CN105117336A (zh) * | 2015-08-26 | 2015-12-02 | 中国科学院软件研究所 | 一种动态标记处理控制依赖的方法 |
CN106384050A (zh) * | 2016-09-13 | 2017-02-08 | 哈尔滨工程大学 | 一种基于最大频繁子图挖掘的动态污点分析方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109002712A (zh) | 2018-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109002712B (zh) | 一种基于值依赖图的污染数据分析方法、系统与电子设备 | |
US11928144B2 (en) | Clustering of log messages | |
CN109426722B (zh) | Sql注入缺陷检测方法、系统、设备及存储介质 | |
CN106294038B (zh) | 一种故障谱的生成、基于故障谱的检测方法和装置 | |
CN107292170B (zh) | Sql注入攻击的检测方法及装置、系统 | |
US8655824B1 (en) | Global policy framework analyzer | |
CN108459954B (zh) | 应用程序漏洞检测方法和装置 | |
CN114077741B (zh) | 软件供应链安全检测方法和装置、电子设备及存储介质 | |
CN111459799A (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
CN112154420B (zh) | 自动智能云服务测试工具 | |
CN110704846B (zh) | 一种人在回路的智能化安全漏洞发现方法 | |
CN110059006B (zh) | 代码审计方法及装置 | |
Huang et al. | UChecker: Automatically detecting php-based unrestricted file upload vulnerabilities | |
CN111859047A (zh) | 一种故障解决方法及装置 | |
JP2020126641A (ja) | Apiマッシュアップ探査及びリコメンデーション | |
CN116756327B (zh) | 基于知识推断的威胁情报关系抽取方法、装置和电子设备 | |
CN114861194A (zh) | 一种基于bgru与cnn融合模型的多类型漏洞检测方法 | |
Xiong et al. | A method for assigning probability distributions in attack simulation languages | |
JP2012181666A (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
CN117349187A (zh) | 一种基于模型持久化的交互式漏洞分析方法和系统 | |
CN116681131A (zh) | 一种基于知识图谱的容器镜像仓库风险预测方法 | |
CN113626823A (zh) | 一种基于可达性分析的组件间交互威胁检测方法及装置 | |
Chernousov et al. | Deep learning based automatic software defects detection framework | |
Vislavski et al. | Towards the Code Clone Analysis in Heterogeneous Software Products. | |
CN116915459B (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 |