CN117633813A - 一种安全漏洞检测方法、装置、电子设备及存储介质 - Google Patents
一种安全漏洞检测方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN117633813A CN117633813A CN202311630647.8A CN202311630647A CN117633813A CN 117633813 A CN117633813 A CN 117633813A CN 202311630647 A CN202311630647 A CN 202311630647A CN 117633813 A CN117633813 A CN 117633813A
- Authority
- CN
- China
- Prior art keywords
- execution trace
- target program
- security hole
- input
- input object
- 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
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 93
- 230000006870 function Effects 0.000 claims abstract description 112
- 238000012360 testing method Methods 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 30
- 239000013598 vector Substances 0.000 claims description 95
- 238000004458 analytical method Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 abstract description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 230000011218 segmentation Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000003064 k means clustering Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000003909 pattern recognition Methods 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000000523 sample Substances 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000003595 spectral effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种安全漏洞检测方法、装置、电子设备及存储介质;该方法包括:将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象;将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;根据各个输入对象对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数;若目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。本申请实施例在保证检测准确度的前提下,可以有效地减少检测过程所产生的存储开销和时间开销,还可以提高安全漏洞检测效率。
Description
技术领域
本申请实施例涉及软件测试技术领域,尤其涉及一种安全漏洞检测方法、装置、电子设备及存储介质。
背景技术
程序代码的安全漏洞检测是一项关键的任务,旨在发现和修复程序中可能存在的安全漏洞,以提高程序的安全性。目前的安全漏洞检测方法是收集目标程序在不同输入下的执行信息构成执行迹线,对目标程序的执行迹线进行两两对比,执行迹线存在差异的地方即为安全漏洞点。
在上述检测方案中,需要收集不同输入下的大量目标程序执行信息构成迹线,在目标程序执行路径多或代码复杂的情况下,依然需要对收集到的目标程序执行迹线进行两两比较,这样将产生巨大的存储开销和时间开销,检测效率较为低下。
发明内容
本申请提供一种安全漏洞检测方法、装置、电子设备及存储介质,在保证检测准确度的前提下,可以有效地减少检测过程所产生的存储开销和时间开销,还可以提高安全漏洞检测效率。
第一方面,本申请实施例提供了一种安全漏洞检测方法,所述方法包括:
将目标程序输入至模糊测试工具中,通过所述模糊测试工具生成所述目标程序所需要的多个输入对象;
将各个输入对象分别输入至所述目标程序中,通过预先设置在所述目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;
根据各个输入对象对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数;
若所述目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到所述目标程序的安全漏洞检测结果。
第二方面,本申请实施例还提供了一种安全漏洞检测装置,所述装置包括:生成模块、获取模块、检测模块和分析模块;其中,
所述生成模块,用于将目标程序输入至模糊测试工具中,通过所述模糊测试工具生成所述目标程序所需要的多个输入对象;
所述获取模块,用于将各个输入对象分别输入至所述目标程序中,通过预先设置在所述目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;
所述检测模块,用于根据各个输入对象对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数;
所述分析模块,用于若所述目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到所述目标程序的安全漏洞检测结果。
第三方面,本申请实施例提供了一种电子设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本申请任意实施例所述的安全漏洞检测方法。
第四方面,本申请实施例提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现本申请任意实施例所述的安全漏洞检测方法。
本申请实施例提出了一种安全漏洞检测方法、装置、电子设备及存储介质,先将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象;然后将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;再根据各个输入对象对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数;若目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。也就是说,在本申请的技术方案中,可以通过收集各个输入对象对应的执行迹线文件对目标程序中的安全漏洞进行检测。而在现有技术中,需要收集不同输入下的大量目标程序执行信息构成迹线,在目标程序执行路径多或代码复杂的情况下,依然需要对收集到的目标程序执行迹线进行两两比较,这样将产生巨大的存储开销和时间开销,检测效率较为低下。因此,和现有技术相比,本申请实施例提出的安全漏洞检测方法、装置、电子设备及存储介质,在保证检测准确度的前提下,可以有效地减少检测过程所产生的存储开销和时间开销,还可以提高安全漏洞检测效率;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
附图说明
图1为本申请实施例提供的安全漏洞检测方法的第一流程示意图;
图2为本申请实施例提供的安全漏洞检测方法的第二流程示意图;
图3为本申请实施例提供的安全漏洞检测方法的第三流程示意图;
图4为本申请实施例提供的安全漏洞检测装置的结构示意图;
图5为本申请实施例提供的电子设备的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。
实施例一
图1为本申请实施例提供的安全漏洞检测方法的第一流程示意图,该方法可以由安全漏洞检测装置或者电子设备来执行,该装置或者电子设备可以由软件和/或硬件的方式实现,该装置或者电子设备可以集成在任何具有网络通信功能的智能设备中。如图1所示,安全漏洞检测方法可以包括以下步骤:
S101、将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象。
在本步骤中,电子设备可以将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象。具体地,在生成输入对象的阶段,将目标程序输入至模糊测试工具,通过模糊测试工具生成足够多的输入对象,此处的足够多是指模糊测试工具在设定的时间内已不能再生成更多的输入对象。
S102、将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件。
在本步骤中,电子设备可以将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件。本申请实施例中的执行迹线是指按照一定顺序记录有关程序执行的信息,从而组成的程序执行信息的集合。收集执行迹线的方法主要是使用程序插桩技术,在不影响程序原有逻辑的完整性的基础上,在程序中插入一些进行信息采集的代码段,通过探针的执行并抛出程序运行的特征数据,通过对这些数据的进一步分析,从而达到测试目的。
S103、根据各个输入对象对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数。
在本步骤中,电子设备可以根据各个输入对象对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数。具体地,电子设备可以先将各个输入对象对应的执行迹线文件转换为向量,得到各个执行迹线文件对应的向量;然后将全部执行迹线文件对应的向量进行聚类,得到全部执行迹线文件对应的向量的聚类结果;其中,全部执行迹线文件对应的向量的聚类结果中包括一个或者多个向量类别;再根据全部执行迹线文件对应的向量的聚类结果,检测目标程序中是否存在一个或者多个候选安全漏洞函数。进一步地,根据全部执行迹线文件对应的向量的聚类结果,检测目标程序中是否存在一个或者多个候选安全漏洞函数,可以按照以下步骤进行:先针对各个向量类别分别选取任意一个输入对象作为该向量类别的输入对象代表;然后根据各个向量类别的输入对象代表对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数。
S104、若目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。
在本步骤中,若目标程序中存在一个或者多个候选安全漏洞函数,则电子设备可以对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。具体地,电子设备可以先将各个候选安全漏洞函数的原始输入数据转换为符号化表示的输入数据;然后将各个候选安全漏洞函数的符号化表示的输入数据输入至各个候选安全漏洞函数中,得到各个候选安全漏洞函数的符号化表示的输出数据;再将各个候选安全漏洞函数的符号化表示的输出数据输入至约束求解器中,通过约束求解器求解出满足约束条件的输入对象;最后将各个向量类别的输入对象代表和满足约束条件的输入对象进行对比,得到各个向量类别的输入对象代表和满足约束条件的输入对象的对比结果,并根据各个向量类别的输入对象代表和满足约束条件的输入对象的对比结果确定目标程序的安全漏洞检测结果。
本申请实施例提出的安全漏洞检测方法,先将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象;然后将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;再根据各个输入对象对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数;若目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。也就是说,在本申请的技术方案中,可以通过收集各个输入对象对应的执行迹线文件对目标程序中的安全漏洞进行检测。而在现有技术中,需要收集不同输入下的大量目标程序执行信息构成迹线,在目标程序执行路径多或代码复杂的情况下,依然需要对收集到的目标程序执行迹线进行两两比较,这样将产生巨大的存储开销和时间开销,检测效率较为低下。因此,和现有技术相比,本申请实施例提出的安全漏洞检测方法,在保证检测准确度的前提下,可以有效地减少检测过程所产生的存储开销和时间开销,还可以提高安全漏洞检测效率;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
实施例二
图2为本申请实施例提供的安全漏洞检测方法的第二流程示意图。基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图2所示,安全漏洞检测方法可以包括以下步骤:
S201、将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象。
S202、将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件。
S203、将各个输入对象对应的执行迹线文件转换为向量,得到各个执行迹线文件对应的向量。
在本步骤中,电子设备可以将各个输入对象对应的执行迹线文件转换为向量,得到各个执行迹线文件对应的向量。本申请实施例中的执行迹线文件可以包括:基本块的起始地址、基本块的结束地址、基本块的执行顺序、函数调用和函数返回。基本块是指程序顺序执行的语句序列,其中只有一个入口和一个出口,入口就是其中的第一个语句,出口就是其中的最后一个语句。对一个基本块来说,执行时只从其入口进入,从其出口退出。在一个实施例中,执行迹线文件转换为向量的方法可以包括以下步骤:1)定义特征集:首先,需要确定将执行迹线文件转换为向量所需要的特征,这些特征可以是执行迹线文件的各种属性。2)数据清洗和预处理:在将执行迹线文件转换为向量之前,需要对执行迹线文件中的数据进行清洗和预处理。例如去除异常值、归一化数据等。3)提取特征:使用定义的特征集,通过计算执行迹线文件中的各种属性来提取特征。例如,每个元素可以表示相应的基本块执行的次数。4)选择合适的算法:根据任务的要求和数据的特点,选择合适的机器学习或模式识别算法。例如,可以使用聚类算法将执行迹线文件划分为不同的群组。5)转换为向量:使用训练好的模型,将新的执行迹线文件转换为向量表示。这可以通过使用模型对执行迹线文件进行分类或聚类来实现。
S204、将全部执行迹线文件对应的向量进行聚类,得到全部执行迹线文件对应的向量的聚类结果;其中,全部执行迹线文件对应的向量的聚类结果中包括一个或者多个向量类别。
在本步骤中,电子设备可以将全部执行迹线文件对应的向量进行聚类,得到全部执行迹线文件对应的向量的聚类结果;其中,全部执行迹线文件对应的向量的聚类结果中包括一个或者多个向量类别。具体地,将全部执行迹线文件对应的向量进行聚类可以采用以下其中一种方法:1)K-means聚类:K-means是一种迭代的聚类算法,它将向量分为K个簇,其中每个簇代表了一组相似的数据点。该算法需要预先指定簇的数量K,然后通过迭代优化来找到最佳的簇划分。2)层次聚类:这种方法将向量组织成一个层次结构,从而形成一系列的聚类。例如,通过自下向上聚类算法将每个向量视为一个单独的簇,然后逐步地将相似的簇合并在一起,直到形成一个完整的层次结构。3)密度聚类:密度聚类是将向量聚集在高密度区域,并将低密度区域作为边界。
S205、根据全部执行迹线文件对应的向量的聚类结果,检测目标程序中是否存在一个或者多个候选安全漏洞函数。
在本步骤中,电子设备可以根据全部执行迹线文件对应的向量的聚类结果,检测目标程序中是否存在一个或者多个候选安全漏洞函数。在一个实施例中,电子设备可以先针对各个向量类别分别选取任意一个输入对象作为该向量类别的输入对象代表;然后根据各个向量类别的输入对象代表对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数。具体地,电子设备可以先在全部向量类别的输入对象代表对应的执行迹线文件中提取出两个执行迹线文件分别作为当前第一执行迹线文件和当前第二执行迹线文件;然后将当前第一执行迹线文件和当前第二执行迹线文件进行对比,得到当前第一执行迹线文件和当前第二执行迹线文件的对比结果;重复执行上述操作,直到得到全部向量类别的输入对象代表对应的执行迹线文件中每两个执行迹线文件的对比结果;其中,对比结果包括:一致和不一致;再根据全部向量类别的输入对象代表对应的执行迹线文件中每两个执行迹线文件的对比结果,检测目标程序中是否存在一个或者多个候选安全漏洞函数。进一步地,电子设备可以在当前第一执行迹线文件中提取出一个或者多个第一函数调用信息,在当前第二执行迹线文件中提取出一个或者多个第二函数调用信息;若各个第一函数调用信息分别与对应的各个第二函数调用信息相同,则电子设备可以判定当前第一执行迹线文件和当前第二执行迹线文件一致;若任意一个第一函数调用信息与对应的第二函数调用信息不相同,则电子设备可以判定当前第一执行迹线文件和当前第二执行迹线文件不一致。更进一步地,若全部输入对象对应的执行迹线文件中任意两个执行迹线文件不一致,则电子设备可以判定目标程序中存在一个或者多个候选安全漏洞函数;若全部输入对象对应的执行迹线文件中每两个执行迹线文件均一致,则电子设备可以判定目标程序中不存在候选安全漏洞函数。
S206、若目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。
本申请实施例提出的安全漏洞检测方法,先将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象;然后将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;再根据各个输入对象对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数;若目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。也就是说,在本申请的技术方案中,可以通过收集各个输入对象对应的执行迹线文件对目标程序中的安全漏洞进行检测。而在现有技术中,需要收集不同输入下的大量目标程序执行信息构成迹线,在目标程序执行路径多或代码复杂的情况下,依然需要对收集到的目标程序执行迹线进行两两比较,这样将产生巨大的存储开销和时间开销,检测效率较为低下。因此,和现有技术相比,本申请实施例提出的安全漏洞检测方法,在保证检测准确度的前提下,可以有效地减少检测过程所产生的存储开销和时间开销,还可以提高安全漏洞检测效率;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
实施例三
图3为本申请实施例提供的安全漏洞检测方法的第三流程示意图。基于上述技术方案进一步优化与扩展,并可以与上述各个可选实施方式进行结合。如图3所示,安全漏洞检测方法可以包括以下步骤:
S301、将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象。
S302、将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件。
S303、将各个输入对象对应的执行迹线文件转换为向量,得到各个执行迹线文件对应的向量。
S304、将全部执行迹线文件对应的向量进行聚类,得到全部执行迹线文件对应的向量的聚类结果;其中,全部执行迹线文件对应的向量的聚类结果中包括一个或者多个向量类别。
S305、针对各个向量类别分别选取任意一个输入对象作为该向量类别的输入对象代表。
在本步骤中,电子设备可以针对各个向量类别分别选取任意一个输入对象作为该向量类别的输入对象代表。本申请实施例中各个向量类别可以分别包括一个或者多个输入对象。例如,向量类别1可以包括N1个输入对象;向量类别2可以包括N2个输入对象,…,以此类推。因此可以针对各个向量类别分别选取任意一个输入对象作为该向量类别的输入对象代表。
S306、根据各个向量类别的输入对象代表对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数。
在本步骤中,电子设备可以根据各个向量类别的输入对象代表对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数。具体地,电子设备可以先在全部向量类别的输入对象代表对应的执行迹线文件中提取出两个执行迹线文件分别作为当前第一执行迹线文件和当前第二执行迹线文件;然后将当前第一执行迹线文件和当前第二执行迹线文件进行对比,得到当前第一执行迹线文件和当前第二执行迹线文件的对比结果;重复执行上述操作,直到得到全部向量类别的输入对象代表对应的执行迹线文件中每两个执行迹线文件的对比结果;其中,对比结果包括:一致和不一致;再根据全部向量类别的输入对象代表对应的执行迹线文件中每两个执行迹线文件的对比结果,检测目标程序中是否存在一个或者多个候选安全漏洞函数。进一步地,电子设备可以在当前第一执行迹线文件中提取出一个或者多个第一函数调用信息,同时在当前第二执行迹线文件中提取出一个或者多个第二函数调用信息;若各个第一函数调用信息分别与对应的各个第二函数调用信息相同,则电子设备可以判定当前第一执行迹线文件和当前第二执行迹线文件一致;若任意一个第一函数调用信息与对应的第二函数调用信息不相同,则电子设备可以判定当前第一执行迹线文件和当前第二执行迹线文件不一致。若全部输入对象对应的执行迹线文件中任意两个执行迹线文件不一致,则电子设备可以判定目标程序中存在一个或者多个候选安全漏洞函数;若全部输入对象对应的执行迹线文件中每两个执行迹线文件均一致,则电子设备可以判定目标程序中不存在候选安全漏洞函数。
S307、若目标程序中存在一个或者多个候选安全漏洞函数,则将各个候选安全漏洞函数的原始输入数据转换为符号化表示的输入数据。
在本步骤中,若目标程序中存在一个或者多个候选安全漏洞函数,则电子设备可以将各个候选安全漏洞函数的原始输入数据转换为符号化表示的输入数据。本申请实施例中各个候选安全漏洞函数的原始输入数据可以是非符号化表示的数据,在将非符号化表示的数据转换为符号化表示的数据时,可以采用以下其中一种方法:1)分词:对于文本数据,可以使用分词技术将连续的字符序列切分成独立的符号。2)编码:对于数值数据,可以使用编码技术将其转换为符号表示。例如,可以使用独热编码(one-hot encoding)将离散的取值转换为向量形式表示。对于连续的数值数据,可以考虑将其离散化后进行编码。3)特征抽取:对于复杂的非符号化数据,可以使用特征抽取技术将其转换为一组代表性的符号化特征。例如,对于图像数据,可以使用卷积神经网络(CNN)提取图像的特征向量;对于音频数据,可以使用短时傅里叶变换(STFT)提取声音的频谱特征。4)语言模型:对于自然语言文本,可以使用语言模型将其转换为符号化表示。语言模型可以在大规模语料库上训练得到,能够计算文本的概率。通过语言模型,可以将非符号化文本转换为一系列符号化的单词或n-gram序列。
S308、将各个候选安全漏洞函数的符号化表示的输入数据输入至各个候选安全漏洞函数中,得到各个候选安全漏洞函数的符号化表示的输出数据。
在本步骤中,电子设备可以将各个候选安全漏洞函数的符号化表示的输入数据输入至各个候选安全漏洞函数中,得到各个候选安全漏洞函数的符号化表示的输出数据。具体地,若各个候选安全漏洞函数的原始输出数据是非符号化表示的数据,则可以采用上述转换方法将非符号化表示的数据转换为符号化表示的数据,得到各个候选安全漏洞函数的符号化表示的输出数据。
S309、将各个候选安全漏洞函数的符号化表示的输出数据输入至约束求解器中,通过约束求解器求解出满足约束条件的输入对象。
在本步骤中,电子设备可以将各个候选安全漏洞函数的符号化表示的输出数据输入至约束求解器中,通过约束求解器求解出满足约束条件的输入对象。约束求解器是一种计算机程序或算法,用于解决在一组约束条件下确定变量的值的问题。这些约束条件可以是各种形式的限制,例如等式、不等式、逻辑约束等。约束求解器可以根据这些约束条件,自动地找到满足所有约束的变量值,或者判断是否不存在这样的解。
S310、将各个向量类别的输入对象代表和满足约束条件的输入对象进行对比,得到各个向量类别的输入对象代表和满足约束条件的输入对象的对比结果,并根据各个向量类别的输入对象代表和满足约束条件的输入对象的对比结果确定目标程序的安全漏洞检测结果。
在本步骤中,将各个向量类别的输入对象代表和满足约束条件的输入对象进行对比,得到各个向量类别的输入对象代表和满足约束条件的输入对象的对比结果,并根据各个向量类别的输入对象代表和满足约束条件的输入对象的对比结果确定目标程序的安全漏洞检测结果。具体地,在将各个向量类别的输入对象代表和满足约束条件的输入对象进行对比时,可以计算各个向量类别的输入对象代表与满足约束条件的输入对象的匹配度;若各个向量类别的输入对象代表与满足约束条件的输入对象的匹配度大于或者等于预定阈值,则电子设备可以判定各个向量类别的输入对象代表满足约束条件;若各个向量类别的输入对象代表与满足约束条件的输入对象的匹配度小于预定阈值,则电子设备可以判定各个向量类别的输入对象代表不满足约束条件。最后根据不满足约束条件的输入对象代表确定出目标程序的安全漏洞点。
本申请实施例可以扩展侧信道安全漏洞检测的应用对象,将其从加密应用程序扩展到了一般应用程序;基于一般应用程序的代码特性,用模糊测试工具生成大量输入保证了较高的程序路径覆盖度,用测试集约简方法减少了侧信道安全漏洞检测所需的存储开销和时间开销,并实现粗粒度定位目标函数;使用符号执行技术求解满足函数内部不同执行路径对应的输入条件,保证了侧信道安全漏洞检测的准确度。
本申请实施例提出的安全漏洞检测方法,先将目标程序输入至模糊测试工具中,通过模糊测试工具生成目标程序所需要的多个输入对象;然后将各个输入对象分别输入至目标程序中,通过预先设置在目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;再根据各个输入对象对应的执行迹线文件,检测目标程序中是否存在一个或者多个候选安全漏洞函数;若目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到目标程序的安全漏洞检测结果。也就是说,在本申请的技术方案中,可以通过收集各个输入对象对应的执行迹线文件对目标程序中的安全漏洞进行检测。而在现有技术中,需要收集不同输入下的大量目标程序执行信息构成迹线,在目标程序执行路径多或代码复杂的情况下,依然需要对收集到的目标程序执行迹线进行两两比较,这样将产生巨大的存储开销和时间开销,检测效率较为低下。因此,和现有技术相比,本申请实施例提出的安全漏洞检测方法,在保证检测准确度的前提下,可以有效地减少检测过程所产生的存储开销和时间开销,还可以提高安全漏洞检测效率;并且,本申请实施例的技术方案实现简单方便、便于普及,适用范围更广。
实施例四
图4为本申请实施例提供的安全漏洞检测装置的结构示意图。如图4所示,所述安全漏洞检测装置包括:生成模块401、获取模块402、检测模块403和分析模块404;其中,
所述生成模块401,用于将目标程序输入至模糊测试工具中,通过所述模糊测试工具生成所述目标程序所需要的多个输入对象;
所述获取模块402,用于将各个输入对象分别输入至所述目标程序中,通过预先设置在所述目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;
所述检测模块403,用于根据各个输入对象对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数;
所述分析模块404,用于若所述目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到所述目标程序的安全漏洞检测结果。
上述安全漏洞检测装置可执行本申请任意实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请任意实施例提供的安全漏洞检测方法。
实施例五
图5为本申请实施例提供的电子设备的结构示意图。图5示出了适于用来实现本申请实施方式的示例性电子设备的框图。图5显示的电子设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,电子设备12以通用计算设备的形式表现。电子设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
电子设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被电子设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。电子设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图5未显示,通常称为“硬盘驱动器”)。尽管图5中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。
电子设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该电子设备12交互的设备通信,和/或与使得该电子设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,电子设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与电子设备12的其它模块通信。应当明白,尽管图5中未示出,可以结合电子设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本申请实施例所提供的安全漏洞检测方法。
实施例六
本申请实施例提供了一种计算机存储介质。
本申请实施例的计算机可读存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本申请的较佳实施例及所运用技术原理。本领域技术人员会理解,本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由所附的权利要求范围决定。
Claims (10)
1.一种安全漏洞检测方法,其特征在于,所述方法包括:
将目标程序输入至模糊测试工具中,通过所述模糊测试工具生成所述目标程序所需要的多个输入对象;
将各个输入对象分别输入至所述目标程序中,通过预先设置在所述目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;
根据各个输入对象对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数;
若所述目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到所述目标程序的安全漏洞检测结果。
2.根据权利要求1所述的方法,其特征在于,根据各个输入对象对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数,包括:
将各个输入对象对应的执行迹线文件转换为向量,得到各个执行迹线文件对应的向量;
将全部执行迹线文件对应的向量进行聚类,得到全部执行迹线文件对应的向量的聚类结果;其中,全部执行迹线文件对应的向量的聚类结果中包括一个或者多个向量类别;
根据全部执行迹线文件对应的向量的聚类结果,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数。
3.根据权利要求2所述的方法,其特征在于,根据全部执行迹线文件对应的向量的聚类结果,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数,包括:
针对各个向量类别分别选取任意一个输入对象作为该向量类别的输入对象代表;
根据各个向量类别的输入对象代表对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数。
4.根据权利要求3所述的方法,其特征在于,根据各个向量类别的输入对象代表对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数,包括:
在全部向量类别的输入对象代表对应的执行迹线文件中提取出两个执行迹线文件分别作为当前第一执行迹线文件和当前第二执行迹线文件;
将所述当前第一执行迹线文件和所述当前第二执行迹线文件进行对比,得到所述当前第一执行迹线文件和所述当前第二执行迹线文件的对比结果;重复执行上述操作,直到得到全部向量类别的输入对象代表对应的执行迹线文件中每两个执行迹线文件的对比结果;其中,所述对比结果包括:一致和不一致;
根据全部向量类别的输入对象代表对应的执行迹线文件中每两个执行迹线文件的对比结果,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数。
5.根据权利要求4所述的方法,其特征在于,将所述当前第一执行迹线文件和所述当前第二执行迹线文件进行对比,得到所述当前第一执行迹线文件和所述当前第二执行迹线文件的对比结果,包括:
在所述当前第一执行迹线文件中提取出一个或者多个第一函数调用信息,在所述当前第二执行迹线文件中提取出一个或者多个第二函数调用信息;
若各个第一函数调用信息分别与对应的各个第二函数调用信息相同,则判定所述当前第一执行迹线文件和所述当前第二执行迹线文件一致;若任意一个第一函数调用信息与对应的第二函数调用信息不相同,则判定所述当前第一执行迹线文件和所述当前第二执行迹线文件不一致。
6.根据权利要求4所述的方法,其特征在于,根据全部向量类别的输入对象代表对应的执行迹线文件中每两个执行迹线文件的对比结果,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数,包括:
若全部输入对象对应的执行迹线文件中任意两个执行迹线文件不一致,则判定所述目标程序中存在一个或者多个候选安全漏洞函数;若全部输入对象对应的执行迹线文件中每两个执行迹线文件均一致,则判定所述目标程序中不存在候选安全漏洞函数。
7.根据权利要求3所述的方法,其特征在于,对各个候选安全漏洞函数进行分析,得到所述目标程序的安全漏洞检测结果,包括:
将各个候选安全漏洞函数的原始输入数据转换为符号化表示的输入数据;
将各个候选安全漏洞函数的符号化表示的输入数据输入至各个候选安全漏洞函数中,得到各个候选安全漏洞函数的符号化表示的输出数据;
将各个候选安全漏洞函数的符号化表示的输出数据输入至约束求解器中,通过所述约束求解器求解出满足约束条件的输入对象;
将各个向量类别的输入对象代表和所述满足约束条件的输入对象进行对比,得到各个向量类别的输入对象代表和所述满足约束条件的输入对象的对比结果,并根据各个向量类别的输入对象代表和所述满足约束条件的输入对象的对比结果确定所述目标程序的安全漏洞检测结果。
8.一种安全漏洞检测装置,其特征在于,所述装置包括:生成模块、获取模块、检测模块和分析模块;其中,
所述生成模块,用于将目标程序输入至模糊测试工具中,通过所述模糊测试工具生成所述目标程序所需要的多个输入对象;
所述获取模块,用于将各个输入对象分别输入至所述目标程序中,通过预先设置在所述目标程序中的插桩工具获取到各个输入对象对应的执行迹线文件;
所述检测模块,用于根据各个输入对象对应的执行迹线文件,检测所述目标程序中是否存在一个或者多个候选安全漏洞函数;
所述分析模块,用于若所述目标程序中存在一个或者多个候选安全漏洞函数,则对各个候选安全漏洞函数进行分析,得到所述目标程序的安全漏洞检测结果。
9.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至7中任一项所述的安全漏洞检测方法。
10.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一项所述的安全漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311630647.8A CN117633813A (zh) | 2023-11-30 | 2023-11-30 | 一种安全漏洞检测方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311630647.8A CN117633813A (zh) | 2023-11-30 | 2023-11-30 | 一种安全漏洞检测方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117633813A true CN117633813A (zh) | 2024-03-01 |
Family
ID=90017803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311630647.8A Pending CN117633813A (zh) | 2023-11-30 | 2023-11-30 | 一种安全漏洞检测方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117633813A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118132388A (zh) * | 2024-05-07 | 2024-06-04 | 中国人民解放军国防科技大学 | 一种程序执行路径确定方法、装置、设备及介质 |
-
2023
- 2023-11-30 CN CN202311630647.8A patent/CN117633813A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118132388A (zh) * | 2024-05-07 | 2024-06-04 | 中国人民解放军国防科技大学 | 一种程序执行路径确定方法、装置、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107992596B (zh) | 一种文本聚类方法、装置、服务器和存储介质 | |
CN112115706B (zh) | 文本处理方法、装置、电子设备及介质 | |
US11520993B2 (en) | Word-overlap-based clustering cross-modal retrieval | |
CN110245232B (zh) | 文本分类方法、装置、介质和计算设备 | |
CN110263340B (zh) | 评论生成方法、装置、服务器及存储介质 | |
CN113672931B (zh) | 一种基于预训练的软件漏洞自动检测方法及装置 | |
CN117633813A (zh) | 一种安全漏洞检测方法、装置、电子设备及存储介质 | |
CN109947924B (zh) | 对话系统训练数据构建方法、装置、电子设备及存储介质 | |
CN107908783B (zh) | 检索文本相关性的评估方法、装置、服务器和存储介质 | |
CN112685738B (zh) | 一种基于多级投票机制的恶意混淆脚本静态检测方法 | |
Ekbal et al. | A hidden markov model based named entity recognition system: Bengali and hindi as case studies | |
WO2022041956A1 (zh) | 一种晶圆探测数据的处理方法和计算机可读存储介质 | |
CN110806962B (zh) | 日志级别的预测方法、设备及存储介质 | |
CN113096687B (zh) | 音视频处理方法、装置、计算机设备及存储介质 | |
CN110020190B (zh) | 一种基于多示例学习的可疑威胁指标验证方法及系统 | |
CN111738290B (zh) | 图像检测方法、模型构建和训练方法、装置、设备和介质 | |
CN113553309A (zh) | 一种日志模板的确定方法、装置、电子设备及存储介质 | |
CN111240971B (zh) | 风控规则测试用例的生成方法、装置、服务器和存储介质 | |
CN116257601A (zh) | 一种基于深度学习的违法词库构建方法及系统 | |
CN111949765B (zh) | 基于语义的相似文本搜索方法、系统、设备和存储介质 | |
CN113805861A (zh) | 基于机器学习的代码生成方法、代码编辑系统及存储介质 | |
CN113792138A (zh) | 报表生成方法、装置、电子设备及存储介质 | |
CN114357984A (zh) | 一种基于拼音的同音字变体处理方法 | |
Chang et al. | Code Transform Model Producing High-Performance Program. | |
CN112037819B (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 |