CN116415255A - 一种系统漏洞检测方法及装置 - Google Patents

一种系统漏洞检测方法及装置 Download PDF

Info

Publication number
CN116415255A
CN116415255A CN202310391696.4A CN202310391696A CN116415255A CN 116415255 A CN116415255 A CN 116415255A CN 202310391696 A CN202310391696 A CN 202310391696A CN 116415255 A CN116415255 A CN 116415255A
Authority
CN
China
Prior art keywords
control flow
determining
flow graph
user program
processing unit
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.)
Pending
Application number
CN202310391696.4A
Other languages
English (en)
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.)
Asiainfo Technologies (chengdu) Inc
Original Assignee
Asiainfo Technologies (chengdu) Inc
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 Asiainfo Technologies (chengdu) Inc filed Critical Asiainfo Technologies (chengdu) Inc
Priority to CN202310391696.4A priority Critical patent/CN116415255A/zh
Publication of CN116415255A publication Critical patent/CN116415255A/zh
Pending legal-status Critical Current

Links

Images

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
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)

Abstract

本申请公开了一种系统漏洞检测方法及装置,涉及计算机领域,能够解决现阶段漏洞检测方案存在的检测滞后、误报多的问题,包括:确定用户程序的安全边界;确定用户程序的运行时执行流;根据预设对比算法,确定安全边界与运行时执行流之间的相似度;在安全边界与运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定用户程序是否存在系统漏洞。本申请用于用户程序的系统漏洞检测。

Description

一种系统漏洞检测方法及装置
技术领域
本申请涉及计算机领域,尤其涉及一种系统漏洞检测方法及装置。
背景技术
随着互联网的普及,各类编程语言以及对应的软件也随之流行。由于编程语言本身存在一定的安全性问题,再加上开发者水平的参差不齐,导致了大量软件在逻辑设计上存在缺陷。而这些存在缺陷的软件程序在运行时,会产生一定的系统漏洞。这些漏洞往往随着软件发布而被攻击者发现利用,最终导致计算机被攻击者控制、文件资料被盗取、计算资源被占用等后果。
发明内容
本申请提供一种系统漏洞检测方法及装置,能够解决现阶段漏洞检测方案存在的检测滞后、误报多的问题。
第一方面,本申请提供一种系统漏洞检测方法,该方法包括:确定用户程序的安全边界;确定用户程序的运行时执行流;根据预设对比算法,确定安全边界与运行时执行流之间的相似度;在安全边界与运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定用户程序是否存在系统漏洞。
基于上述技术方案,本申请通过确定用户程序的静态控制流图来制定安全边界,通过程序运行时的汇编代码得到程序的运行时执行流,进而根据安全边界与运行时执行流的相似度是否小于预设阈值,结合预设漏洞模式库对实际运行的用户程序进行监控。由此,能够实时准确地检测承载用户程序的软件在运行过程中存在的漏洞,在极大地提高了准确性的同时,减少了误报概率,防止漏洞被攻击者利用,提高了用户程序在运行时的安全性。
在一种可能的实现方式中,确定用户程序的安全边界,具体包括:反汇编用户程序,确定汇编代码;对汇编代码进行基本块分析,确定多个第一基本块;根据多个第一基本块和多个第一基本块之间的执行程序,确定静态控制流图;将静态控制流图确定为安全边界。
在一种可能的实现方式中,确定运行时执行流,具体包括:监控用户程序的进程,获取用户程序的进程的代码段内容;对代码段内容进行基本块识别和分析,确定多个第二基本块;根据多个第二基本块和多个第二基本块之间的执行程序,确定动态控制流图;将动态控制流图确定为运行时执行流。
在一种可能的实现方式中,预设对比算法包括shingling算法和simHash算法;根据预设对比算法,确定安全边界与运行时执行流之间的相似度,具体包括:根据shingling算法,分别确定静态控制流图和动态控制流图的向量加权和;根据simHash算法和向量加权和,确定静态控制流图和动态控制流图的simHash值;确定静态控制流图的simHash值与动态控制流图的simHash值之间的海明距离;根据海明距离,确定安全边界与运行时执行流之间的相似度。
在一种可能的实现方式中,根据预设漏洞模式库判定用户程序是否存在系统漏洞,具体包括:获取静态控制流图的节点集合;对于节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到节点集合对应的汇编操作序列集合;对于汇编操作序列集合中每个汇编操作序列,确定每个汇编操作序列在预设漏洞模式库中的相似度;若有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值,则确定用户程序存在系统漏洞。
第二方面,本申请提供一种系统漏洞检测装置,该装置包括:处理单元;处理单元,用于确定用户程序的安全边界;处理单元,还用于确定用户程序的运行时执行流;处理单元,还用于根据预设对比算法,确定安全边界与运行时执行流之间的相似度;处理单元,还用于在安全边界与运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定用户程序是否存在系统漏洞。
在一种可能的实现方式中,处理单元,还用于反汇编用户程序,确定汇编代码;处理单元,还用于对汇编代码进行基本块分析,确定多个第一基本块;处理单元,还用于根据多个第一基本块和多个第一基本块之间的执行程序,确定静态控制流图;处理单元,还用于将静态控制流图确定为安全边界。
在一种可能的实现方式中,处理单元,还用于监控用户程序的进程,获取用户程序的进程的代码段内容;处理单元,还用于对代码段内容进行基本块识别和分析,确定多个第二基本块;处理单元,还用于根据多个第二基本块和多个第二基本块之间的执行程序,确定动态控制流图;处理单元,还用于将动态控制流图确定为运行时执行流。
在一种可能的实现方式中,处理单元,还用于根据shingling算法,分别确定静态控制流图和动态控制流图的向量加权和;处理单元,还用于根据simHash算法和向量加权和,确定静态控制流图和动态控制流图的simHash值;处理单元,还用于确定静态控制流图的simHash值与动态控制流图的simHash值之间的海明距离;处理单元,还用于根据海明距离,确定安全边界与运行时执行流之间的相似度。
在一种可能的实现方式中,获取单元;获取单元,用于获取静态控制流图的节点集合;处理单元,还用于对于节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到节点集合对应的汇编操作序列集合;处理单元,还用于对于汇编操作序列集合中每个汇编操作序列,确定每个汇编操作序列在预设漏洞模式库中的相似度;处理单元,还用于在有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值的情况下,确定用户程序存在系统漏洞。
第三方面,本申请提供一种存储一个或多个程序的计算机可读存储介质,该一个或多个程序包括指令,上述指令当被本申请的电子设备执行时使电子设备执行如第一方面和第一方面的任一种可能的实现方式中所描述的系统漏洞检测方法。
第四方面,本申请提供一种电子设备,包括:处理器以及存储器;其中,存储器用于存储一个或多个程序,一个或多个程序包括计算机执行指令,当电子设备运行时,处理器执行存储器存储的计算机执行指令,以使电子设备执行如第一方面和第一方面的任一种可能的实现方式中所描述的系统漏洞检测方法。
第五方面,本申请提供一种包含指令的计算机程序产品,当该指令在计算机上运行时,使得本申请的电子设备执行如第一方面和第一方面的任一种可能的实现方式中所描述的系统漏洞检测方法。
第六方面,本申请提供一种芯片系统,该芯片系统应用于系统漏洞检测装置;所述芯片系统包括一个或多个接口电路,以及一个或多个处理器。所述接口电路和所述处理器通过线路互联;所述接口电路用于从所述系统漏洞检测装置的存储器接收信号,并向所述处理器发送所述信号,所述信号包括所述存储器中存储的计算机指令。当所述处理器执行所述计算机指令时,所述系统漏洞检测装置执行如第一方面及其任一种可能的设计方式所述的系统漏洞检测方法。
在本申请中,上述系统漏洞检测装置的名字对设备或功能单元本身不构成限定,在实际实现中,这些设备或功能单元可以以其他名称出现。只要各个设备或功能单元的功能和本申请类似,均属于本申请权利要求及其等同技术的范围之内。
附图说明
图1为本申请实施例提供的一种系统漏洞检测装置的架构示意图;
图2为本申请实施例提供的另一种系统漏洞检测装置的架构示意图;
图3为本申请实施例提供的一种系统漏洞检测方法的流程示意图;
图4为本申请实施例提供的另一种系统漏洞检测方法的流程示意图;
图5为本申请实施例提供的一种静态控制流图的示意图;
图6为本申请实施例提供的另一种系统漏洞检测方法的流程示意图;
图7为本申请实施例提供的一种动态控制流图的示意图;
图8为本申请实施例提供的另一种系统漏洞检测方法的流程示意图;
图9为本申请实施例提供的另一种系统漏洞检测方法的流程示意图;
图10为本申请实施例提供的一种系统漏洞检测装置的结构示意图;
图11为本申请实施例提供的另一种系统漏洞检测装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
本文中字符“/”,一般表示前后关联对象是一种“或者”的关系。例如,A/B可以理解为A或者B。
本申请的说明书和权利要求书中的术语“第一”和“第二”是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一边缘服务节点和第二边缘服务节点是用于区别不同的边缘服务节点,而不是用于描述边缘服务节点的特征顺序。
此外,本申请的描述中所提到的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括其他没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
另外,在本申请实施例中,“示例性的”、或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”、或者“例如”等词旨在以具体方式呈现概念。
下面对本申请实施例涉及的技术名词进行简单介绍:
1、系统漏洞
系统漏洞是指应用软件或操作系统软件在逻辑设计上的缺陷或在编写时产生的错误,这个缺陷或错误可以被不法者或者电脑黑客利用,通过植入木马、病毒等方式来攻击或控制整个电脑,从而窃取电脑中的重要资料和信息,甚至破坏系统。
从另一方面来说,系统漏洞的本质是数据与代码之间没有严格的隔离机制,当数据经过反序列化或编译等操作后,又被加载成了程序代码,便产生了漏洞,即数据可以篡改程序运行路径。实际表现是程序的预期执行路径与实际执行路径产生了差异。
2、基本块
由一小段顺序执行的指令序列,只有一个入口(序列的第一个指令)和一个出口(序列的最后一个指令)。
3、程序静态分析
程序静态分析,指在不运行程序的方式下,通过对代码进行反汇编,取得程序代码的指令,在此基础之上,分析程序的数据流以及控制流,发现程序逻辑中潜在的漏洞。
4、程序动态分析
程序动态分析,指在运行程序的情况下,分析程序实际的指令、调用的系统库函数,分析程序的实际执行流,发现程序进行的敏感操作。
现阶段的动态分析主要问题是覆盖的执行流不全面,容易漏报,在不结合上下文的情况下也会有较多误报。
5、控制流图
控制流图,指通过基本块分析以及静态代码分析得到的有向图,其中每个节点为一个基本块,边为基本块与基本块之间的执行顺序。
6、动态控制流图
动态控制流图,指通过动态分析得到的有向图,其中每个节点为一个基本块,边为基本块与基本块之间的执行顺序。
随着互联网的普及,各类编程语言以及对应的软件也随之流行。由于编程语言本身存在一定的安全性问题,再加上开发者水平的参差不齐,导致了大量软件在逻辑设计上存在缺陷。而这些存在缺陷的软件程序在运行时,会产生一定的系统漏洞。这些漏洞往往随着软件发布而被攻击者发现利用。
攻击者利用系统漏洞的方式有多种,例如攻击者可以通过一段精心制作的代码,使程序执行攻击者输入的命令,从而导致计算机被攻击者控制、文件资料被盗取、计算资源被占用等后果。
示例性地,现有的漏洞检测方案主要是以下2种方式:
方式一:该方式针对的是已知漏洞,具体为收集存在漏洞的软件版本号以及对应的漏洞信息,通过扫描主机安装的软件信息,与漏洞库中的软件及版本进行匹配,找到相应漏洞。
但是,方式一只有软件漏洞存在一定的时间后,才会被漏扫工具所支持,检测具有滞后性。
方式二:该方式针对调用库钩挂的检测方案,具体为监控程序对敏感API的调用,但未结合程序上下文,易引起误报。
可见,现有的漏洞检测方案总体上存在检测滞后、误报多的问题。
为了解决现有漏洞检测方案中存在的检测滞后、误报多的问题,本申请提供了一种系统漏洞检测方法及装置,通过确定用户程序的静态控制流图来制定安全边界,通过程序运行时的汇编代码得到程序的运行时执行流,进而根据安全边界与运行时执行流的相似度是否小于预设阈值,结合预设漏洞模式库对实际运行的用户程序进行监控。由此,能够实时准确地检测承载用户程序的软件在运行过程中存在的漏洞,在极大地提高了准确性的同时,减少了误报概率,防止漏洞被攻击者利用,提高了用户程序在运行时的安全性。
示例性地,如图1所示,为本申请涉及的一种系统漏洞检测装置10的架构示意图。在图1中,系统漏洞检测装置10包括:静态分析模块11、动态追踪模块12、分析研判模块13。
其中,静态分析模块11,用于确定用户程序的安全边界。
可选地,静态分析模块11首先确定用户程序的静态控制流图,之后将静态控制流图确定为用户程序的安全边界。
示例性地,静态分析模块11确定用户程序的静态控制流图的过程,可分为三步:反汇编用户程序确定汇编代码、对汇编代码进行基本块分析确定多个第一基本块、根据多个第一基本块和多个第一基本块之间的执行程序确定静态控制流图。需要说明的是,前述三个步骤中每个步骤的具体内容参见后文实施例,此处不再赘述。
动态追踪模块12,用于确定用户程序的运行时执行流。
可选地,动态追踪模块12首先确定用户程序的动态控制流图,之后将动态控制流图确定为用户程序的运行时执行流。
示例性地,动态追踪模块12确定用户程序的动态控制流图的过程,可分为三步:监控用户程序的进程,获取用户程序的进程的代码段内容;对代码段内容进行基本块识别和分析,确定多个第二基本块;根据多个第二基本块和多个第二基本块之间的执行程序,确定动态控制流图。需要说明的是,前述三个步骤中每个步骤的具体内容参见后文实施例,此处不再赘述。
分析研判模块13,用于确定安全边界与运行时执行流之间的相似度,以及在安全边界与运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定用户程序是否存在系统漏洞。
示例性地,如图2所示,分析研判模块13具体可包括第一研判子模块131和第二研判子模块132,共计两个子模块。
在一种可能的实现方式中,第一研判子模块131具体用于根据预设对比算法,确定安全边界与运行时执行流之间的相似度。
可选地,预设对比算法包括shingling算法和simHash算法。shingling算法和simHash算法为现阶段成熟的相似度计算方法,本申请不再赘述。
在一种可能的实现方式中,第二研判子模块132,具体用于在安全边界与运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定用户程序是否存在系统漏洞。
可选地,第二研判子模块132根据预设漏洞模式库判定用户程序是否存在系统漏洞,可分为四步:获取静态控制流图的节点集合;对于节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到节点集合对应的汇编操作序列集合;对于汇编操作序列集合中每个汇编操作序列,确定每个汇编操作序列在预设漏洞模式库中的相似度;若有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值,则确定用户程序存在系统漏洞。需要说明的是,前述四个步骤中每个步骤的具体内容参见后文实施例,此处不再赘述。
在不同的应用场景中,静态分析模块11、动态追踪模块12、分析研判模块13可以部署在系统漏洞检测装置10包括的不同的设备中,也可以集成于系统漏洞检测装置10包括的同一设备中,本申请对此不作具体限定。
当静态分析模块11、动态追踪模块12、分析研判模块13集成于系统漏洞检测装置10内同一设备时,静态分析模块11、动态追踪模块12、分析研判模块13之间的通信方式为该设备内部模块之间的通信。这种情况下,三者之间的通信流程与“静态分析模块11、动态追踪模块12、分析研判模块13之间相互独立的情况下,三者之间的通信流程”相同。
以上对本申请提供的一种系统漏洞检测装置的可能性架构进行了介绍。
需要指出的是,在本申请提供的系统漏洞检测方法中,执行主体是系统漏洞检测装置。该系统漏洞检测装置可以是一种电子设备(例如电脑终端、服务器),还可以是电子设备中的处理器,还可以是电子设备中用于系统漏洞检测的控制模块,还可以是电子设备中用于系统漏洞检测的客户端。
下面对本实施例提供的系统漏洞检测方法的流程进行说明。
如图3示,该系统漏洞检测方法包括以下步骤:
S301、系统漏洞检测装置确定用户程序的安全边界。
其中,用户程序的安全边界用于与用户程序的运行时执行流进行对比,以确定用户程序的运行时执行流与安全边界的差异。在此之后,系统漏洞检测装置即可根据前述差异是否超过第一预设阈值,来判断是否根据预设漏洞模式库判定用户程序的系统漏洞。
可选地,系统漏洞检测装置首先确定用户程序的静态控制流图,之后将静态控制流图确定为用户程序的安全边界。
示例性地,系统漏洞检测装置确定用户程序的静态控制流图的过程,可分为三步:反汇编用户程序确定汇编代码、对汇编代码进行基本块分析确定多个第一基本块、根据多个第一基本块和多个第一基本块之间的执行程序确定静态控制流图。
需要说明的是,系统漏洞检测装置具体分步骤确定用户程序的安全边界的过程参见后文S401-S404,此处不再赘述。
在一种可能的实现方式中,S301具体可由前述系统漏洞检测装置中的静态分析模块来执行,以使得系统漏洞检测装置确定用户程序的安全边界。
S302、系统漏洞检测装置确定用户程序的运行时执行流。
其中,用户程序的运行时执行流,用于与用户程序的安全边界进行对比,以确定用户程序的安全边界与运行时执行流的差异。在此之后,系统漏洞检测装置即可根据前述差异是否超过第一预设阈值,来判断是否根据预设漏洞模式库判定用户程序的系统漏洞。
可选地,系统漏洞检测装置首先确定用户程序的动态控制流图,之后将动态控制流图确定为用户程序的运行时执行流。
示例性地,系统漏洞检测装置确定用户程序的动态控制流图的过程,可分为三步:监控用户程序的进程,获取用户程序的进程的代码段内容;对代码段内容进行基本块识别和分析,确定多个第二基本块;根据多个第二基本块和多个第二基本块之间的执行程序,确定动态控制流图。
需要说明的是,系统漏洞检测装置具体分步骤确定用户程序的运行时执行流的过程参见后文S601-S604,此处不再赘述。
在一种可能的实现方式中,S302具体可由前述系统漏洞检测装置中的动态追踪模块来执行,以使得系统漏洞检测装置确定用户程序的运行时执行流。
S303、系统漏洞检测装置根据预设对比算法,确定安全边界与运行时执行流之间的相似度。
可选地,预设对比算法包括shingling算法和simHash算法。shingling算法和simHash算法为现阶段成熟的相似度计算方法,本实施例再次不再赘述。
在一种可能的实现方式中,系统漏洞检测装置首先根据shingling算法,分别确定静态控制流图和动态控制流图的向量加权和;在此之后,系统漏洞检测装置根据simHash算法和向量加权和,确定静态控制流图和动态控制流图的simHash值;进而,系统漏洞检测装置能够确定静态控制流图的simHash值与动态控制流图的simHash值之间的海明距离,并根据海明距离确定安全边界与运行时执行流之间的相似度。
需要说明的是,系统漏洞检测装置具体分步骤根据预设对比算法,确定安全边界与运行时执行流之间的相似度的过程参见后文S801-S804,此处不再赘述。
在一种可能的实现方式中,S303具体可由前述系统漏洞检测装置中的分析研判模块来执行,以使得系统漏洞检测装置根据预设对比算法,确定安全边界与运行时执行流之间的相似度。
S304、系统漏洞检测装置判断安全边界与运行时执行流之间的相似度是否小于第一预设阈值。
其中,第一预设阈值的具体选值可根据实际应用来灵活确定,本申请实施例对此不做具体限定。
需要指出的是,若安全边界与运行时执行流之间的相似度小于第一预设阈值,则执行后续S305;
需要指出的是,若安全边界与运行时执行流之间的相似度大于或等于第一预设阈值,则执行后续S306。
在一种可能的实现方式中,S304具体可由前述系统漏洞检测装置中的分析研判模块来执行,以使得系统漏洞检测装置判断安全边界与运行时执行流之间的相似度是否小于第一预设阈值。
S305、系统漏洞检测装置根据预设漏洞模式库判定所述用户程序是否存在系统漏洞。
其中,预设漏洞模式库为程序语义层面的、存储有典型模式的漏洞相关数据的数据库。辅以预设漏洞模式库,对用户程序中可能存在的系统漏洞进行二次确认,能够降低误报发生的概率。
在一种可能的实现方式中,系统漏洞检测装置可分步骤实现根据预设漏洞模式库判定用户程序是否存在系统漏洞:首先,系统漏洞检测装置获取静态控制流图的节点集合;对于节点集合中每个节点,系统漏洞检测装置通过预设函数转换为执行的汇编操作符序列,得到节点集合对应的汇编操作序列集合;在此之后,对于汇编操作序列集合中每个汇编操作序列,系统漏洞检测装置确定每个汇编操作序列在预设漏洞模式库中的相似度;由此,若有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值,则系统漏洞检测装置确定用户程序存在系统漏洞。
需要说明的是,系统漏洞检测装置具体分步骤根据预设漏洞模式库判定用户程序是否存在系统漏洞的过程参见后文S901-S904,此处不再赘述。
在一种可能的实现方式中,S305具体可由前述系统漏洞检测装置中的分析研判模块来执行,以使得系统漏洞检测装置根据预设漏洞模式库判定所述用户程序是否存在系统漏洞。
S306、系统漏洞检测装置中止系统漏洞检测流程。
可以理解的是,系统漏洞检测装置中止系统漏洞检测流程后,确定用户程序不存在系统漏洞。
在一种可能的实现方式中,S306具体可由前述系统漏洞检测装置中的分析研判模块来执行,以使得系统漏洞检测装置中止系统漏洞检测流程。
基于上述技术方案,本申请实施例通过确定用户程序的静态控制流图来制定安全边界,通过程序运行时的汇编代码得到程序的运行时执行流,进而根据安全边界与运行时执行流的相似度是否小于预设阈值,结合预设漏洞模式库对实际运行的用户程序进行监控。由此,能够实时准确地检测承载用户程序的软件在运行过程中存在的漏洞,在极大地提高了准确性的同时,减少了误报概率,防止漏洞被攻击者利用,提高了用户程序在运行时的安全性。
示例性地,结合图3,如图4所示,本申请提供的系统漏洞检测方法中,确定用户程序的安全边界包括以下步骤:
S401、系统漏洞检测装置反汇编用户程序,确定汇编代码。
需要说明的是,本步骤属于逆向工程,即系统漏洞检测装置通过反汇编用户程序的二进制可执行文件,来得到汇编代码。
示例性地,下述为用户程序代码的一种可能性的样例:
Figure BDA0004176953260000111
示例性地,下述编码为汇编代码的一种可能性的样例:
Figure BDA0004176953260000112
Figure BDA0004176953260000121
在一种可能的实现方式中,S401具体可由前述系统漏洞检测装置中的静态分析模块来执行,以使得系统漏洞检测装置反汇编用户程序,确定汇编代码。
S402、系统漏洞检测装置对汇编代码进行基本块分析,确定多个第一基本块。
可选地,在本步骤中,系统漏洞检测装置在分析基本块时,将中间代码划分为基本块。在此之后,系统漏洞检测装置将同时满足以下两种条件的基本块确定为第一基本块。两种条件具体如下:
条件一、控制执行流只能从基本块的第一个指令进入;
条件二、此控制流图即作为程序的静态执行边界。
可以理解的是,第一基本块能够作为控制流图的节点,并且第一基本块之间的执行序能够作为控制流图的边,以便于后续步骤中生成控制流图。
在一种可能的实现方式中,S402具体可由前述系统漏洞检测装置中的静态分析模块来执行,以使得系统漏洞检测装置对汇编代码进行基本块分析,确定多个第一基本块。
S403、系统漏洞检测装置根据多个第一基本块和多个第一基本块之间的执行程序,确定静态控制流图。
可选地,结合S401中的用户程序代码和汇编代码的举例,系统漏洞检测装置最终确定出的静态控制流图如图5所示。
在一种可能的实现方式中,S403具体可由前述系统漏洞检测装置中的静态分析模块来执行,以使得系统漏洞检测装置根据多个第一基本块和多个第一基本块之间的执行程序,确定静态控制流图。
S404、系统漏洞检测装置将静态控制流图确定为安全边界。
在一种可能的实现方式中,S404具体可由前述系统漏洞检测装置中的静态分析模块来执行,以使得系统漏洞检测装置将静态控制流图确定为安全边界。
基于上述技术方案,本申请实施例能够基于用户程序,确定出用户程序的静态控制流图。从而来制定安全边界,以便于后续系统漏洞检测步骤的顺利进行。
示例性地,结合图4,如图6所示,本申请提供的系统漏洞检测方法中,确定用户程序的运行时执行流包括以下步骤:
S601、系统漏洞检测装置监控用户程序的进程,获取用户程序的进程的代码段内容。
可以理解的是,系统漏洞检测装置获取到的代码段内容,也同样将其转换为汇编代码的形式,进而执行下述S602中的基本块识别和分析操作。
在一种可能的实现方式中,S601具体可由前述系统漏洞检测装置中的动态追踪模块来执行,以使得系统漏洞检测装置监控用户程序的进程,获取用户程序的进程的代码段内容。
S602、系统漏洞检测装置对代码段内容进行基本块识别和分析,确定多个第二基本块。
可以理解的是,本步骤中系统漏洞检测装置确定第二基本块与前述S402中确定第一基本块的过程相同,此处不再进行赘述。
在一种可能的实现方式中,S602具体可由前述系统漏洞检测装置中的动态追踪模块来执行,以使得系统漏洞检测装置对代码段内容进行基本块识别和分析,确定多个第二基本块。
S603、系统漏洞检测装置根据多个第二基本块和多个第二基本块之间的执行程序,确定动态控制流图。
示例性地,结合实施例S401-S404中的举例,系统漏洞检测装置最终确定出的动态控制流图如图7所示。
在一种可能的实现方式中,S603具体可由前述系统漏洞检测装置中的动态追踪模块来执行,以使得系统漏洞检测装置根据多个第二基本块和多个第二基本块之间的执行程序,确定动态控制流图。
S604、系统漏洞检测装置将动态控制流图确定为运行时执行流。
在一种可能的实现方式中,S604具体可由前述系统漏洞检测装置中的动态追踪模块来执行,以使得系统漏洞检测装置将动态控制流图确定为运行时执行流。
需要说明的是,在本领域中,从二进制文件获取程序的高级表示方法(例如控制执行流)是一个成熟的问题,但是大多数解决方案都是基于纯静态方法:即使用数据流分析或类型推断等技术将可执行代码的字节转换成控制执行流,业界常见的解决方案有pinplay等。为了获取程序的动态控制执行流(也即本实施例中的运行时执行流),本实施例使用基于valgrind的CFGgrind插件来实现上述S601-S604。
基于上述技术方案,本申请实施例能够基于运行时的用户程序,确定出用户程序的动态控制流图,从而确定出用户程序的运行时执行流,以便于后续系统漏洞检测步骤的顺利进行。
示例性地,结合图6,如图8所示,本申请提供的系统漏洞检测方法中,确定安全边界与运行时执行流之间的相似度具体包括以下步骤:
S801、系统漏洞检测装置根据shingling算法,分别确定静态控制流图和动态控制流图的向量加权和。
可选地,为了便于说明,将动态控制流图和静态控制流图统称为控制流图G,以下对系统漏洞检测装置确定控制流图的向量加权和的过程进行说明:
(1)系统漏洞检测装置通过shingling方法将控制流图G转换为token序列。
具体来说,通过一种启发式的方法将控制流图转换为符合shingling定义的输入:定义基本块节点的出度作为基本块节点的权重,从程序入口Main函数的首个基本块节点出发,在邻居节点中选出权重最大的节点遍历,若最大节点相同,则随机选择一个进行遍历;若无邻居节点,则在未遍历节点中找出权重最大的节点进行遍历,最后得到一个遍历序列Si。使用shingling方法,提取输入序列Si的所有k个元素的子序列作为1个token,获取到n-k+1个token,分别表示为(t1,...,tn),用T表示通过shingling获取的token集合,具体表示为以下公式1:
T={t1,...,tn} 公式1
其中,T表示获取的控制流图的token集合。
(2)系统漏洞检测装置将控制流图的token序列T转换成一组加权特征集L,满足以下公式2
L={ti,wi} 公式2
其中,ti表示集合T中的一个token,wi表示ti在集合T中出现的次数。易知,加权特征集L为一个多维向量。
(3)系统漏洞检测装置使用加权特征集L为输入,结合预设函数、哈希值算法确定图像G的向量加权和,具体包括:
通过函数hash(t)=s,计算各个特征向量t的哈希值,其中哈希值为二进制数01组成的b位签名,由此得出签名集合:
Sg={si,…,sn} 公式3
其中,Sg表示加权特征集L的签名集合,s表示一个特征向量t的b位签名。
在此之后,将签名集合中的每一位si(如:01010111)与公式2中的权值wi(如:2)相乘得到结果sw(如:02020222),得到加权后的签名序列集合:
Sw={swi,…,swn} 公式4
其中,Sw表示签名序列集合,swi表示一个特征向量t的b位签名的加权结果。
最后通过下述公式5,计算得出控制流图G的向量加权和:
Figure BDA0004176953260000151
其中,hw表示控制流图G的向量加权和,N表示签名序列集合中元素的数量。
在一种可能的实现方式中,S801具体可由前述系统漏洞检测装置中的第一研判子模块来执行,以使得系统漏洞检测装置根据shingling算法,分别确定静态控制流图和动态控制流图的向量加权和。
S802、系统漏洞检测装置根据simHash算法和向量加权和,确定静态控制流图和动态控制流图的simHash值。
需要说明的是,本步骤中基于simHash算法,对控制流图的向量加权和hw进行降维,具体步骤为:针对hw中的每一位b位签名bi,若bi大于0则置1,否则置0,如(02020222)>(01010111),得到控制流图的simHash值,记为h。
在一种可能的实现方式中,S802具体可由前述系统漏洞检测装置中的第一研判子模块来执行,以使得系统漏洞检测装置根据simHash算法和向量加权和,确定静态控制流图和动态控制流图的simHash值。
S803、系统漏洞检测装置确定静态控制流图的simHash值与动态控制流图的simHash值之间的海明距离。
其中,海明距离用于表征两个simHash值之间的相似度,2个b位签名(01串)不同值的数量称为simHash的海明距离。
在一种可能的实现方式中,S803具体可由前述系统漏洞检测装置中的第一研判子模块来执行,以使得系统漏洞检测装置确定静态控制流图的simHash值与动态控制流图的simHash值之间的海明距离。
S804、系统漏洞检测装置根据海明距离,确定安全边界与运行时执行流之间的相似度。
可选地,将静态控制流图记为G1,将动态控制流图记为G2,系统漏洞检测装置计算相似度d的过程,满足以下公式6:
Figure BDA0004176953260000161
其中,d表示安全边界与运行时执行流之间的相似度,L1表示静态控制流图的加权特征集,L2表示动态控制流图的加权特征集,h1表示静态控制流图的b位签名,h2表示动态控制流图的b位签名,b表示签名位数。
在一种可能的实现方式中,S804具体可由前述系统漏洞检测装置中的第一研判子模块来执行,以使得系统漏洞检测装置根据海明距离,确定安全边界与运行时执行流之间的相似度。
基于上述技术方案,本申请实施例能够基于shingning算法和simHash算法,确定出安全边界与运行时执行流之间的相似度,以便于后续系统漏洞检测步骤的顺利进行。
示例性地,结合图8,如图9所示,本申请提供的系统漏洞检测方法中,根据预设漏洞模式库判定用户程序是否存在系统漏洞包括以下步骤:
S901、系统漏洞检测装置获取静态控制流图的节点集合。
示例性地,系统漏洞检测装置将静态控制流图的节点集合表示为Vg,每个节点表示为Vgi
在一种可能的实现方式中,S901具体可由前述系统漏洞检测装置中的第二研判子模块来执行,以使得系统漏洞检测装置获取静态控制流图的节点集合。
S902、系统漏洞检测装置对于节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到节点集合对应的汇编操作序列集合。
示例性地,系统漏洞检测装置将静态控制流图的汇编操作序列集合表示为A,每个汇编操作符序列表示为a。其中,所有a∈A,均对应静态控制流图某个节点的汇编操作符序列。
在一种可能的实现方式中,S902具体可由前述系统漏洞检测装置中的第二研判子模块来执行,以使得系统漏洞检测装置对于节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到节点集合对应的汇编操作序列集合。
S903、系统漏洞检测装置对于汇编操作序列集合中每个汇编操作序列,确定每个汇编操作序列在预设漏洞模式库中的相似度。
示例性地,将预设漏洞模式库中的漏洞模式特征集合表示为V,V种的每个元素v均为符合某种漏洞特征的汇编操作符序列。
可选地,系统漏洞检测装置使用匹配方法,在集合V中对a∈A进行匹配,计算每个汇编操作序列在漏洞模式特征集合V中元素v的相似度。
在一种可能的实现方式中,S903具体可由前述系统漏洞检测装置中的第二研判子模块来执行,以使得系统漏洞检测装置对于汇编操作序列集合中每个汇编操作序列,确定每个汇编操作序列在预设漏洞模式库中的相似度。
S904、若有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值,则系统漏洞检测装置确定用户程序存在系统漏洞。
可选地,若存在v∈V,相似度sim(v,a)大于第二预设阈值,则系统漏洞检测装置确定用户程序存在系统漏洞。
可选地,系统漏洞检测装置在确定用户程序存在系统漏洞后,产生一个告警事件。
在一种可能的实现方式中,S904具体可由前述系统漏洞检测装置中的第二研判子模块来执行,以使得系统漏洞检测装置在有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值时,确定用户程序存在系统漏洞。
基于上述技术方案,本申请实施例能够在有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值的情况下,根据预设漏洞模式库判定用户程序是否存在系统漏洞,以便于后续系统漏洞检测步骤的顺利进行。
本申请实施例可以根据上述方法示例对系统漏洞检测装置进行功能模块或者功能单元的划分,例如,可以对应各个功能划分各个功能模块或者功能单元,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块或者功能单元的形式实现。其中,本申请实施例中对模块或者单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
示例性地,如图10所示,为本申请实施例所涉及的一种系统漏洞检测装置的一种可能的结构示意图。该系统漏洞检测装置1000包括:处理单元1001和获取单元1002。
其中,处理单元1001,用于确定用户程序的安全边界;
处理单元1001,还用于确定用户程序的运行时执行流;
处理单元1001,还用于根据预设对比算法,确定安全边界与运行时执行流之间的相似度;
处理单元1001,还用于在安全边界与运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定用户程序是否存在系统漏洞。
可选地,处理单元1001,还用于反汇编用户程序,确定汇编代码;
可选地,处理单元1001,还用于对汇编代码进行基本块分析,确定多个第一基本块;
可选地,处理单元1001,还用于根据多个第一基本块和多个第一基本块之间的执行程序,确定静态控制流图;
可选地,处理单元1001,还用于将静态控制流图确定为安全边界。
可选地,处理单元1001,还用于监控用户程序的进程,获取用户程序的进程的代码段内容;
可选地,处理单元1001,还用于对代码段内容进行基本块识别和分析,确定多个第二基本块;
可选地,处理单元1001,还用于根据多个第二基本块和多个第二基本块之间的执行程序,确定动态控制流图;
可选地,处理单元1001,还用于将动态控制流图确定为运行时执行流。
可选地,处理单元1001,还用于根据shingling算法,分别确定静态控制流图和动态控制流图的向量加权和;
可选地,处理单元1001,还用于根据simHash算法和向量加权和,确定静态控制流图和动态控制流图的simHash值;
可选地,处理单元1001,还用于确定静态控制流图的simHash值与动态控制流图的simHash值之间的海明距离;
可选地,处理单元1001,还用于根据海明距离,确定安全边界与运行时执行流之间的相似度。
可选地,获取单元1002,用于获取静态控制流图的节点集合;
可选地,处理单元1001,还用于对于节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到节点集合对应的汇编操作序列集合;
可选地,处理单元1001,还用于对于汇编操作序列集合中每个汇编操作序列,确定每个汇编操作序列在预设漏洞模式库中的相似度;
可选地,处理单元1001,还用于在有至少一个汇编操作序列在预设漏洞模式库中的相似度,大于第二预设阈值的情况下,确定用户程序存在系统漏洞。
可选地,系统漏洞检测装置1000还可以包括存储单元(图10中以虚线框示出),该存储单元存储有程序或指令,当处理单元1001、和获取单元1002执行该程序或指令时,使得系统漏洞检测装置可以执行上述方法实施例所述的系统漏洞检测方法。
此外,图10所述的系统漏洞检测装置的技术效果可以参考上述实施例所述的系统漏洞检测方法的技术效果,此处不再赘述。
示例性地,图11为上述实施例中所涉及的系统漏洞检测装置的又一种可能的结构示意图。如图11所示,系统漏洞检测装置1100包括:处理器1102。
其中,处理器1102,用于对该系统漏洞检测装置的动作进行控制管理,例如,执行上述处理单元1001和获取单元1002执行的步骤,和/或用于执行本文所描述的技术方案的其它过程。
上述处理器1102可以是实现或执行结合本申请内容所描述的各种示例性的逻辑方框,模块和电路。该处理器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
可选地,系统漏洞检测装置1100还可以包括通信接口1103、存储器1101和总线1104。其中,通信接口1103用于支持系统漏洞检测装置1100与其他网络实体的通信。存储器1101用于存储该系统漏洞检测装置的程序代码和数据。
其中,存储器1101可以是系统漏洞检测装置中的存储器,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。
总线1104可以是扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。总线1104可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例提供一种包含指令的计算机程序产品,当所述计算机程序产品在本申请的电子设备上运行时,使得所述计算机执行上述方法实施例所述的系统漏洞检测方法。
本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当计算机执行该指令时,该本申请的电子设备执行上述方法实施例所示的方法流程中系统漏洞检测装置执行的各个步骤。
其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘。随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、寄存器、硬盘、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的人以合适的组合、或者本领域数值的任何其他形式的计算机可读存储介质。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于特定用途集成电路(Application Specific Integrated Circuit,ASIC)中。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (12)

1.一种系统漏洞检测方法,其特征在于,所述方法包括:
确定用户程序的安全边界;
确定所述用户程序的运行时执行流;
根据预设对比算法,确定所述安全边界与所述运行时执行流之间的相似度;
在所述安全边界与所述运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定所述用户程序是否存在系统漏洞。
2.根据权利要求1所述的方法,其特征在于,所述确定用户程序的安全边界,具体包括:
反汇编所述用户程序,确定汇编代码;
对所述汇编代码进行基本块分析,确定多个第一基本块;
根据所述多个第一基本块和所述多个第一基本块之间的执行程序,确定静态控制流图;
将所述静态控制流图确定为所述安全边界。
3.根据权利要求2所述的方法,其特征在于,所述确定运行时执行流,具体包括:
监控所述用户程序的进程,获取所述用户程序的进程的代码段内容;
对所述代码段内容进行基本块识别和分析,确定多个第二基本块;
根据所述多个第二基本块和所述多个第二基本块之间的执行程序,确定动态控制流图;
将所述动态控制流图确定为所述运行时执行流。
4.根据权利要求3所述的方法,其特征在于,所述预设对比算法包括shingling算法和simHash算法;所述根据预设对比算法,确定所述安全边界与所述运行时执行流之间的相似度,具体包括:
根据所述shingling算法,分别确定所述静态控制流图和所述动态控制流图的向量加权和;
根据所述simHash算法和所述向量加权和,确定所述静态控制流图和所述动态控制流图的simHash值;
确定所述静态控制流图的simHash值与所述动态控制流图的simHash值之间的海明距离;
根据所述海明距离,确定所述安全边界与所述运行时执行流之间的相似度。
5.根据权利要求4所述的方法,其特征在于,所述根据预设漏洞模式库判定所述用户程序是否存在系统漏洞,具体包括:
获取所述静态控制流图的节点集合;
对于所述节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到所述节点集合对应的汇编操作序列集合;
对于所述汇编操作序列集合中每个汇编操作序列,确定所述每个汇编操作序列在所述预设漏洞模式库中的相似度;
若有至少一个所述汇编操作序列在所述预设漏洞模式库中的相似度,大于第二预设阈值,则确定所述用户程序存在系统漏洞。
6.一种系统漏洞检测装置,其特征在于,所述系统漏洞装置包括:处理单元;
所述处理单元,用于确定用户程序的安全边界;
所述处理单元,还用于确定所述用户程序的运行时执行流;
所述处理单元,还用于根据预设对比算法,确定所述安全边界与所述运行时执行流之间的相似度;
所述处理单元,还用于在所述安全边界与所述运行时执行流之间的相似度小于第一预设阈值的情况下,根据预设漏洞模式库判定所述用户程序是否存在系统漏洞。
7.根据权利要求6所述的系统漏洞检测装置,其特征在于,
所述处理单元,还用于反汇编所述用户程序,确定汇编代码;
所述处理单元,还用于对所述汇编代码进行基本块分析,确定多个第一基本块;
所述处理单元,还用于根据所述多个第一基本块和所述多个第一基本块之间的执行程序,确定静态控制流图;
所述处理单元,还用于将所述静态控制流图确定为所述安全边界。
8.根据权利要求7所述的系统漏洞检测装置,其特征在于,
所述处理单元,还用于监控所述用户程序的进程,获取所述用户程序的进程的代码段内容;
所述处理单元,还用于对所述代码段内容进行基本块识别和分析,确定多个第二基本块;
所述处理单元,还用于根据所述多个第二基本块和所述多个第二基本块之间的执行程序,确定动态控制流图;
所述处理单元,还用于将所述动态控制流图确定为所述运行时执行流。
9.根据权利要求8所述的系统漏洞检测装置,其特征在于,
所述处理单元,还用于根据所述shingling算法,分别确定所述静态控制流图和所述动态控制流图的向量加权和;
所述处理单元,还用于根据所述simHash算法和所述向量加权和,确定所述静态控制流图和所述动态控制流图的simHash值;
所述处理单元,还用于确定所述静态控制流图的simHash值与所述动态控制流图的simHash值之间的海明距离;
所述处理单元,还用于根据所述海明距离,确定所述安全边界与所述运行时执行流之间的相似度。
10.根据权利要求8所述的系统漏洞检测装置,其特征在于,所述系统漏洞检测装置还包括:获取单元;
所述获取单元,用于获取所述静态控制流图的节点集合;
所述处理单元,还用于对于所述节点集合中每个节点,通过预设函数转换为执行的汇编操作符序列,得到所述节点集合对应的汇编操作序列集合;
所述处理单元,还用于对于所述汇编操作序列集合中每个汇编操作序列,确定所述每个汇编操作序列在所述预设漏洞模式库中的相似度;
所述处理单元,还用于在有至少一个所述汇编操作序列在所述预设漏洞模式库中的相似度,大于第二预设阈值的情况下,确定所述用户程序存在系统漏洞。
11.一种电子设备,其特征在于,包括:处理器以及存储器;其中,所述存储器用于存储计算机执行指令,当所述电子设备运行时,所述处理器执行所述存储器存储的所述计算机执行指令,以使所述电子设备执行如权利要求1-5中任一项所述的系统漏洞检测方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括指令,当所述计算机可读存储介质中的指令由电子设备执行时,使得所述电子设备能够执行如权利要求1-5中任一项所述的系统漏洞检测方法。
CN202310391696.4A 2023-04-12 2023-04-12 一种系统漏洞检测方法及装置 Pending CN116415255A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310391696.4A CN116415255A (zh) 2023-04-12 2023-04-12 一种系统漏洞检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310391696.4A CN116415255A (zh) 2023-04-12 2023-04-12 一种系统漏洞检测方法及装置

Publications (1)

Publication Number Publication Date
CN116415255A true CN116415255A (zh) 2023-07-11

Family

ID=87054372

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310391696.4A Pending CN116415255A (zh) 2023-04-12 2023-04-12 一种系统漏洞检测方法及装置

Country Status (1)

Country Link
CN (1) CN116415255A (zh)

Similar Documents

Publication Publication Date Title
US8117660B2 (en) Secure control flows by monitoring control transfers
US10915659B2 (en) Privacy detection of a mobile application program
CN109145600B (zh) 使用静态分析元素检测恶意文件的系统和方法
TWI515598B (zh) 產生純化惡意程式的方法、偵測惡意程式之方法及其系統
Han et al. Malware analysis using visualized image matrices
JP6726706B2 (ja) コンボリューションのポピュラリティに基づいて異常なイベントを検出するシステムおよび方法
US9798981B2 (en) Determining malware based on signal tokens
US20090133125A1 (en) Method and apparatus for malware detection
CN113935033B (zh) 特征融合的恶意代码家族分类方法、装置和存储介质
US10839074B2 (en) System and method of adapting patterns of dangerous behavior of programs to the computer systems of users
US10395033B2 (en) System, apparatus and method for performing on-demand binary analysis for detecting code reuse attacks
CN114077741A (zh) 软件供应链安全检测方法和装置、电子设备及存储介质
Feng et al. Mace: High-coverage and robust memory analysis for commodity operating systems
CA2942360A1 (en) Systems and methods for detecting copied computer code using fingerprints
RU2634177C1 (ru) Система и способ обнаружения нежелательного программного обеспечения
CN107103237A (zh) 一种恶意文件的检测方法及装置
CN113468524B (zh) 基于rasp的机器学习模型安全检测方法
US11003772B2 (en) System and method for adapting patterns of malicious program behavior from groups of computer systems
CN110543765A (zh) 一种恶意软件检测方法
CN113378118A (zh) 处理图像数据的方法、装置、电子设备和计算机存储介质
EP3767507A1 (en) Data processing method against ransomware, program for executing same, and computer-readable recording medium with program recorded thereon
CN116415255A (zh) 一种系统漏洞检测方法及装置
WO2023067665A1 (ja) 解析機能付与方法、解析機能付与装置及び解析機能付与プログラム
CN111310162A (zh) 基于可信计算的设备接入控制方法、装置、产品及介质
WO2024154288A1 (ja) プログラム解析装置、プログラム解析方法、及び非一時的なコンピュータ可読媒体

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