CN111581099A - 一种漏洞路径优先级的符号执行调度方法及系统 - Google Patents
一种漏洞路径优先级的符号执行调度方法及系统 Download PDFInfo
- Publication number
- CN111581099A CN111581099A CN202010390833.9A CN202010390833A CN111581099A CN 111581099 A CN111581099 A CN 111581099A CN 202010390833 A CN202010390833 A CN 202010390833A CN 111581099 A CN111581099 A CN 111581099A
- Authority
- CN
- China
- Prior art keywords
- complexity
- path
- program execution
- vulnerability
- priority
- 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.)
- Granted
Links
Images
Classifications
-
- 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/3616—Software analysis for verifying properties of programs using software metrics
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/74—Reverse engineering; Extracting design information from source code
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种漏洞路径优先级的符号执行调度方法及系统,通过将待挖掘漏洞二进制程序逆向编译的可读文本,并将可读文本划分成多个片段,每个片段中包含至少一个基本块;分析漏洞潜在性高的基本块的复杂度,片段的复杂度,程序执行路径的复杂度,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对其进行排序,根据程序执行路径优先度调度符号执行测试,为实现高效的符号执行提供路径指导,有利于快速、高效发现漏洞路径。
Description
技术领域
本发明涉及电力信息安全技术领域,具体涉及一种漏洞路径优先级的符号执行调度方法及系统。
背景技术
随着社会经济的高速发展,面向源代码的应用漏洞挖掘技术已经有了显著的发展,上线前安全渗透测试的强制性要求,能够有效发现应用中存在的部分漏洞,提升了应用的安全性。然而,面向源代码的应用漏洞挖掘也存在一些不足,由于开发时使用高级语言(C语言、Java等),实际运行时将被编译成二进制代码,在编译、链接的过程中可能由于设置不当等多种原因引入漏洞,使得这些新引入的漏洞难以被检测,然而面向二进制程序的漏洞挖掘具有语言无关性且不需要程序源代码,同时也不需要进行编译和链接,可以直接被执行,因此对二进制程序开展漏洞挖掘能够发现面向源代码的漏洞挖掘难以发现的漏洞。面向二进制程序的漏洞挖掘对于挖掘人员的技术要求高,整体挖掘难度较大,且需要较长时间。在电网网络资产中,诸如配电系统的应用大多为C/S架构(例如:配电用电网络安全监测系统),对于二进制程序的漏洞挖掘需求较大,依靠现有个别专业人员进行的手动挖掘难以在效率上满足。
目前,二进制程序漏洞的分析、挖掘通常利用符号执行和约束求解相结合的方法,由于符号执行存在路径爆炸、路径覆盖不全等问题,路径爆炸是目前符号执行遇到最大难题,是由于程序中可执行的路径太多,如果每条路径都用符号执行的方式检测,会产生大量的符号状态需要在内存中维持,这会大量占用计算机的内存资源,导致内存耗尽,符号执行中断。如果对所有的代码路径进行随机选择并进行漏洞挖掘,需要的时间周期长,对二进制程序来说,漏洞点所在位置的可达路径可能有多条,每条代码路径触发漏洞的难易程度不一样,越晚发现漏洞对于商业软件来说受到的损失越大。在实际使用时,符号执行只能对浅层代码进行测试,漏洞路径覆盖不全,加大计算量及计算时间。
发明内容
因此,本发明提供的一种漏洞路径优先级的符号执行调度方法及系统,克服现有技术中漏洞路径覆盖不全,计算量大及计算时间长的的缺陷,有利于快速、高效发现漏洞路径。
为达到上述目的,本发明提供如下技术方案:
第一方面,本发明实施例提供一种漏洞路径优先级的符号执行调度方法,包括:
获取待挖掘漏洞二进制程序逆向编译的可读文本,并将可读文本划分成多个片段,其中,每个片段中包含至少一个基本块;
计算各基本块的复杂度,并根据各基本块的复杂度计算片段的复杂度;
根据程序执行路径经过的片段的复杂度计算程序执行路径的复杂度;
根据程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序;
对优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,当符号执行遇到分支指令时,判断跳转后的代码是否存在于程序执行路径中,如果超出程序执行路径范围,则抛弃这一分支对应的符号求解值,否则,继续进行符号执行,直至发现崩溃或执行完全部程序执行路径。
在一实施例中,所述计算各基本块的复杂度,并根据各基本块的复杂度计算片段的复杂度的步骤,包括:
根据指令数量和指令类型计算各基本块的复杂度;
根据片段中各基本块的复杂度及基本块的数量,按照基本块的层级加权累和计算片段的复杂度,其中,基本块的层级由在本片段中到达的条件决定。
在一实施例中,通过以下公式计算基本块的复杂度:
在一实施例中,通过以下公式计算片段的复杂度:
在一实施例中,漏洞存在因素包括:不同漏洞类型的漏洞对应代码出现频率和对应代码复杂度。
在一实施例中,通过以下公式计算程序执行路径的复杂度:
Cr=V(G)(Cf1+Cf2+…)
V(G)=e-n+2
其中,V(G)为一条程序执行路径的圈复杂度,Cfi为程序执行路径中涉及到的所有片段的复杂度,e为一条程序执行路径中边的数量,n为控制流图中的节点数量。
在一实施例中,通过以下公式计算疑似漏洞所在程序执行路径的优先度:
其中,Pv为漏洞出现概率,Pc为对应的与代码复杂度的关系,Cri是一条程序执行路径的复杂度,α+β=1。
第二方面,本发明实施例提供一种漏洞路径优先级的符号执行调度系统,包括:
文本获取模块,用于将待挖掘漏洞二进制程序逆向编译成可读文本,并将可读文本划分出多个片段,其中,每个片段中包含至少一个基本块;
片段的复杂度计算模块,用于根据各基本块的复杂度计算片段的复杂度;
程序执行路径的复杂度计算模块,用于利用程序执行路径经过的片段的复杂度计算程序执行路径的复杂度;
程序执行路径优先度排序模块,用于利用程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序;
符号执行模块,用于根据对优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,当符号执行遇到分支指令时,判断跳转后的代码是否存在于程序执行路径中,如果超出程序执行路径范围,则抛弃这一分支对应的符号求解值,否则,继续进行符号执行,直至发现崩溃或执行完全部程序执行路径。
第三方面,本发明实施例提供一种终端,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行本发明实施例第一方面所述的漏洞路径优先级的符号执行调度方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行本发明实施例第一方面所述的漏洞路径优先级的符号执行调度方法。
本发明技术方案,具有如下优点:
1.本发明提供的漏洞路径优先级的符号执行调度方法及系统,通过将待挖掘漏洞二进制程序逆向编译的可读文本,并将可读文本划分成多个片段,每个片段中包含至少一个基本块;计算各基本块的复杂度、片段的复杂度及程序执行路径的复杂度;根据程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序;对优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,当符号执行遇到分支指令时,判断跳转后的代码是否存在于程序执行路径中,如果超出程序执行路径范围,则抛弃这一分支对应的符号求解值,否则,继续进行符号执行,直至发现崩溃或执行完全部程序执行路径。本发明实施例对疑似漏洞点所在程序执行路径的优先度进行排序,根据优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,优先挖掘容易触发漏洞的路径,缩小计算量,快速、高效发现漏洞路径。
2.本发明提供的漏洞路径优先级的符号执行调度方法及系统,根据程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序,将漏洞风险和漏洞的存在概率作为影响二进制漏洞挖掘路径优先级的重要因素,同时,对疑似漏洞的代码可达路径的优先级排序,指导符号执行的执行路径,减少符号执行过程中对于计算机内存资源的占用,降低符号执行过程中的路径爆炸问题的可能性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种漏洞路径优先级的符号执行调度方法的一个具体示例的流程图;
图2为本发明实施例提供的一种漏洞路径优先级的符号执行调度系统的模块组成图;
图3为本发明实施例提供的一种漏洞路径优先级的符号执行调度系统的终端一个具体示例的组成图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
实施例1
本发明实施例提供的一种漏洞路径优先级的符号执行调度方法,可应用于电力信息安全技术领域,如图1所示,包括如下步骤:
步骤S1:获取待挖掘漏洞二进制程序逆向编译的可读文本,并将可读文本划分成多个片段,其中,每个片段中包含至少一个基本块。
在本发明实施例中,片段以函数为划分依据,一个函数划分为一个片段,基本块为最小划分单位,在一个基本块中仅有一个程序执行入口和出口,不存在分支。
步骤S2:计算各基本块的复杂度,并根据各基本块的复杂度计算片段的复杂度。
在本发明实施例中,各基本块的复杂度根据指令数量和指令类型计算,指令类型包括数据传送指令、算术运算指令、位运算指令、程序流程控制指令、串操作指令、处理器控制指令,仅以此为例,不以此为限,在实际应用中根据需求选择相应指令类型。计算基本块的复杂度的公式为:
其中,Cb为基本块的复杂度,ni为对应指令类型的指令数量,为对应指令类型的指令权重值,γ为影响系数,通常取值为0.01~0.1之间,为基本块中涉及到的每一次栈操作时,栈顶到栈底的距离,num为基本块中总的指令数量。
在本发明实施例中,根据参考指令的时间复杂度O(n)获得指令类型的指令权重值Ri O(n),计算时间复杂度O(n)的方法是公认的,在此不作赘述。指令权重值与指令的时间复杂度的对应关系如下表:
序号 | 时间复杂度 | 指令权重值 |
1 | O(1) | 1 |
2 | O(n) | a |
3 | O(n<sup>2</sup>) | a<sup>2</sup> |
4 | O(logn) | Log(a) |
5 | O(nlogn) | alog(a) |
6 | O(n<sup>3</sup>) | a<sup>3</sup> |
7 | O(2<sup>n</sup>) | 2<sup>a</sup> |
其中,a的值等于1+(指令类型数量)-1,例如该基本块中有两种时间复杂度的指令类型,则a=1+2-1=1.5。编号1-7是对应的7种时间复杂度,涵盖了代码中可能出现的时间复杂度情况。
在本发明实施例中,根据片段中各基本块的复杂度及基本块的数量,按照基本块的层级加权累和计算片段的复杂度,计算片段复杂度的公式为:
在本发明实施例中,基本块的层级由在本片段中到达的条件决定,例如,所有顺序执行的基本块处于同一层级,出现条件判断、循环内部的则处于下一层级,不同层级的权重依次递减,本实施中取经验值,θ1=1,θi+1=0.1θi。
步骤S3:根据程序执行路径经过的片段的复杂度计算程序执行路径的复杂度。
在本发明实施例中,程序执行路径的复杂度计算公式为:
Cr=V(G)(Cf1+Cf2+…)
V(G)=e-n+2
其中,V(G)为一条程序执行路径的圈复杂度,Cfi为程序执行路径中涉及到的所有片段的复杂度,e为一条程序执行路径中边的数量,n为控制流图中的节点数量。V(G)计算方法是公认的,在此不作赘述,从程序流程图的形式看代码,可以直观得出边和节点数,也可以借助现有工具,例如IDA获得边和节点的数量,仅以此为例,不以此为限,在实际应用中根据需求选择相应方式获得。
步骤S4:根据程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序。
在本发明实施例中,漏洞存在因素包括不同漏洞类型的漏洞对应代码出现频率和对应代码复杂度。疑似漏洞点所在程序执行路径的优先度计算公式为:
其中,Pv为漏洞出现概率,Pc为对应的与代码复杂度的关系,Cri是一条程序执行路径的复杂度,α+β=1。
在本发明实施例中,代码出现频率是指该类型漏洞对应代码出现频率,例如栈漏洞出现在栈操作代码中,因为栈操作代码在路径中出现的频率高,即栈漏洞的对应代码出现频率高,所以栈漏洞出现的频率也比较高,仅以此为例,不以此为限;但是,栈操作代码比较简单,即对应代码复杂度较低,栈漏洞出现的概率较低,因此通过不同漏洞类型漏洞对应代码出现频率和对应代码复杂度共同决定漏洞存在的风险大小。
在本发明实施例中,漏洞类型包括栈漏洞、整数溢出漏洞、格式化字符串漏洞、堆漏洞和逻辑漏洞,其中:栈漏洞对应Pv=0.9,Pc=0.3;整数溢出漏洞对应Pv=0.6,Pc=0.3;格式化字符串漏洞对应Pv=0.6,Pc=0.6;堆漏洞对应Pv=0.3,Pc=0.6;逻辑漏洞对应Pv=0.3,Pc=0.9,而α、β数值的确定依赖实验数据获得,例如,对于某一类应用的程序,选取几个已知漏洞的程序,将漏洞类型对应的Pv漏洞出现概率值、Pc对应的与代码复杂度的关系值及程序路径的复杂度值,带入疑似漏洞点所在程序执行路径的优先度计算公式中,看α、β的值具体为多少最贴近实际情况,然后对应这类程序,就选用这组α、β值。
步骤S5:对优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,当符号执行遇到分支指令时,判断跳转后的代码是否存在于程序执行路径中,如果超出程序执行路径范围,则抛弃这一分支对应的符号求解值,否则,继续进行符号执行,直至发现崩溃或执行完全部程序执行路径。
在本发明实施例中,发现程序执行崩溃即证明存在漏洞,执行完全部程序执行路径说明不存在漏洞。
本发明实施例提供一种漏洞路径优先级的符号执行调度方法,通过将待挖掘漏洞二进制程序逆向编译的可读文本,并将可读文本划分成多个片段,每个片段中包含至少一个基本块;分析漏洞潜在性高的基本块的复杂度,片段的复杂度,程序执行路径的复杂度,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对其进行排序,根据程序执行路径优先度调度符号执行测试,为实现高效的符号执行提供了路径指导,有利于快速、高效发现漏洞路径。通过优先级排序的方式,选择漏洞存在性高的路径优先执行符号执行,可以避免一些无用路径(不存在漏洞的路径),从而降低符号执行过程中对于内存资源的占用。
实施例2
本发明实施例提供一种漏洞路径优先级的符号执行调度系统,如图2所示,包括:
文本获取模块1,用于将待挖掘漏洞二进制程序逆向编译成可读文本,并将可读文本划分出多个片段,其中,每个片段中包含至少一个基本块;此模块执行实施例1中的步骤S1所描述的方法,在此不再赘述。
片段的复杂度计算模块2,用于根据各基本块的复杂度计算片段的复杂度;此模块执行实施例2中的步骤S2所描述的方法,在此不再赘述。
程序执行路径的复杂度计算模块3,用于利用程序执行路径经过的片段的复杂度计算程序执行路径的复杂度;此模块执行实施例3中的步骤S3所描述的方法,在此不再赘述。
程序执行路径优先度排序模块4,用于利用程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序;此模块执行实施例4中的步骤S4所描述的方法,在此不再赘述。
符号执行模块5,用于根据对优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,当符号执行遇到分支指令时,判断跳转后的代码是否存在于程序执行路径中,如果超出程序执行路径范围,则抛弃这一分支对应的符号求解值,否则,继续进行符号执行,直至发现崩溃或执行完全部程序执行路径;此模块执行实施例5中的步骤S5所描述的方法,在此不再赘述。
本发明实施例提供一种漏洞路径优先级的符号执行调度系统,通过对疑似漏洞可达路径进行优先度排序,根据路径优先度调度符号执行的测试,可以发现更容易到达漏洞的路径选择,以此减少符号执行所需的时间,及符号执行过程中对于计算机内存资源的占用,降低路径爆炸问题的可能性。
实施例3
本发明实施例提供一种终端,如图3所示,包括:至少一个处理器401,例如CPU(Central Processing Unit,中央处理器),至少一个通信接口403,存储器404,至少一个通信总线402。其中,通信总线402用于实现这些组件之间的连接通信。其中,通信接口403可以包括显示屏(Display)、键盘(Keyboard),可选通信接口403还可以包括标准的有线接口、无线接口。存储器404可以是高速RAM存储器(Ramdom Access Memory,易挥发性随机存取存储器),也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器404可选的还可以是至少一个位于远离前述处理器401的存储装置。其中处理器401可以执行实施例1中的漏洞路径优先级的符号执行调度方法。存储器404中存储一组程序代码,且处理器401调用存储器404中存储的程序代码,以用于执行实施例1中的漏洞路径优先级的符号执行调度方法。其中,通信总线402可以是外设部件互连标准(peripheralcomponent interconnect,简称PCI)总线或扩展工业标准结构(extended industrystandard architecture,简称EISA)总线等。通信总线402可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。其中,存储器404可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard diskdrive,缩写:HDD)或固降硬盘(英文:solid-state drive,缩写:SSD);存储器404还可以包括上述种类的存储器的组合。其中,处理器401可以是中央处理器(英文:centralprocessing unit,缩写:CPU),网络处理器(英文:network processor,缩写:NP)或者CPU和NP的组合。
其中,存储器404可以包括易失性存储器(英文:volatile memory),例如随机存取存储器(英文:random-access memory,缩写:RAM);存储器也可以包括非易失性存储器(英文:non-volatile memory),例如快闪存储器(英文:flash memory),硬盘(英文:hard diskdrive,缩写:HDD)或固态硬盘(英文:solid-state drive,缩写:SSD);存储器404还可以包括上述种类的存储器的组合。
其中,处理器401可以是中央处理器(英文:central processing unit,缩写:CPU),网络处理器(英文:network processor,缩写:NP)或者CPU和NP的组合。
其中,处理器401还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(英文:application-specific integrated circuit,缩写:ASIC),可编程逻辑器件(英文:programmable logic device,缩写:PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(英文:complex programmable logic device,缩写:CPLD),现场可编程逻辑门阵列(英文:field-programmable gate array,缩写:FPGA),通用阵列逻辑(英文:generic arraylogic,缩写:GAL)或其任意组合。
可选地,存储器404还用于存储程序指令。处理器401可以调用程序指令,实现如本申请执行实施例1中的漏洞路径优先级的符号执行调度方法。
本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机可执行指令,该计算机可执行指令可执行实施例1中的漏洞路径优先级的符号执行调度方法。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(Random Access Memory,RAM)、快闪存储器(Flash Memory)、硬盘(HardDisk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造的保护范围之中。
Claims (11)
1.一种漏洞路径优先级的符号执行调度方法,其特征在于,包括:
获取待挖掘漏洞二进制程序逆向编译的可读文本,并将可读文本划分成多个片段,其中,每个片段中包含至少一个基本块;
计算各基本块的复杂度,并根据各基本块的复杂度计算片段的复杂度;
根据程序执行路径经过的片段的复杂度计算程序执行路径的复杂度;
根据程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序;
对优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,当符号执行遇到分支指令时,判断跳转后的代码是否存在于程序执行路径中,如果超出程序执行路径范围,则抛弃这一分支对应的符号求解值,否则,继续进行符号执行,直至发现崩溃或执行完全部程序执行路径。
2.根据权利要求1所述的漏洞路径优先级的符号执行调度方法,其特征在于,所述计算各基本块的复杂度,并根据各基本块的复杂度计算片段的复杂度的步骤,包括:
根据指令数量和指令类型计算各基本块的复杂度;
根据片段中各基本块的复杂度及基本块的数量,按照基本块的层级加权累和计算片段的复杂度,其中,基本块的层级由在本片段中到达的条件决定。
4.根据权利要求3所述的漏洞路径优先级的符号执行调度方法,其特征在于,根据参考指令的时间复杂度O(n)获得指令权重值Ri O(n)。
6.根据权利要求1所述的漏洞路径优先级的符号执行调度方法,其特征在于,漏洞存在因素包括:不同漏洞类型的漏洞对应代码出现频率和对应代码复杂度。
7.根据权利要求1所述的漏洞路径优先级的符号执行调度方法,其特征在于,通过以下公式计算程序执行路径的复杂度:
Cr=V(G)(Cf1+Cf2+…)
V(G)=e-n+2
其中,V(G)为一条程序执行路径的圈复杂度,Cfi为程序执行路径中涉及到的所有片段的复杂度,e为一条程序执行路径中边的数量,n为控制流图中的节点数量。
9.一种漏洞路径优先级的符号执行调度系统,其特征在于,包括:
文本获取模块,用于将待挖掘漏洞二进制程序逆向编译成可读文本,并将可读文本划分出多个片段,其中,每个片段中包含至少一个基本块;
片段的复杂度计算模块,用于根据各基本块的复杂度计算片段的复杂度;
程序执行路径的复杂度计算模块,用于利用程序执行路径经过的片段的复杂度计算程序执行路径的复杂度;
程序执行路径优先度排序模块,用于利用程序执行路径的复杂度预测疑似漏洞点,结合漏洞存在因素计算疑似漏洞点所在程序执行路径的优先度,并对所有疑似漏洞点所在程序执行路径的优先度进行排序;
符号执行模块,用于根据对优先度进行排序后的疑似漏洞点所在的程序执行路径进行符号执行,当符号执行遇到分支指令时,判断跳转后的代码是否存在于程序执行路径中,如果超出程序执行路径范围,则抛弃这一分支对应的符号求解值,否则,继续进行符号执行,直至发现崩溃或执行完全部程序执行路径。
10.一种终端,其特征在于,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-8任一所述的漏洞路径优先级的符号执行调度方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-8任一所述的漏洞路径优先级的符号执行调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010390833.9A CN111581099B (zh) | 2020-05-11 | 2020-05-11 | 一种漏洞路径优先级的符号执行调度方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010390833.9A CN111581099B (zh) | 2020-05-11 | 2020-05-11 | 一种漏洞路径优先级的符号执行调度方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111581099A true CN111581099A (zh) | 2020-08-25 |
CN111581099B CN111581099B (zh) | 2023-02-10 |
Family
ID=72120791
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010390833.9A Active CN111581099B (zh) | 2020-05-11 | 2020-05-11 | 一种漏洞路径优先级的符号执行调度方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111581099B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650687A (zh) * | 2020-12-30 | 2021-04-13 | 绿盟科技集团股份有限公司 | 引擎调度动作执行优先级的测试方法、装置、设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN104732152A (zh) * | 2015-04-07 | 2015-06-24 | 南京大学 | 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法 |
US20190114436A1 (en) * | 2017-10-13 | 2019-04-18 | Korea Internet & Security Agency | Method for automatically detecting security vulnerability based on hybrid fuzzing, and apparatus thereof |
CN110287693A (zh) * | 2019-06-13 | 2019-09-27 | 成都积微物联集团股份有限公司 | 一种基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法 |
US20200120126A1 (en) * | 2018-10-15 | 2020-04-16 | International Business Machines Corporation | Prioritizing vulnerability scan results |
-
2020
- 2020-05-11 CN CN202010390833.9A patent/CN111581099B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN104732152A (zh) * | 2015-04-07 | 2015-06-24 | 南京大学 | 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法 |
US20190114436A1 (en) * | 2017-10-13 | 2019-04-18 | Korea Internet & Security Agency | Method for automatically detecting security vulnerability based on hybrid fuzzing, and apparatus thereof |
US20200120126A1 (en) * | 2018-10-15 | 2020-04-16 | International Business Machines Corporation | Prioritizing vulnerability scan results |
CN110287693A (zh) * | 2019-06-13 | 2019-09-27 | 成都积微物联集团股份有限公司 | 一种基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法 |
Non-Patent Citations (2)
Title |
---|
YUFENG ZHANG 等: "《Regular Property Guided Dynamic Symbolic Execution》", 《2015 IEEE/ACM 37TH IEEE INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING》 * |
毕雪洁 等: "《基于圈复杂度的阶段动态符号执行》", 《信息技术与网络安全》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112650687A (zh) * | 2020-12-30 | 2021-04-13 | 绿盟科技集团股份有限公司 | 引擎调度动作执行优先级的测试方法、装置、设备及介质 |
CN112650687B (zh) * | 2020-12-30 | 2024-03-19 | 绿盟科技集团股份有限公司 | 引擎调度动作执行优先级的测试方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111581099B (zh) | 2023-02-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150261657A1 (en) | Methods for generating test suites and devices thereof | |
US11734353B2 (en) | Multi-sampling model training method and device | |
US9846601B2 (en) | Method and apparatuses for determining a leak of resource and predicting usage of resource | |
US20170214704A1 (en) | Method and device for feature extraction | |
WO2018201646A1 (zh) | 模型分析方法、装置、及计算机可读存储介质 | |
CN110866258B (zh) | 快速定位漏洞方法、电子装置及存储介质 | |
CN107688533B (zh) | 应用程序测试方法、装置、计算机设备和存储介质 | |
CN110197072B (zh) | 软件安全漏洞的发掘方法及系统、存储介质和计算机设备 | |
CN110633211A (zh) | 对于多接口的测试方法、装置、服务器及介质 | |
CN112347474A (zh) | 一种安全威胁情报的构建方法、装置、设备和存储介质 | |
CN111581099B (zh) | 一种漏洞路径优先级的符号执行调度方法及系统 | |
CN109815697A (zh) | 误报行为处理方法及装置 | |
Sadeghi et al. | Mining the categorized software repositories to improve the analysis of security vulnerabilities | |
CN112788010B (zh) | 一种基于威胁事件的剧本处理方法、装置、介质和设备 | |
CN111475267A (zh) | 系统任务自动调度方法、装置、计算机设备及存储介质 | |
CN110704614A (zh) | 对应用中的用户群类型进行预测的信息处理方法及装置 | |
CN113486359B (zh) | 软件漏洞的检测方法、装置、电子装置和存储介质 | |
CN113225356B (zh) | 一种基于ttp的网络安全威胁狩猎方法及网络设备 | |
CN111142898B (zh) | 一种基于群体智能模式的数据防泄漏终端升级方法及系统 | |
CN115934502A (zh) | 用于大数据管理系统的最优压力测试的工作负载生成 | |
CN113642000A (zh) | 恶意应用的识别方法、装置、计算机设备及存储介质 | |
CN113891325A (zh) | 基于多接入边缘计算的网络切换方法和系统 | |
CN113254672A (zh) | 异常账号的识别方法、系统、设备及可读存储介质 | |
CN114116853A (zh) | 基于时序关联分析的数据安全分析方法及装置 | |
KR101872406B1 (ko) | 악성코드들의 위험도를 정량적으로 결정하는 장치 및 방법 |
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 |