CN113468525B - 针对二进制程序的相似漏洞检测方法及装置 - Google Patents
针对二进制程序的相似漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN113468525B CN113468525B CN202110564173.6A CN202110564173A CN113468525B CN 113468525 B CN113468525 B CN 113468525B CN 202110564173 A CN202110564173 A CN 202110564173A CN 113468525 B CN113468525 B CN 113468525B
- Authority
- CN
- China
- Prior art keywords
- function
- vulnerability
- similar
- loophole
- functions
- 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
- G06F21/563—Static detection by source code analysis
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种针对二进制程序的相似漏洞检测方法及装置,根据已知漏洞函数以及对应的二进制文件、已知漏洞点,对待检测二进制文件中每一待检测函数进行粗粒度的相似漏洞函数筛选和细粒度的相似漏洞函数识别,得到与已知漏洞相似的相似漏洞函数。本发明通过引入已知漏洞点,结合使用函数与漏洞两方面的信息,不仅能够通过轻量级特征距离对待测函数集合进行粗粒度筛选,还能在轻量级特征的提取中不依赖于特定的指令集,同时特征受编译选项以及代码定制化重用影响较小,且能准确捕捉二进制代码的执行语义,从而有效地提高了检测的效率与准确度。
Description
技术领域
本发明涉及二进制程序漏洞挖掘与二进制代码相似性检测领域,具体涉及一种针对二进制程序的相似漏洞检测方法及装置,属计算机程序检测技术领域。
背景技术
随着全球互联网市场以及互联网技术的蓬勃发展,计算机软件已经逐渐应用到人们日常生活的方方面面,同时支撑着社会的正常运行。这些计算机软件数量增长迅速的同时,安全问题也愈演愈烈。对于计算机软件来说,为了开发便利,开发者通常会采用代码复用的方式进行软件开发。也就是开发者在不同系列产品或者设备上使用相同或者相似的源代码。计算机软件在提供功能的同时,也很可能存在着若干漏洞,比如缓冲区溢出漏洞,信息泄露漏洞,命令注入漏洞等等。由于代码复用在软件中广泛存在,那么一旦在某个程序中发现漏洞,其他所有复用了相同漏洞代码的产品和设备都将处于危险状态。
对于复用漏洞代码而产生的相似漏洞,理想状态下,当一个漏洞被发现之后,应该能够快速地找出其他设备和产品中的相似漏洞。但是,现实场景下的计算机软件,特别是商业软件和网络设备固件,通常具有如下特点:1.与硬件密切相关,厂商会根据设备或者产品特点逐个定制化软件;2.没有源码,只有二进制文件可用;3.在编译时拥有很多的编译配置选项,例如不同架构、不同的编译器和编译选项等,导致即使相同的源代码在不同的编译配置下可能编译生成非常不同的二进制代码。而且,为了较为全面地进行相似漏洞检测,检测的目标通常是规模较大的数据集。在这种条件下,很多已有的技术都不能直接使用,迫切需要有新的高效的解决方法来完成检测。
目前针对二进制程序的相似漏洞检测主要是基于二进制代码相似性检测。2014年,Costin在《A large-scale analysis ofthe security ofembedded firmwares》首次提出了针对大规模固件的安全分析。以二进制文件为检测粒度,使用简单的静态分析方法进行漏洞关联,人工参与度较高,缺乏对更一般的漏洞的检测能力。2015年Pewny在《Cross-architecture bug search in binary executables》首次提出了跨架构的二进制代码相似性检测方法。该论文采用提升中间语言表示,数值采样和最小哈希化等方法实现了跨架构的(x86,ARM,MIPS)基本块语义信息提取及对比,但该方法准确率并不理想。之后,Qian在《discovRE:Efficient Cross-Architecture Identification ofBugs in Binary Code》等人提出了一种结合使用函数数值特征和结构特征的跨架构已知漏洞检测方法discovRE。该方法首先使用k-Nearest Neighbors(kNN)算法针对函数的数值型特征快速地筛选出一部分相似的函数,缩减待匹配的候选函数数量。之后使用精确且耗时的图匹配算法对函数的控制流图进行相似度计算。之后Qian和Xu分别提出了《Scalable graph-based bugsearch for firmware images》和《Neural network-based graph embedding for cross-platform binary code similarity detection》,通过提取ACFG刻画函数的结构特征和数值特征,结合机器学习方法寻找相似函数。Liu在《αdiff:cross-version binary codesimilarity detection with dnn》使用深度神经网络通过提取函数内部特征、跨函数特征和跨模块特征等三种语义特征在不同版本的二进制文件中进行函数相似度检测。
但是,现有的相似漏洞检测方法存在一定的局限性。第一,现有的相似漏洞检测方法通常使用函数相似进行相似漏洞检测,然而函数相似与漏洞相似并不等价。现有方法根据某些函数特征判断函数相似,认为相似的函数存在相似漏洞,比如通过函数控制流图检测得到的相似漏洞函数,可能只是函数控制流图相似,并不存在相似漏洞。而且由于跨架构跨编译选项以及代码定制化复用的影响,存在相似漏洞的函数在现有方法看来不相似而产生漏报。第二,规模化能力的不足。现有的一些方法因为采用函数两两比较的检测策略,在面对大规模数据时,时间开销过大。此外,由于无源码、跨架构跨编译优化选项以及代码定制化复用情况的存在,导致一些具有规模化检测能力的方法也不再适用。
由此可见,现有的相似漏洞检测方法存在准确度低、规模化能力不足等问题。
发明内容
本发明针对现有的相似漏洞检测方法所存在的准确度低、规模化能力不足等问题,提供一种针对二进制程序的相似漏洞检测方法及装置,其目的在于,对无源码、跨架构、跨编译选项以及代码定制化重用情况下的二进制程序,能够提高检测的准确度,同时在数据规模较大时,能够提高检测的效率,解决现有的相似漏洞检测方法的上述局限和不足。
为实现上述目的,本发明采用如下技术方案:
一种针对二进制程序的相似漏洞检测方法,其步骤包括:
1)获取若干已知漏洞函数及各已知漏洞函数的漏洞点、包含已知漏洞函数的二进制文件,提取各二进制文件的函数调用图,得到每一已知漏洞函数及该漏洞函数的父函数与子函数的轻量级特征向量;
2)恢复每一已知漏洞函数的控制流图,并根据控制流图,获取该已知漏洞函数的漏洞特征;
3)遍历待检测二进制文件的函数调用图,获取每一待检测函数的轻量级特征向量,并通过计算每一待检测函数与各已知漏洞函数的轻量级特征向量距离,得到第一潜在相似漏洞函数;
4)依据待检测二进制文件的函数调用图,获取第一潜在相似漏洞函数的父函数与子函数的轻量级特征向量,并与每一已知漏洞函数的父函数及子函数的轻量级特征向量进行对比,得到第二潜在相似漏洞函数;
5)根据各已知漏洞函数的漏洞点,定位第二潜在相似漏洞函数中的潜在相似漏洞点,获取候选相似漏洞函数,并恢复每一候选相似漏洞函数的控制流图,获取每一候选相似漏洞函数的漏洞特征;
6)对比已知漏洞函数与候选相似漏洞函数中漏洞特征的执行语义,得到相似漏洞函数。
进一步地,轻量级特征向量包括:入度、出度、调用的导入函数集合和引用的字符串常量集合。
进一步地,通过以下步骤得到每一已知漏洞函数的轻量级特征向量距离:
1)分别计算每一已知漏洞函数在入度、出度、调用的导入函数集合和引用的字符串常量集合四个维度上的距离;
2)根据各维度上的距离,组成一个四维向量;
3)计算该四维向量与原点的加权欧氏距离,得到各已知漏洞函数的轻量级特征向量距离。
进一步地,采用曼哈顿距离,计算入度及出度的距离。
进一步地,采用杰卡德距离,计算调用的导入函数集合及引用的字符串常量集合的距离。
进一步地,通过以下步骤获取该已知漏洞函数的已知漏洞特征:
1)根据控制流图进行前向分析,生成已知漏洞函数的数据流图,并根据控制流图,生成控制依赖图;
2)根据漏洞点在数据流图上做后向切片,在后向切片中找出数据定值点之后,对数据定值点做前向切片,获取数据的所有引用点,得到数据流特征。
3)根据漏洞点,在控制依赖图上对漏洞点的所有控制依赖节点的条件变量进行后向切片,得到控制流特征;
4)综合数据流特征与控制流特征,得到已知漏洞特征。
进一步地,通过以下策略定位第二潜在相似漏洞函数中的潜在相似漏洞点:
1)当漏洞点的类型为函数调用时,通过查找第二潜在相似漏洞函数中对应的子函数调用位置,定位第二潜在相似漏洞函数中的潜在相似漏洞点,包括:
1.1)当被调用的函数为导入函数时,通过函数名称在第二潜在相似漏洞函数中找到相应的调用位置;
1.2)当被调用的函数为自定义函数时,获取第二潜在相似漏洞函数中各子函数的轻量级特征向量,计算各子函数与第二潜在相似漏洞函数的轻量级特征向量相似度,并选取最相似的子函数作为潜在的相似漏洞点;
2)当漏洞点类型为普通指令时,根据已知漏洞函数中漏洞点所在的基本块,计算已知漏洞函数的漏洞类型,并依据漏洞类型定位第二潜在相似漏洞函数中的潜在相似漏洞点。
进一步地,通过以下步骤对比已知漏洞函数与候选相似漏洞函数中漏洞特征的执行语义:
1)对已知漏洞函数及候选相似漏洞函数分别模拟执行汇编代码,提取各汇编代码的输入输出关系;
2)通过随机设置输入序列,记录对应的输出序列;
3)将所有的输入输出序列作为执行语义信息,并通过对比输入输出序列,计算已知漏洞函数与候选相似漏洞函数中漏洞特征的相似度。
一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述所述的方法。
一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机以执行上述所述的方法。
与现有技术相比,本发明具有以下优势:
1)通过引入已知漏洞点,结合使用函数与漏洞两方面的信息,有效地提高了检测的效率与效果;
2)计算待测函数与已知漏洞函数的轻量级特征距离对待测函数集合进行筛选,提高了检测效率;
3)轻量级特征的提取不依赖于特定的指令集,同时特征受编译选项以及代码定制化重用影响较小,而且模拟执行准确捕捉二进制代码的执行语义,提高了相似漏洞检测的准确度。
附图说明
图1为方案流程示意图。
图2为代码特征提取流程图。
图3为漏洞特征提取示意图。
图4为漏洞特征提取示例。
图5为轻量级特征距离总体计算流程示意图。
图6为使用模拟执行对比代码语义示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的整体思路在于,以已知漏洞为输入,人工提供已知漏洞函数以及对应的二进制文件,和已知漏洞点,经过待测函数代码特征提取、已知漏洞特征提取以及两阶段的相似漏洞函数识别等步骤,最终输出与已知漏洞相似的相似漏洞函数。
本发明实施例公开的整体流程示意图如图1所示,该方法具体实施方式如下:
(1)待测函数代码特征提取。使用IDA插件实现对二进制文件逆向分析,轻量级特征方面提取每个二进制文件中所有函数的特征信息——出度、入度、导入函数以及常量字符串引用,从函数调用图方面,提取父函数、子函数信息,并将其存入数据库中。代码特征提取的流程如图2所示。
入度出度是指待测函数在函数调用图中的入度出度。入度是指待测函数的父函数数量,出度是指待测函数的子函数数量。导入函数属于模块间特征,属于待测函数调用的子函数。引用的字符串常量属于待测函数的数据引用特征已知漏洞特征提取
(2)已知漏洞特征提取。以已知漏洞点作为初始点,从数据流和控制流两方面提取漏洞特征,并标记已知漏洞特征中的导入函数和字符串常量。引入程序切片技术,去除已知漏洞函数中与漏洞无关的语句,使用切片生成的漏洞特征进行相似漏洞检测。相比函数相似的方法,漏洞特征的粒度较小,准确捕捉漏洞相关的特征。漏洞特征提取的过程如图3所示。漏洞特征提取算法如下:
a)恢复已知漏洞函数的控制流图。
b)根据控制流图,进行前向分析生成已知漏洞函数的数据流图,并且根据控制流图生成控制依赖图。
c)根据已知漏洞点,在数据流图上提取数据流特征。首先根据已知漏洞点做后向切片,在后向切片中找出数据定值点之后,对数据定值点做前向切片,来获取此数据的所有引用点。
d)根据已知漏洞点,在控制依赖图上对已知漏洞点的所有控制依赖节点的条件变量进行后向切片。
数据流特征代表了相关数据的操作,包括读取以及写入。数据流特征的提取借助于数据流图DFG(data flow graph),数据流图根据数据的读写关系将每条指令都与彼此关联起来。通过在数据流图上遍历use-def chains以及def-use chains可以获取一个变量的前向数据切片以及后向数据切片。变量可以是寄存器变量,也可以是内存变量。为了最大化漏洞上下文信息,数据流特征不仅提取数据的定值点,也提取数据的引用点。
控制流特征代表了与漏洞相关的执行路径特征。控制流特征的提取是以控制依赖图CDG(control dependency graph)为基础,控制依赖图记录了节点之间的控制依赖关系,X节点控制依赖于Y节点,意味着X节点是否能得到执行取决于Y节点的执行结果。因此可以通过控制依赖图,提取漏洞点的所有控制依赖节点。由于控制依赖图是由控制流图转换而来的,因此控制依赖图的节点为基本块。而将整个基本块作为漏洞特征,会产生很多冗余信息。因此只将控制依赖节点中的条件变量加入到漏洞特征中。同时为了提取更全面的上下文信息,将条件变量的后向数据流切片加入到漏洞特征中。
在进行数据流切片的时候,往往会遇到过程间调用,为了能够更全面地提取漏洞上下文,本发明采用保守的策略,提取相关函数调用的所有参数及返回值的数据流切片。
最终的漏洞特征提取结果为与漏洞相关的指令集合,漏洞特征提取示例如图4所示。
(3)两阶段的相似漏洞函数识别。包括粗粒度的相似漏洞函数筛选和细粒度的相似漏洞函数识别两个阶段。
在粗粒度的相似漏洞函数筛选阶段,取出数据库中的每一个待测函数,如图5所示,计算每一个待测函数与已知漏洞函数的轻量级特征距离,如果此距离小于预设的阈值就认为此候选函数为潜在相似漏洞函数,对其进行下一阶段的细粒度相似漏洞函数识别,否则丢弃此待测函数。粗粒度的相似漏洞函数筛选包括:
首先从数据库中取出待测函数集合以及其轻量级特征;对轻量级特征中的每一个特征,都计算待测函数与已知漏洞函数在此特征上的距离;四个特征的距离组成一个四维向量,计算此四维向量与原点的加权欧氏距离,作为待测函数与已知漏洞函数的轻量级特征距离;当此距离大于预设的阈值,丢弃此待测函数,以此实现对待测函数集合的筛选。
特征距离计算方式为:对于入度出度这种数字型特征,采用曼哈顿距离;对于导入函数和字符串常量等集合型特征,采用杰卡德距离,具体公式如下,其中Sf、Sg分别是待测函数和已知漏洞函数导入函数集合或者字符串常量集合,inter(Sf,Sg)是两个集合的交集,union(Sf,Sg)是两个集合的并集,w(xi)和w(yj)为经过改造的TF-IDF赋权算法计算得到的权重。
改造的TF-IDF算法为:将TF-IDF算法中的TF简化为两个常量,C1和C2,并且C1>C2,当集合中的某个元素与已知漏洞有关联时,就将此元素的TF权重值设置为C2,与漏洞不相关的元素的TF值取C1。
在细粒度的相似漏洞函数识别阶段,首先为了进一步减少候选函数规模,提高相似漏洞检测的效率,避免进行不必要的比对以及减少可能的误报,使用函数调用图提供的更丰富的上下文信息对候选函数进行进一步的筛选。
函数上下文是指在函数调用图中以待匹配函数为中心,与其有调用关系的函数构成的调用子图。为了减轻时间开销,只考虑与候选函数及已知漏洞函数有直接调用关系的父函数和子函数。对于函数上下文的相似度计算,是以函数轻量级特征相似度为基础,分别计算候选函数与已知漏洞函数的父函数集合及子函数集合的相似程度。特别地,对于子函数集合的相似度,只将已知漏洞函数中的与漏洞特征相关的子函数集合与候选函数的子函数集合进行匹配。当候选函数的上下文与已知漏洞函数的上下文非常相似时,那么此候选函数很有可能是相似漏洞函数。
之后根据已知漏洞函数的漏洞点定位候选函数中的潜在相似漏洞点。漏洞点,也就是漏洞触发的位置,一般来说,根据漏洞类型的不同,具有不同的特征。针对网络设备中常见的缓冲区溢出漏洞、命令注入漏洞、格式化字符串漏洞以及空指针解引用漏洞等进行分析,将漏洞点根据其特征分为两种类型:函数调用以及普通指令。潜在相似漏洞点定位算法如下:
a)已知漏洞点类型为函数调用。此时对潜在相似漏洞点的定位将不区分漏洞类型。只需找到候选函数中对应的子函数调用位置。当被调用的函数为导入函数,可以直接通过函数名称在候选函数中找到相应的调用位置,将其看作潜在的相似漏洞点;当被调用的函数为自定义函数,使用粗粒度筛选部分的轻量特征对候选函数中的子函数进行相似度排序,取最相似的子函数作为潜在的相似漏洞点。
b)已知漏洞点类型为普通指令。此时根据漏洞类型采用不同的定位方式。不同的漏洞类型一般会使用不同类型的指令,例如缓冲区溢出指令一般发生在内存写入指令,空指针解引用漏洞一般发生在内存解引用指令。为了定位具体的指令,先根据已知漏洞函数中漏洞点所在的基本块,使用模拟执行的方法,取最相似的基本块,然后按照漏洞类型定位可能的指令作为潜在的相似漏洞点。
对每一个包含潜在相似漏洞点的候选函数提取漏洞特征,与步骤2相似,不同之处在于针对的是潜在相似漏洞点。最后使用模拟执行的方法对已知漏洞特征和潜在相似漏洞特征的执行语义进行比对,有效地跨架构跨编译优化选项检测相似漏洞的存在。如图6所示,首先采用符号执行的方法提取汇编指令的符号化的输入输出表达式。初始时寄存器、内存均为未初始化状态,当被访问时,会赋予其一个符号值,并记录被访问的地址或者寄存器号。由于执行的指令为基本块的子集,因此不会有指令跳转。符号执行完成之后,对应的输入输出关系会被记录。首先对输入输出表达式正规化,也就是进行常量替换、地址偏移消除。随后使用IO取样的方法对正规化之后的输入输出表达式提取语义信息。在IO取样时根据输入输出值对表达式集合进行去重,以去除“中间结果“的影响。去重之后,就可以最大程度上屏蔽架构差异。通过随机设置输入序列,记录对应的输出序列。将所有的输入输出序列作为漏洞特征的执行语义信息,通过对比输入输出序列计算两个漏洞特征的相似度。
最后,将本发明的检测方法与当前代表性工具alphadiff、bingo进行对比,结果如表1所示,第一列为漏洞标识,第二列为目标相似漏洞函数数量,代表理想情况下能够检测到的标注的相似漏洞函数数量。后面六列依次为Alphadiff、Bingo以及本文方法SVFinder的Recall@1和Recall@5结果。从召回率平均值来看,在Recall@1情况下,SVFinder比Alphadiff和Bingo分别高18.75%和10.77%,在Recall@5情况下,SVFinder比Alphadiff和Bingo分别高29.75%和13.41%。Recall@K表示在topK的标准下,随机选取一个已知漏洞函数能检测到的目标相似漏洞函数占全部目标相似漏洞函数数量的百分比。
表1
提供以上实施例仅仅是为了描述本发明的目的,而并非要限制本发明的范围。本发明的范围由所附权利要求限定。不脱离本发明的精神和原理而做出的各种等同替换和修改,均应涵盖在本发明的范围之内。
Claims (8)
1.一种针对二进制程序的相似漏洞检测方法,其步骤包括:
1)获取若干已知漏洞函数及各已知漏洞函数的漏洞点、包含已知漏洞函数的二进制文件,提取各二进制文件的函数调用图,得到每一已知漏洞函数及该漏洞函数的父函数与子函数的轻量级特征向量;
2)恢复每一已知漏洞函数的控制流图,并根据控制流图,获取该已知漏洞函数的漏洞特征;所述根据控制流图,获取该已知漏洞函数的漏洞特征,包括:
根据控制流图进行前向分析,生成已知漏洞函数的数据流图,并根据控制流图,生成控制依赖图;
根据漏洞点在数据流图上做后向切片,在后向切片中找出数据定值点之后,对数据定值点做前向切片,获取数据的所有引用点,得到数据流特征;
根据漏洞点,在控制依赖图上对漏洞点的所有控制依赖节点的条件变量进行后向切片,得到控制流特征;
综合数据流特征与控制流特征,得到已知漏洞特征;
3)遍历待检测二进制文件的函数调用图,获取每一待检测函数的轻量级特征向量,并通过计算每一待检测函数与各已知漏洞函数的轻量级特征向量距离,得到第一潜在相似漏洞函数;
4)依据待检测二进制文件的函数调用图,获取第一潜在相似漏洞函数的父函数与子函数的轻量级特征向量,并与每一已知漏洞函数的父函数及子函数的轻量级特征向量进行对比,得到第二潜在相似漏洞函数;
5)根据各已知漏洞函数的漏洞点,定位第二潜在相似漏洞函数中的潜在相似漏洞点,获取候选相似漏洞函数,并恢复每一候选相似漏洞函数的控制流图,获取每一候选相似漏洞函数的漏洞特征;其中,所述根据各已知漏洞函数的漏洞点,定位第二潜在相似漏洞函数中的潜在相似漏洞点,包括:
当漏洞点的类型为函数调用时,通过查找第二潜在相似漏洞函数中对应的子函数调用位置,定位第二潜在相似漏洞函数中的潜在相似漏洞点,包括:
当被调用的函数为导入函数时,通过函数名称在第二潜在相似漏洞函数中找到相应的调用位置;
当被调用的函数为自定义函数时,获取第二潜在相似漏洞函数中各子函数的轻量级特征向量,计算各子函数与第二潜在相似漏洞函数的轻量级特征向量相似度,并选取最相似的子函数作为潜在的相似漏洞点;
当漏洞点类型为普通指令时,根据已知漏洞函数中漏洞点所在的基本块,计算已知漏洞函数的漏洞类型,并依据漏洞类型定位第二潜在相似漏洞函数中的潜在相似漏洞点;
6)对比已知漏洞函数与候选相似漏洞函数中漏洞特征的执行语义,得到相似漏洞函数。
2.如权利要求1所述的方法,其特征在于,轻量级特征向量包括:入度、出度、调用的导入函数集合和引用的字符串常量集合。
3.如权利要求2所述的方法,其特征在于,通过以下步骤得到每一已知漏洞函数的轻量级特征向量距离:
1)分别计算每一已知漏洞函数在入度、出度、调用的导入函数集合和引用的字符串常量集合四个维度上的距离;
2)根据各维度上的距离,组成一个四维向量;
3)计算该四维向量与原点的加权欧氏距离,得到各已知漏洞函数的轻量级特征向量距离。
4.如权利要求3所述的方法,其特征在于,采用曼哈顿距离,计算入度及出度的距离。
5.如权利要求3所述的方法,其特征在于,采用杰卡德距离,计算调用的导入函数集合及引用的字符串常量集合的距离。
6.如权利要求1所述的方法,其特征在于,通过以下步骤对比已知漏洞函数与候选相似漏洞函数中漏洞特征的执行语义:
1)对已知漏洞函数及候选相似漏洞函数分别模拟执行汇编代码,提取各汇编代码的输入输出关系;
2)通过随机设置输入序列,记录对应的输出序列;
3)将所有的输入输出序列作为执行语义信息,并通过对比输入输出序列,计算已知漏洞函数与候选相似漏洞函数中漏洞特征的相似度。
7.一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行权利要求1-6中任一所述方法。
8.一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行如权利要求1-6中任一所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110564173.6A CN113468525B (zh) | 2021-05-24 | 2021-05-24 | 针对二进制程序的相似漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110564173.6A CN113468525B (zh) | 2021-05-24 | 2021-05-24 | 针对二进制程序的相似漏洞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113468525A CN113468525A (zh) | 2021-10-01 |
CN113468525B true CN113468525B (zh) | 2023-06-27 |
Family
ID=77871225
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110564173.6A Active CN113468525B (zh) | 2021-05-24 | 2021-05-24 | 针对二进制程序的相似漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113468525B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115033895B (zh) * | 2022-08-12 | 2022-12-09 | 中国电子科技集团公司第三十研究所 | 一种二进制程序供应链安全检测方法及装置 |
CN115640577B (zh) * | 2022-09-20 | 2023-11-14 | 中国人民解放军国防科技大学 | 一种针对二进制物联网固件程序的漏洞检测方法和系统 |
CN115563627B (zh) * | 2022-12-06 | 2023-03-14 | 中国电子科技集团公司第三十研究所 | 一种基于人机协同的二进制程序漏洞静态分析方法 |
CN117556431B (zh) * | 2024-01-12 | 2024-06-11 | 北京北大软件工程股份有限公司 | 一种混合软件漏洞分析方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110414238A (zh) * | 2019-06-18 | 2019-11-05 | 中国科学院信息工程研究所 | 同源二进制代码的检索方法及装置 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106575337A (zh) * | 2014-08-20 | 2017-04-19 | 日本电信电话株式会社 | 漏洞发现装置、漏洞发现方法以及漏洞发现程序 |
CN105357063B (zh) * | 2015-12-14 | 2019-09-10 | 金润方舟科技股份有限公司 | 一种网络空间安全态势实时检测方法 |
CN108108622B (zh) * | 2017-12-13 | 2021-03-16 | 上海交通大学 | 基于深度卷积网络和控制流图的漏洞检测系统 |
CN108268777B (zh) * | 2018-01-18 | 2020-06-30 | 中国人民大学 | 一种利用补丁信息进行未知漏洞发现的相似性检测方法 |
CN109525556B (zh) * | 2018-10-18 | 2022-01-11 | 中国电力科学研究院有限公司 | 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 |
CN110147235B (zh) * | 2019-03-29 | 2021-01-01 | 中国科学院信息工程研究所 | 一种源代码与二进制代码间的语义比对方法和装置 |
CN111026663B (zh) * | 2019-12-09 | 2023-06-09 | 支付宝知识产权控股公司 | 一种软件缺陷检测方法、装置、计算机设备和存储介质 |
-
2021
- 2021-05-24 CN CN202110564173.6A patent/CN113468525B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110414238A (zh) * | 2019-06-18 | 2019-11-05 | 中国科学院信息工程研究所 | 同源二进制代码的检索方法及装置 |
CN111783100A (zh) * | 2020-06-22 | 2020-10-16 | 哈尔滨工业大学 | 基于图卷积网络对代码图表示学习的源代码漏洞检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113468525A (zh) | 2021-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113468525B (zh) | 针对二进制程序的相似漏洞检测方法及装置 | |
CN110245496B (zh) | 一种源代码漏洞检测方法及检测器和其训练方法及系统 | |
CN109697162B (zh) | 一种基于开源代码库的软件缺陷自动检测方法 | |
CN106295335B (zh) | 一种面向嵌入式设备的固件漏洞检测方法及系统 | |
CN109241740B (zh) | 恶意软件基准测试集生成方法及装置 | |
CN108268777B (zh) | 一种利用补丁信息进行未知漏洞发现的相似性检测方法 | |
CN111259388A (zh) | 一种基于图卷积的恶意软件api调用序列检测方法 | |
CN111475820A (zh) | 基于可执行程序的二进制漏洞检测方法、系统及存储介质 | |
CN110750297B (zh) | 一种基于程序分析和文本分析的Python代码参考信息生成方法 | |
CN116578980A (zh) | 基于神经网络的代码分析方法及其装置、电子设备 | |
Sun et al. | Ui components recognition system based on image understanding | |
CN111324893B (zh) | 基于敏感模式的安卓恶意软件的检测方法及后台系统 | |
CN113468524A (zh) | 基于rasp的机器学习模型安全检测方法 | |
CN116975881A (zh) | 一种基于llvm的漏洞细粒度定位方法 | |
CN115438341A (zh) | 提取代码循环计数器的方法、装置、存储介质和电子设备 | |
CN112464237B (zh) | 一种静态代码安全诊断方法及装置 | |
CN114492366A (zh) | 二进制文件的分类方法、计算设备及存储介质 | |
JP6955162B2 (ja) | 解析装置、解析方法および解析プログラム | |
Ouyang et al. | Binary vulnerability mining based on long short-term memory network | |
CN112446026A (zh) | 一种恶意软件的检测方法、装置及存储介质 | |
CN114398069B (zh) | 一种基于交叉指纹分析的公共组件库精确版本识别方法及系统 | |
CN112860544B (zh) | 一种代码检测方法、装置、设备和计算机可读存储介质 | |
Incerto et al. | Statistical learning of markov chains of programs | |
Zhang et al. | WELL: Applying bug detectors to bug localization via weakly supervised learning | |
Hazimeh | To Infinity, and Beyond (Coverage) |
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 |