CN110287702A - 一种二进制漏洞克隆检测方法及装置 - Google Patents

一种二进制漏洞克隆检测方法及装置 Download PDF

Info

Publication number
CN110287702A
CN110287702A CN201910457312.8A CN201910457312A CN110287702A CN 110287702 A CN110287702 A CN 110287702A CN 201910457312 A CN201910457312 A CN 201910457312A CN 110287702 A CN110287702 A CN 110287702A
Authority
CN
China
Prior art keywords
semantic
information
binary
vulnerability
emulation
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
Application number
CN201910457312.8A
Other languages
English (en)
Other versions
CN110287702B (zh
Inventor
高健
姜宇
顾明
孙家广
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN201910457312.8A priority Critical patent/CN110287702B/zh
Publication of CN110287702A publication Critical patent/CN110287702A/zh
Application granted granted Critical
Publication of CN110287702B publication Critical patent/CN110287702B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明实施例提供一种二进制漏洞克隆检测方法及装置,该方法包括获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。通过进行检测的过程无需获得源代码,具有普遍适用性;通过深度学习与语义仿真两阶段实现漏洞的相似性预测,确保了跨平台的漏洞检测结果的准确性,同时有效提升了检测效率。

Description

一种二进制漏洞克隆检测方法及装置
技术领域
本发明涉及软件检测技术领域,尤其涉及一种二进制漏洞克隆检测方法及装置。
背景技术
随着计算机软件行业的迅猛发展,越来越多的软件产品加速面世以满足人们的生活与工作的需求,迫使在软件开发过程中普遍存在着代码被复用的情形,以此提高软件开发效率。然而这种状况的存在导致不同软件产品发布后包含大量相同或相似的代码片段,被称为代码克隆。而伴随着代码克隆现象的普遍存在,使得包含漏洞的代码片段也可能在各种软件产品中被复用,最终导致漏洞也快速地蔓延。
此外,随着终端设备的普及,传统X86指令架构上的软件程序逐渐被移植到其他架构。给定相同的源代码,这些不同的编译环境将产生不同的二进制文件,使得漏洞的识别具有极大的挑战性。另一方面,如果攻击者能够利用特定漏洞,他可以利用它来攻击从相同源代码派生的所有二进制文件。
现有技术中,存在三类方法识别跨平台二进制漏洞,静态方法通常依赖二进制文件控制流图(Control Flow Graph;CFG)上的图匹配算法来识别与二进制代码相似的漏洞代码片段。然而,相同二进制函数的CFG在不同的编译配置下存在显着差异,常常导致不准确的检测结果。
动态方法通过在真实操作环境中监视二进制程序的运行时轨迹,并在轨迹之间执行等价性检查。这在一定程度上克服了静态方法识别误差较大的障碍,然而动态方法显著的固有时间开销导致了不现实的实际使用。
基于学习的方法作为一种新兴技术,由于较少的领域知识要求越来越多地被应用于二进制漏洞检测。由于大多数这些方法仅依赖于程序的CFG将汇编指令转换为数值特征向量,因此它们可以快速预测二进制函数是否包含漏洞。但这种方法的检测结果同静态方法一样是不精确的。
因此如何高效准确地进行二进制漏洞克隆检测已经成为了本领域亟待解决的问题。
发明内容
本发明实施例提供一种二进制漏洞克隆检测方法及装置,用以解决上述背景技术中存在的技术问题,或至少部分解决上述背景技术中存在的技术问题。
第一方面,本发明实施例提供一种二进制漏洞克隆检测方法,包括:获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;
根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;
根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
其中,在所述根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集的步骤之前,所述方法还包括:
对所述漏洞数据库信息和待测目标二进制信息进行反汇编操作,得到汇编漏洞数据库信息和汇编待测目标二进制信息;
根据汇编漏洞数据库信息和汇编待测目标二进制信息生成带标签语义流图集。
其中,根据汇编漏洞数据库信息和汇编待测目标二进制信息生成带标签语义流图集的步骤,具体包括:
根据所述汇编漏洞数据库信息中每个输入函数和汇编待测目标二进制信息中每个输入函数生成控制流图集;
根据内存位置定义使用规则,识别所述汇编漏洞数据库信息中每个输入函数和汇编待测目标二进制信息中每个输入函数的数据依赖关系,生成数据流图集;
将所述控制流图集和所述数据流图集进行组合,生成标签语义流图集。
其中,所述根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息的步骤,具体包括:
基于预设轻量级汇编指令特征对所述带标签语义流图集进行数值特征提取处理,得到初始漏洞数据库数值特征向量集和初始待测目标二进制函数数值特征向量集;
将所述初始漏洞数据库数值特征向量集和初始待测目标二进制函数数值特征向量集同时输入预设深度神经网络模型进行分析处理,得到目标相似性结果信息。
其中,所述根据所述目标相似性结果信息确定语义仿真输入信息的步骤,具体包括:
对目标相似性结果信息进行排序,得到目标相似性排序结果;
选取目标相似性排序结果相似性最高的k个目标相似性排序结果作为筛选结果信息,其中,1≤k≤M,M为目标相似性结果信息的数量;
将筛选结果信息所对应的待测目标二进制信息作为候选待测目标二进制信息;
将所述候选待测目标二进制信息和所述漏洞数据库信息作为语义仿真输入信息。
其中,所述根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果的步骤,具体包括:
对所述语义仿真输入信息进行识别,得到语义签名序列信息;
计算所述语义签名序列信息相似性,得到语义签名序列相似性信息;
对所述语义签名序列相似性信息进行排序,得到语义签名排序结果;
根据所述语义签名排序结果得到语义仿真输出结果。
其中,所述语义签名序列信息具体包括:输入值、输出值、比较操作码、比较操作数和库函数调用。
第二方面,本发明实施例提供一种二进制漏洞克隆检测装置,包括:
获取模块,用于获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;
分析模块,用于根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;
检测模块,用于根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述二进制漏洞克隆检测方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述二进制漏洞克隆检测方法的步骤。
本发明实施例提供的一种二进制漏洞克隆检测方法及装置,通过根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集,可以获取比现有方法更多的函数语义,有利于将其输入预设深度神经网络模型进行分析处理,且通过预设深度神经网络模型的分析处理可以有效识别出目标二进制信息中与漏洞数据库信息中相似度较高的候选函数,并将该目标二进制信息和漏洞数据库信息作为仿真输入信息,通过语义仿真准确识别的能力,进一步提高搜索精度,准确预测仿真输入信息中与漏洞数据库信息相似度较高的目标二进制信息,将其作为可疑漏洞,本申请进行检测的过程无需获得源代码,具有普遍适用性;通过深度学习与语义仿真两阶段实现漏洞的相似性预测,确保了跨平台的漏洞检测结果的准确性,同时有效提升了检测效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一实施例所描述的二进制漏洞克隆检测方法流程图;
图2为本发明一实施例所描述的标签语义流图示例图;
图3为本发明一实施例所描述的预设深度神经网络模型示意图;
图4为本发明一实施例所描述的获取语义签名序列示例图;
图5为本发明一实施例所描述的二进制漏洞克隆检测装置结构示意图;
图6为本发明一实施例所描述的电子设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明一实施例所描述的二进制漏洞克隆检测方法流程图,如图1所示,包括:
步骤S1,获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;
步骤S2,根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;
步骤S3,根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
具体的,本发明实施例中所描述的带标签语义流图集可以是根据控制流图CFG和数据流图(Data Flow Graph;DFG)构建的;CFG确定函数内基本块的可能执行顺序,DFG描述函数内数据的传递和使用。这两个图的组合得到的带标签语义流图使后续获取的函数语义可以缓和CFG在不同指令架构和编译优化策略下引入的二进制代码结构和语法差异。
本发明实施例中所描述的CFG可以借助反汇编软件,通过反汇编很容易的得到;本发明实施例中所描述的DFG可以利用定义-使用规则得到。
本发明实施例中所描述的带标签语义流图集包括多个漏洞数据库信息的带标签语义流图和多个待测目标二进制信息的带标签语义流图。
根据所述带标签语义流图集和预设深度神经网络模型进行分析处理时,首先要根据预设轻量级汇编指令特征对带标签语义流图集进行数值特征提取处理,即进行函数基本块特征提取,获取与函数对应的可以直接输入预设深度神经网络模型中的初始数值特征向量,即得到初始漏洞数据库数值特征向量集和初始待测目标二进制函数数值特征向量集。
然后再将初始漏洞数据库数值特征向量集和初始待测目标二进制函数数值特征向量集输入预设深度神经网络模型进行分析处理,得到表示漏洞函数的函数级嵌入向量和待测目标二进制函数的函数级嵌入向量;最后使用余弦函数Cosine计算这两个嵌入向量的相似性,确定待测目标二进制函数与漏洞函数的相似性,得到目标相似性结果信息。
然后从目标相似性结果信息中选取排名靠前的k个目标相似性结果,将漏洞数据库信息和k个目标相似性结果对应的待测目标二进制信息作为候选待测目标二进制信息,将候选待测目标二进制信息和漏洞数据库信息作为语义仿真输入信息。
对语义仿真输入信息进行识别,记录语义仿真输入信息每个函数的寄存器参数和栈参数;然后将一组随机整数序列用于给语义仿真输入信息函数参数赋值,对于每个函数,相同的随机整数序列依次分配给已识别的寄存器参数和栈参数;然后将语义仿真输入信息转化为语义签名,例如将每个汇编函数转换为保留指令语义的VEX-IR,每个VEX-IR语句仅具有一个语义并且适用于多个处理器指令集。基于统一的函数参数值,在统一的VEX-IR中间表示下仿真执行函数。
然后基于同一函数参数值后的语义仿真输入信息执行仿真,记录称为语义签名序列信息的动态执行轨迹,获得语义仿真输入信息的语义签名序列信息后,使用Jaccard相似性系数来计算语义仿真输入信息中每组漏洞数据库信息及其对应候选待测目标二进制信息的相似性,得到语义签名序列相似性信息,具体为:
J(A,B)=|A∩B|/|A∪B|;
其中,A是漏洞数据库信息的语义签名序列信息,B是候选待测目标二进制信息的语义签名序列信息。
对语义签名序列相似性信息进行排序,输出更准确的待测目标二进制信息作为最终的可疑漏洞信息。
本发明实施例通过根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集,有利于将其输入预设深度神经网络模型进行分析处理,且通过预设深度神经网络模型的分析处理可以有效识别出目标二进制信息中与漏洞数据库信息中相似度较高的候选函数,并将该目标二进制信息和漏洞数据库信息作为仿真输入信息,通过语义仿真准确识别的能力,准确预测仿真输入信息中与漏洞数据库信息相似度较高的目标二进制信息,将其作为可疑漏洞,本申请进行检测的过程无需获得源代码,具有普遍适用性;通过深度学习与语义仿真两阶段实现漏洞的相似性预测,确保了跨平台的漏洞检测结果的准确性,同时有效提升了检测效率。
在上述实施例的基础上,在所述根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集的步骤之前,所述方法还包括:
对所述漏洞数据库信息和待测目标二进制信息进行反汇编操作,得到汇编漏洞数据库信息和汇编待测目标二进制信息;
根据汇编漏洞数据库信息和汇编待测目标二进制信息生成带标签语义流图集。
具体的,本发明实施例反汇编操作可以通过常用的反汇编软件进行,得到具体的汇编表示形式的漏洞数据库信息和待测目标二进制信息,然后根据具体的汇编表示形式的漏洞数据库信息和待测目标二进制信息得到可以捕获更准确的函数语义。
本发明实施例通过反汇编操作,有利于后续步骤的进行,且生成带标签语义流图集可以捕获更准确的函数语义
在上述实施例的基础上,所述根据汇编漏洞数据库信息和汇编待测目标二进制信息生成带标签语义流图集的步骤,具体包括:
根据所述汇编漏洞数据库信息中每个输入函数和汇编待测目标二进制信息中每个输入函数生成控制流图集;
根据内存位置定义使用规则,识别所述汇编漏洞数据库信息中每个输入函数和汇编待测目标二进制信息中每个输入函数的数据依赖关系,生成数据流图集;
将所述控制流图集和所述数据流图集进行组合,生成标签语义流图集。
具体的,DFG的生成利用变量定义-使用规则,具体地,对于满足CFG的两个不同基本块的两个指令i和j,如果指令i先写入某一内存地址并且指令j读取相同的内存地址,那么本方法在这两个基本块之间创建一条DFG中的数据边。
图2为本发明一实施例所描述的标签语义流图示例图,如图2所示,包括:标记为0的实线边表示控制流边,标记为1的虚线边表示数据流变,内存地址“[ebp+var_C]”的存在形成了基本块1和2之间的数据边。将CFG和DFG组合在一起,并添加相应的标签形成本方法提及的标签语义流图。
本发明实施例通过构建CFG和DFG然后构建标签语义流图可以捕获更准确的函数语义,有利于检测的进行。
在上述实施例的基础上,所述根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息的步骤,具体包括:
基于预设轻量级汇编指令特征对所述带标签语义流图集进行优化处理,得到初始漏洞数据库数值特征向量集和初始待测目标二进制函数数值特征向量集;
将所述初始漏洞数据库数值特征向量集和初始待测目标二进制函数数值特征向量集同时输入预设深度神经网络模型进行分析处理,得到目标相似性结果信息。
具体的,本发明实施例中所描述的预设轻量级汇编指令特征是指用于对函数基本块特征提取的汇编指令,且可以在各种处理器架构和各种编译优化配置下对变化小的指令分类完成特征提取任务。
本发明实施例中基于预设轻量级汇编指令特征对所述带标签语义流图集进行优化处理具体可以是指首先计算带标签语义流图集中每个基本块中每类特征的数量,然后按顺序将它们排列成数值向量,最后将这些数值特征向量按照标签语义流图的结构形成初始带标签语义流图向量集。
例如,将初始带标签语义流图向量记为g=<X,C,D>,其中X,C和D分别是基本块顶点集,控制流边集和数据流边集,本发明实施例使用xi∈X表示顶点的初始数值特征向量。漏洞数据库信息和待测目标二进制信息分别生成图g1和g2,成对的g1和g2作为初始带标签语义流图向量集输入预设深度神经网络模型进行分析处理,得到目标相似性结果信息。
例如,本发明实施例提供如表1所述的8类预设轻量级汇编指令特征:
表1:基本块级指令分类
指令特征名 样例
栈操作指令数目 push,pop
算数指令数目 add,sub
逻辑指令数目 and,or
比较指令数目 test
库函数调用指令数目 call printf
无条件跳转指令的数目 jmp
条件跳转指令的数目 jne,jb
通用指令的数目 mov,lea
图3为本发明一实施例所描述的预设深度神经网络模型示意图,如图3所示,它包括一个输入层,T个隐藏层,一个输出层。在输入层中带标签语义流图向量g=<X,C,D>由3个顶点Xi,i∈{1,2,3}组成,其中每个顶点表示函数的一个基本块并包含基本块级初始数值特征向量xi,C(i)和D(i)分别表示顶点i的控制流边集和数据流边集。T个隐藏层中的每一个负责将结构化图信息映射为基本块级嵌入向量。图3中每个隐藏层节点表示为更新后的基本块级嵌入向量其中不同的t值对应不同的隐藏层。在第t个隐藏层迭代时,更新后由三个不同的输入部分组成:对应顶点Xi的初始数值特征向量xi(图3中的虚线箭头),通过控制流边集C(i)指向顶点Xi的上一轮输出的嵌入向量和及通过数据流边集D(i)指向顶点Xi的上一轮输出的嵌入向量和因此,更新后可由映射函数 表示,其中σcd是负责生成具有更强语义表示能力的两个非线性转换函数。σc和σd分别包含n层全连接网络,具体形式是σc=P1×ReLU(P2×…ReLU(Pn×lc)),σd=Q1×ReLU(Q2×…ReLU(Qn×ld)),其中n表示全连接网络的层数,Pi和Qi是全连接网络的参数矩阵。通过嵌入向量生成网络的T层迭代,每个顶点将在每层迭代时生成新的基本块级嵌入向量。这种迭代应用不仅遵循带标签语义流图的拓扑结构,而且还集成了函数基本块顶点之间的T跳交互,因此可以获取函数的语义向量。最后,在第T层通过公式将包括数据流依赖性和控制流依赖性的基本块嵌入向量聚合到一起形成表示整个函数语义的函数级嵌入向量简记为最后使用余弦函数Cosine计算这两个嵌入向量的相似性,得到目标相似性结果信息。
本发明实施例通过构建CFG和DFG然后构建带标签语义流图可以捕获更准确的函数语义,有利于检测的进行。
在上述实施例的基础上,所述根据所述目标相似性结果信息确定语义仿真输入信息的步骤,具体包括:
对目标相似性结果信息进行排序,得到目标相似性排序结果;
选取目标相似性排序结果相似性最高的k个目标相似性排序结果作为筛选结果信息,其中,1≤k≤M,M为目标相似性结果信息的数量;
将筛选结果信息所对应的待测目标二进制信息作为候选待测目标二进制信息;
将所述候选待测目标二进制信息和所述漏洞数据库信息作为语义仿真输入信息。
具体的,本发明实施例中所描述的排序是指将目标相似性结果从大到小进行排序;然后筛选排名靠前的k个目标相似性结果,作为筛选结果,将筛选结果信息所对应的待测目标二进制信息作为候选待测目标二进制信息,然后将候选待测目标二进制信息和所述漏洞数据库信息作为语义仿真输入信息。
本发明实施例通过对目标相似性结果进行排序,从而识别出待测目标二进制信息中与漏洞数据库信息相似的候选待测目标二进制信息,充分利用了语义学习组件的快速预测能力,有利于检测的进行。
在上述实施例的基础上,所述根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果的步骤,具体包括:
对所述语义仿真输入信息进行识别,得到语义签名序列信息;
计算所述语义签名序列信息相似性,得到语义签名序列相似性信息;
对所述语义签名序列相似性信息进行排序,得到语义签名排序结果;
根据所述语义签名排序结果得到语义仿真输出结果。
具体的,本发明实施例中对语义仿真输入信息进行识别,记录语义仿真输入信息每个函数的寄存器参数和栈参数。
例如,对于X86处理器指令集,函数的前三个参数可以是存储在EAX,EDX和ECX寄存器中的寄存器参数,多余的参数通过地址空间从高地址到低地址的程序栈传递。每个函数都有一个栈指针,指示函数栈的起始地址,当遍历汇编指令时,如果指令访问的栈地址大于栈起始地址,则相对于栈起始地址的地址偏移量被记录为栈参数。
对于每个函数,相同的随机整数序列依次分配给已识别的寄存器参数和栈参数;然后将语义仿真输入信息转化为语义签名,例如将每个汇编函数转换为保留指令语义的VEX-IR,然后基于同一函数参数值后的语义仿真输入信息执行仿真,记录称为语义签名序列信息的动态执行轨迹,获得语义仿真输入信息的语义签名序列信息。
对语义签名序列相似性信息进行排序,得到语义签名序列相似性排序信息,选取语义签名序列相似性排序信息中相似性最高的n个语义签名序列相似性,然后将该n个语义签名序列相似性所对应的候选待测目标二进制信息确定为可疑漏洞。
本发明实施例通过仿真测试准确预测能力,从候选待测目标二进制信息中准确识别出与漏洞数据库最相似的前n个待测目标二进制信息,从而准确识别出二进制漏洞。
在上述实施例的基础上,所述语义签名序列信息具体包括:输入值、输出值、比较操作码、比较操作数和库函数调用。
具体的,本发明实施例中所描述的语义签名序列信息可以帮助进一步高效的进行检索。
在上述实施例的基础上,图4为本发明一实施例所描述的获取语义签名序列示例图,如图4所示,该汇编函数只包含一个名为arg_0的栈参数,假设其相应的内存位置“ebp+arg_0”的值被赋予为3。输入值包含从被赋值的参数和数据区(例如.rodata区,.data区)的数据读,图4中的第4行和第15行的指令包含数据读,它们的语义信息被标记为“I value”;输出值由函数返回值和内存地址超出函数栈范围的内存写值组成,图4中的第17行是函数的输出值,它的语义签名被标记为“O value”;比较操作码指的是控制基本块跳转的条件,而比较操作数指的是用于比较的两个值,图4中的第6行是函数中的比较操作,它的语义签名被标记为“CC操作数操作码”;库函数调用记录函数仿真执行时对C语言标准库函数的使用,如图4中的第16行所示其语义签名被标记为“LC库函数名称”。
图5为本发明一实施例所描述的二进制漏洞克隆检测装置结构示意图,如图5所示,包括:获取模块510、分析模块520和检测模块530;其中,获取模块510用于获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;其中,分析模块520用于根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;其中,检测模块530用于根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
本发明实施例中所描述的装置是用于执行上述实施例所述方法的装置,具体实施例请参照上述方法实施例,此处不再赘述。
本发明实施例提供的一种二进制漏洞克隆检测装置,通过根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集,可以获取比现有方法更多的函数语义,有利于将其输入预设深度神经网络模型进行分析处理,且通过预设深度神经网络模型的分析处理可以有效识别出目标二进制信息中与漏洞数据库信息中相似度较高的候选函数,并将该目标二进制信息和漏洞数据库信息作为仿真输入信息,通过语义仿真准确识别的能力,进一步提高搜索精度,准确预测仿真输入信息中与漏洞数据库信息相似度较高的目标二进制信息,将其作为可疑漏洞,本申请进行检测的过程无需获得源代码,具有普遍适用性;通过深度学习与语义仿真两阶段实现漏洞的相似性预测,确保了跨平台的漏洞检测结果的准确性,同时有效提升了检测效率。
图6为本发明一实施例所描述的电子设备结构示意图,如图6所示,该电子设备可以包括:处理器(processor)610、通信接口(Communications Interface)620、存储器(memory)630和通信总线640,其中,处理器610,通信接口620,存储器630通过通信总线640完成相互间的通信。处理器610可以调用存储器630中的逻辑指令,以执行如下方法:获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
此外,上述的存储器630中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
本发明实施例提供一种非暂态计算机可读存储介质,该非暂态计算机可读存储介质存储服务器指令,该计算机指令使计算机执行上述实施例所提供上述方法,例如包括:获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
以上所描述的系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种二进制漏洞克隆检测方法,其特征在于,包括:
获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;
根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;
根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
2.根据权利要求1所述二进制漏洞克隆检测方法,其特征在于,在所述根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集的步骤之前,所述方法还包括:
对所述漏洞数据库信息和待测目标二进制信息进行反汇编操作,得到汇编漏洞数据库信息和汇编待测目标二进制信息;
根据汇编漏洞数据库信息和汇编待测目标二进制信息生成带标签语义流图集。
3.根据权利要求2所述二进制漏洞克隆检测方法,其特征在于,所述根据汇编漏洞数据库信息和汇编待测目标二进制信息生成带标签语义流图集的步骤,具体包括:
根据所述汇编漏洞数据库信息中每个输入函数和汇编待测目标二进制信息中每个输入函数生成控制流图集;
根据内存位置定义使用规则,识别所述汇编漏洞数据库信息中每个输入函数和汇编待测目标二进制信息中每个输入函数的数据依赖关系,生成数据流图集;
将所述控制流图集和所述数据流图集进行组合,生成标签语义流图集。
4.根据权利要求1所述二进制漏洞克隆检测方法,其特征在于,所述根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息的步骤,具体包括:
基于预设轻量级汇编指令特征对所述带标签语义流图集进行数值特征提取处理,得到初始带标签语义流图向量集;
将所述初始带标签语义流图向量集输入预设深度神经网络模型进行分析处理,得到目标相似性结果信息。
5.根据权利要求1所述二进制漏洞克隆检测方法,其特征在于,所述根据所述目标相似性结果信息确定语义仿真输入信息的步骤,具体包括:
对目标相似性结果信息进行排序,得到目标相似性排序结果;
选取目标相似性排序结果相似性最高的k个目标相似性排序结果作为筛选结果信息,其中,1≤k≤M,M为目标相似性结果信息的数量;
将筛选结果信息所对应的待测目标二进制信息作为候选待测目标二进制信息;
将所述候选待测目标二进制信息和所述漏洞数据库信息作为语义仿真输入信息。
6.根据权利要求5所述二进制漏洞克隆检测方法,其特征在于,所述根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果的步骤,具体包括:
对所述语义仿真输入信息进行识别,得到语义签名序列信息;
计算所述语义签名序列信息相似性,得到语义签名序列相似性信息;
对所述语义签名序列相似性信息进行排序,得到语义签名排序结果;
根据所述语义签名排序结果得到语义仿真输出结果。
7.根据权利要求6所述二进制漏洞克隆检测方法,其特征在于,所述语义签名序列信息具体包括:输入值、输出值、比较操作码、比较操作数和库函数调用。
8.一种二进制漏洞克隆检测装置,其特征在于,包括:
获取模块,用于获取漏洞数据库信息和待测目标二进制信息,根据所述漏洞数据库信息与待测目标二进制信息生成带标签语义流图集;
分析模块,用于根据所述带标签语义流图集和预设深度神经网络模型进行分析处理,得到目标相似性结果信息,根据所述目标相似性结果信息确定语义仿真输入信息;
检测模块,用于根据所述语义仿真输入信息进行语义仿真,得到语义仿真输出结果,根据所述语义仿真输出结果确定可疑漏洞。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述二进制漏洞克隆检测方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述二进制漏洞克隆检测方法的步骤。
CN201910457312.8A 2019-05-29 2019-05-29 一种二进制漏洞克隆检测方法及装置 Active CN110287702B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910457312.8A CN110287702B (zh) 2019-05-29 2019-05-29 一种二进制漏洞克隆检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910457312.8A CN110287702B (zh) 2019-05-29 2019-05-29 一种二进制漏洞克隆检测方法及装置

Publications (2)

Publication Number Publication Date
CN110287702A true CN110287702A (zh) 2019-09-27
CN110287702B CN110287702B (zh) 2020-08-11

Family

ID=68002845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910457312.8A Active CN110287702B (zh) 2019-05-29 2019-05-29 一种二进制漏洞克隆检测方法及装置

Country Status (1)

Country Link
CN (1) CN110287702B (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110943981A (zh) * 2019-11-20 2020-03-31 中国人民解放军战略支援部队信息工程大学 基于层次学习的跨架构漏洞挖掘方法
CN110990273A (zh) * 2019-11-29 2020-04-10 中国银行股份有限公司 克隆代码检测方法及装置
CN111177733A (zh) * 2019-12-30 2020-05-19 北京航空航天大学 一种基于数据流分析的软件补丁检测方法及装置
CN111475820A (zh) * 2020-04-28 2020-07-31 张皓天 基于可执行程序的二进制漏洞检测方法、系统及存储介质
CN111488579A (zh) * 2020-03-25 2020-08-04 腾讯科技(深圳)有限公司 漏洞检测方法、装置、电子设备和计算机可读存储介质
CN111639344A (zh) * 2020-07-31 2020-09-08 中国人民解放军国防科技大学 一种基于神经网络的漏洞检测方法及装置
CN111651773A (zh) * 2020-08-05 2020-09-11 成都无糖信息技术有限公司 一种二进制安全漏洞自动化挖掘方法
CN112308210A (zh) * 2020-10-27 2021-02-02 中国人民解放军战略支援部队信息工程大学 基于神经网络的跨架构二进制函数相似性检测方法及系统
CN114020628A (zh) * 2021-11-09 2022-02-08 中国工商银行股份有限公司 代码漏洞检测方法及装置
CN114610606A (zh) * 2022-02-25 2022-06-10 中国人民解放军国防科技大学 基于到达-定值分析的二进制模块相似性匹配方法及装置
CN116561764A (zh) * 2023-05-11 2023-08-08 上海麓霏信息技术服务有限公司 计算机信息数据交互处理系统及方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105868108A (zh) * 2016-03-28 2016-08-17 中国科学院信息工程研究所 基于神经网络的指令集无关的二进制代码相似性检测方法
CN108268777A (zh) * 2018-01-18 2018-07-10 中国人民大学 一种利用补丁信息进行未知漏洞发现的相似性检测方法
CN108446540A (zh) * 2018-03-19 2018-08-24 中山大学 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
CN108491228A (zh) * 2018-03-28 2018-09-04 清华大学 一种二进制漏洞代码克隆检测方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105868108A (zh) * 2016-03-28 2016-08-17 中国科学院信息工程研究所 基于神经网络的指令集无关的二进制代码相似性检测方法
CN108268777A (zh) * 2018-01-18 2018-07-10 中国人民大学 一种利用补丁信息进行未知漏洞发现的相似性检测方法
CN108446540A (zh) * 2018-03-19 2018-08-24 中山大学 基于源代码多标签图神经网络的程序代码抄袭类型检测方法与系统
CN108491228A (zh) * 2018-03-28 2018-09-04 清华大学 一种二进制漏洞代码克隆检测方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ZHIWU XU等: "CDGDroid:Android Malware Detection Based on Deep Learning using CFG and DFG", 《SPRINGER NATURE SWITZERLAND AG 2018》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110943981A (zh) * 2019-11-20 2020-03-31 中国人民解放军战略支援部队信息工程大学 基于层次学习的跨架构漏洞挖掘方法
CN110943981B (zh) * 2019-11-20 2022-04-08 中国人民解放军战略支援部队信息工程大学 基于层次学习的跨架构漏洞挖掘方法
CN110990273A (zh) * 2019-11-29 2020-04-10 中国银行股份有限公司 克隆代码检测方法及装置
CN110990273B (zh) * 2019-11-29 2024-04-23 中国银行股份有限公司 克隆代码检测方法及装置
CN111177733A (zh) * 2019-12-30 2020-05-19 北京航空航天大学 一种基于数据流分析的软件补丁检测方法及装置
CN111177733B (zh) * 2019-12-30 2022-06-21 北京航空航天大学 一种基于数据流分析的软件补丁检测方法及装置
CN111488579A (zh) * 2020-03-25 2020-08-04 腾讯科技(深圳)有限公司 漏洞检测方法、装置、电子设备和计算机可读存储介质
CN111475820B (zh) * 2020-04-28 2023-08-01 张皓天 基于可执行程序的二进制漏洞检测方法、系统及存储介质
CN111475820A (zh) * 2020-04-28 2020-07-31 张皓天 基于可执行程序的二进制漏洞检测方法、系统及存储介质
CN111639344A (zh) * 2020-07-31 2020-09-08 中国人民解放军国防科技大学 一种基于神经网络的漏洞检测方法及装置
CN111651773A (zh) * 2020-08-05 2020-09-11 成都无糖信息技术有限公司 一种二进制安全漏洞自动化挖掘方法
CN112308210A (zh) * 2020-10-27 2021-02-02 中国人民解放军战略支援部队信息工程大学 基于神经网络的跨架构二进制函数相似性检测方法及系统
CN114020628A (zh) * 2021-11-09 2022-02-08 中国工商银行股份有限公司 代码漏洞检测方法及装置
CN114610606B (zh) * 2022-02-25 2023-03-03 中国人民解放军国防科技大学 基于到达-定值分析的二进制模块相似性匹配方法及装置
CN114610606A (zh) * 2022-02-25 2022-06-10 中国人民解放军国防科技大学 基于到达-定值分析的二进制模块相似性匹配方法及装置
CN116561764A (zh) * 2023-05-11 2023-08-08 上海麓霏信息技术服务有限公司 计算机信息数据交互处理系统及方法

Also Published As

Publication number Publication date
CN110287702B (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
CN110287702A (zh) 一种二进制漏洞克隆检测方法及装置
US11689561B2 (en) Detecting unknown malicious content in computer systems
Tann et al. Towards safer smart contracts: A sequence learning approach to detecting security threats
CN109165510B (zh) 基于双通道卷积神经网络的Android恶意应用程序检测方法
CN111459799B (zh) 一种基于Github的软件缺陷检测模型建立、检测方法及系统
Jimenez et al. Vulnerability prediction models: A case study on the linux kernel
CN108491228A (zh) 一种二进制漏洞代码克隆检测方法及系统
Ullah et al. Clone detection in 5G-enabled social IoT system using graph semantics and deep learning model
CN109905385A (zh) 一种webshell检测方法、装置及系统
Pacioni et al. vortexR: an R package for post Vortex simulation analysis
Buinevich et al. Method and prototype of utility for partial recovering source code for low-level and medium-level vulnerability search
CN112685738A (zh) 一种基于多级投票机制的恶意混淆脚本静态检测方法
CN111400718B (zh) 一种系统漏洞与攻击的检测方法、装置及其相关设备
CN109298855A (zh) 一种网络靶场管理系统及其实现方法、装置、存储介质
Li et al. Eh-recommender: Recommending exception handling strategies based on program context
CN115022026A (zh) 一种区块链智能合约威胁检测装置及方法
CN108985052A (zh) 一种恶意程序识别方法、装置和存储介质
CN111400713A (zh) 基于操作码邻接图特征的恶意软件族群分类方法
CN111898134B (zh) 基于LSTM和BiLSTM的智能合约漏洞检测方法和装置
CN114064506A (zh) 一种基于深度神经网络的二进制程序模糊测试方法及系统
Murawski et al. A contextual equivalence checker for IMJ
CN115906091A (zh) 一种基于异构数据的软件安全漏洞严重度评估方法及系统
CN111190813B (zh) 基于自动化测试的安卓应用网络行为信息提取系统及方法
Feng et al. MagicMirror: Towards High-Coverage Fuzzing of Smart Contracts
CN113934813A (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