CN114579972A - 嵌入式开发程序的漏洞识别方法及系统 - Google Patents
嵌入式开发程序的漏洞识别方法及系统 Download PDFInfo
- Publication number
- CN114579972A CN114579972A CN202210049942.3A CN202210049942A CN114579972A CN 114579972 A CN114579972 A CN 114579972A CN 202210049942 A CN202210049942 A CN 202210049942A CN 114579972 A CN114579972 A CN 114579972A
- Authority
- CN
- China
- Prior art keywords
- embedded
- boundary condition
- embedded code
- code
- generating
- 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
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/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
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)
- Stored Programmes (AREA)
Abstract
本发明涉及漏洞检测技术领域,具体公开了一种嵌入式开发程序的漏洞识别方法及系统,所述方法包括接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机;接收用户上传的测试表,根据所述测试表对所述嵌入式代码初步检测;当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表;根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告。本发明通过搭建虚拟机,简化代码下载过程,通过代码检测,生成边界条件表,对代码进行全方位、高效率的检测,漏洞发现能力强,检测效率高,便于推广使用。
Description
技术领域
本发明涉及漏洞检测技术领域,具体是一种嵌入式开发程序的漏洞识别方法及系统。
背景技术
嵌入式开发是指利用分立元件或集成器件进行电路设计、结构设计,再进行软件编程(通常是高级语言),实验,经过多轮修改设计、制作,最终完成整个系统的开发。
嵌入式开发是一种软硬件结合的开发技术,需要不断的进行调试,才能发现代码中的漏洞;在调试的过程中,每次调试均需要将代码下载至微处理器,再观察调试结果,这些过程重复性很高,较为繁琐,此外,工作人员的精力是有限的,如果对每个条件都进行测试,劳动量极大。
因此,如何提高调试效率,更快的检测嵌入式代码的漏洞是本发明技术方案想要解决的技术问题。
发明内容
本发明的目的在于提供一种嵌入式开发程序的漏洞识别方法及系统,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:
一种嵌入式开发程序的漏洞识别方法,所述方法包括:
接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机;
接收用户上传的测试表,根据所述测试表对所述嵌入式代码初步检测;其中,所述测试表包括输入项和对应的输出项;
当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表;
根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告。
作为本发明技术方案进一步的限定:所述接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机的步骤包括:
接收用户上传的电子元件型号和连接关系;所述环境参数包括电子元件型号;
根据所述电子元件型号在预设的虚拟元件库中读取虚拟元件,当读取结果为空时,开放虚拟元件新建端口;
根据所述虚拟元件新建端口获取虚拟元件的硬件架构和数据结构;
接收所述连接关系连接虚拟元件,根据连接后的虚拟元件编译用户上传的嵌入式代码,当编译结果为成功时,封装连接后的虚拟元件,得到虚拟机。
作为本发明技术方案进一步的限定:所述当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表的步骤包括:
当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,标记嵌入式代码中的分隔符;
根据所述分隔符将所述嵌入式代码拆分为含有位置信息的子代码;所述位置信息为相对于嵌入式代码起始点的相对位置;
提取所述子代码中的条件语句,读取所述条件语句中的边界条件,得到以所述子代码的位置信息为索引项的边界条件子表;
连接所述边界条件子表,得到边界条件表。
作为本发明技术方案进一步的限定:所述根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告的步骤包括:
读取所述边界条件表中的边界条件子表及其位置信息;
提取并组合所述边界条件子表中所有的边界条件,得到预设数量的边界条件组;
根据所述位置信息定位所述嵌入式代码中的子代码;
将所述边界条件组输入所述子代码,得到输出信息,根据所述输出信息生成检测报告。
作为本发明技术方案进一步的限定:所述方法还包括:
根据预设的分类规则将虚拟机分为若干个独立的模块,并获取各模块的存储结构;其中,所述存储结构包括硬件结构和运算规则;
根据所述存储结构确定测试数据,并将所述测试数据向相应的模块发送,获取各模块的输出数据;其中,所述测试数据包括随机数据和指令数据,所述随机数据的长度由所述硬件结构确定;
对所述输出数据和所述测试数据进行规律性分析和关联性分析,根据规律性分析结果和关联性分析结果生成该模块的风险值;
当所述风险值大于预设的风险阈值时,标记相应的模块,根据标记的模块生成风险评估报告。
作为本发明技术方案进一步的限定:对所述输出数据和所述测试数据进行规律性分析的步骤包括:
根据预设的转换公式分别将所述输出数据和所述测试数据转换为第一特征值和第二特征值;
根据所述第一特征值和所述第二特征值在预设的平面图中生成坐标点;所述平面图中含有坐标轴,所述坐标轴实时根据所述第一特征值和所述第二特征值的量级进行适应性调整;
对含有坐标点的平面图进行离散性分析,根据离散性分析结果生成规律级别。
作为本发明技术方案进一步的限定:对所述输出数据和所述测试数据进行关联性分析的步骤包括:
提取所述测试中的指令数据,根据预设的转换公式分别将所述指令数据和所述测试数据转换为第三特征值和第二特征值,得到特征值组;
根据所述特征值组生成采样表,随机提取所述采样表中预设数量的特征值组,确定拟合函数;
将其他特征值组中的第三特征值输入所述拟合函数,得到预测值;
计算所述预测值和相应的第二特征值之间的偏移率,根据所述偏移率确定关联级别。
本发明技术方案还提供了一种嵌入式开发程序的漏洞识别系统,所述系统包括:
虚拟机生成模块,用于接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机;
初步检测模块,用于接收用户上传的测试表,根据所述测试表对所述嵌入式代码初步检测;其中,所述测试表包括输入项和对应的输出项;
边界条件提取模块,用于当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表;
二次检测模块,用于根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告。
作为本发明技术方案进一步的限定:所述虚拟机生成模块包括:
元件获取单元,用于接收用户上传的电子元件型号和连接关系;所述环境参数包括电子元件型号;
新建单元,用于根据所述电子元件型号在预设的虚拟元件库中读取虚拟元件,当读取结果为空时,开放虚拟元件新建端口;
数据读取单元,用于根据所述虚拟元件新建端口获取虚拟元件的硬件架构和数据结构;
编译验证单元,用于接收所述连接关系连接虚拟元件,根据连接后的虚拟元件编译用户上传的嵌入式代码,当编译结果为成功时,封装连接后的虚拟元件,得到虚拟机。
作为本发明技术方案进一步的限定:所述边界条件提取模块包括:
分隔符标记单元,用于当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,标记嵌入式代码中的分隔符;
代码拆分单元,用于根据所述分隔符将所述嵌入式代码拆分为含有位置信息的子代码;所述位置信息为相对于嵌入式代码起始点的相对位置;
子表生成单元,用于提取所述子代码中的条件语句,读取所述条件语句中的边界条件,得到以所述子代码的位置信息为索引项的边界条件子表;
连接单元,用于连接所述边界条件子表,得到边界条件表。
与现有技术相比,本发明的有益效果是:本发明通过搭建虚拟机,简化代码下载过程,通过代码检测,生成边界条件表,对代码进行全方位、高效率的检测,漏洞发现能力强,检测效率高,便于推广使用。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例。
图1示出了嵌入式开发程序的漏洞识别方法的流程框图。
图2示出了嵌入式开发程序的漏洞识别方法的第一子流程框图。
图3示出了嵌入式开发程序的漏洞识别方法的第二子流程框图。
图4示出了嵌入式开发程序的漏洞识别方法的第三子流程框图。
图5示出了嵌入式开发程序的漏洞识别系统的组成结构框图。
图6示出了嵌入式开发程序的漏洞识别系统中虚拟机生成模块的组成结构框图。
图7示出了嵌入式开发程序的漏洞识别系统中边界条件提取模块的组成结构框图。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例1
图1示出了嵌入式开发程序的漏洞识别方法的流程框图,本发明实施例中,一种嵌入式开发程序的漏洞识别方法,所述方法包括:
步骤S100:接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机;
嵌入式代码都会有着自己的应用环境,举例来说,现有的学习用的stm32开发板,上面有许多基础模块,工作人员在设计完代码后,都会将代码输入该系统,然后观察各个模块的输出,根据输出对嵌入式代码进行调试。步骤S100的目的是根据实际的情况生成一个虚拟机,比如,生成一个虚拟的stm32开发板,在虚拟机中进行代码测试。
步骤S200:接收用户上传的测试表,根据所述测试表对所述嵌入式代码初步检测;其中,所述测试表包括输入项和对应的输出项;
初步检测的过程较为简单,其主体实际上是工作人员,工作人员将需要测试的内容输入至测试表,所述测试表中含有输入项及相应的预测输出项,依次将所述输入项输入虚拟机,得到实际输出项,比对所述实际输出项和所述预测输出项即可完成初步检测步骤。
步骤S300:当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表;
在嵌入式代码中,有着各种各样的判断条件,如果编写语言是C语言,那么像i f语句或循环语句中都会存在判断条件,这些判断条件的边界点是最容易出现错误的地方;可以想到,在一个代码量较大的嵌入式代码中,边界条件的组合方式有很多,工作人员一一测试显然是不可能的,但是对于这些边界条件的检测又非常重要,因此,步骤S300的目的就是自动完成对边界条件的检测。
步骤S400:根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告。
步骤S400是数据整合过程,根据两次检测结果生成检测报告。
图2示出了嵌入式开发程序的漏洞识别方法的第一子流程框图,所述接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机的步骤包括步骤S101至步骤S104:
步骤S101:接收用户上传的电子元件型号和连接关系;所述环境参数包括电子元件型号;
步骤S102:根据所述电子元件型号在预设的虚拟元件库中读取虚拟元件,当读取结果为空时,开放虚拟元件新建端口;
步骤S103:根据所述虚拟元件新建端口获取虚拟元件的硬件架构和数据结构;
步骤S104:接收所述连接关系连接虚拟元件,根据连接后的虚拟元件编译用户上传的嵌入式代码,当编译结果为成功时,封装连接后的虚拟元件,得到虚拟机。
步骤S101至步骤S104对虚拟机的生成过程进行了进一步的限定,虚拟机的生成过程其实就是虚拟元件的确定过程,大部分虚拟元件都是标准件,当然,也有一小部分的元件由于各种各样的原因,虚拟元件库中并没有收录,因此,步骤S103还提供了用户输入的功能;搭建完虚拟机之后,基于虚拟机对嵌入式代码进行编译,这一步骤既可检测虚拟机的运行情况,也可以检测嵌入式代码的语法错误。
图3示出了嵌入式开发程序的漏洞识别方法的第二子流程框图,所述当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表的步骤包括步骤S301至步骤S304:
步骤S301:当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,标记嵌入式代码中的分隔符;
步骤S302:根据所述分隔符将所述嵌入式代码拆分为含有位置信息的子代码;所述位置信息为相对于嵌入式代码起始点的相对位置;
步骤S303:提取所述子代码中的条件语句,读取所述条件语句中的边界条件,得到以所述子代码的位置信息为索引项的边界条件子表;
步骤S304:连接所述边界条件子表,得到边界条件表。
步骤S301至步骤S304的重点是边界条件的组合过程,当嵌入式代码中的代码量很大时,其判断条件也有可能会很多,对于这些判断条件的组合方式,它是基于乘法原理的,因此,组合方式也很多,最终生成的边界条件表的计算量极大;因此,如果对嵌入式代码进行拆分,对每一段子代码进行独立的边界条件组合操作,可以极大的提高工作效率。
图4示出了嵌入式开发程序的漏洞识别方法的第三子流程框图,所述根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告的步骤包括步骤S401至步骤S404:
步骤S401:读取所述边界条件表中的边界条件子表及其位置信息;
步骤S402:提取并组合所述边界条件子表中所有的边界条件,得到预设数量的边界条件组;
步骤S403:根据所述位置信息定位所述嵌入式代码中的子代码;
步骤S404:将所述边界条件组输入所述子代码,得到输出信息,根据所述输出信息生成检测报告。
步骤S401至步骤S404是结果输出步骤,在边界条件表确定的前提下,基于所述边界条件表对嵌入式代码进行检测就是简单的基于数据库的读取操作。
作为本发明技术方案的一个优选实施例,所述方法还包括:
根据预设的分类规则将虚拟机分为若干个独立的模块,并获取各模块的存储结构;其中,所述存储结构包括硬件结构和运算规则;
根据所述存储结构确定测试数据,并将所述测试数据向相应的模块发送,获取各模块的输出数据;其中,所述测试数据包括随机数据和指令数据,所述随机数据的长度由所述硬件结构确定;
对所述输出数据和所述测试数据进行规律性分析和关联性分析,根据规律性分析结果和关联性分析结果生成该模块的风险值;
当所述风险值大于预设的风险阈值时,标记相应的模块,根据标记的模块生成风险评估报告。
上述内容是基于本发明技术方案的进一步限定,也是一种特殊的检测方式,根据输入与输出数据,从宏观上对整个嵌入式代码进行分析,判断是否存在漏洞。
对于嵌入式开发来说,它是软硬件结合的一项技术,其产生漏洞的原因除了代码,还有存储器方面的原因,有这样一种攻击方式,通过输入海量数据,使得某存储器溢出,进而通过这些溢出的数据进行攻击,这是一类现有技术几乎忽略的漏洞。
上述内容的核心思想是通过一些溢出的数据,也就是测试数据,对嵌入式代码进行检测,所述测试数据包括随机数据和指令数据,随机数据和硬件结构的存储能力相关,需要达到硬件结构的存储限额,然后使得指令数据是溢出的数据;然后,获取嵌入式代码根据这一测试数据生成的输出数据,如果这些输出数据自身存在规律或者它与指令数据存在一定的相关性,那就说明它很有可能存在漏洞。
值得一提的是,现有的嵌入式开发硬件系统,很少会出现直接报错的情况,因为如果每一个模块都存在很多报错要求,那么一点点波动都会导致整个嵌入式代码无法运行。
进一步的,对所述输出数据和所述测试数据进行规律性分析的步骤包括:
根据预设的转换公式分别将所述输出数据和所述测试数据转换为第一特征值和第二特征值;
根据所述第一特征值和所述第二特征值在预设的平面图中生成坐标点;所述平面图中含有坐标轴,所述坐标轴实时根据所述第一特征值和所述第二特征值的量级进行适应性调整;
对含有坐标点的平面图进行离散性分析,根据离散性分析结果生成规律级别。
规律性分析的目的是判断测试数据是否存在规律性,比如,对于相似的一些的测试数据,其输出数据也是相似的,只要存在这种规律,那么就很有可能通过不断的测试,使得最终的输出数据存在一定的意义。最好的方式的是,输入同样的测试数据,其输出数据是随机的。
对于规律性分析的方法很简单,将所述输出数据和所述测试数据分别转换为第一特征值和第二特征值,这种方式通过自由设定的转换公式即可,其目的是简化数据,将长数据转换为一个单数据,对于这些单数据,可以在平面图中生成坐标,得到一张含有多个坐标点的平面图,对于这张平面图的离散分析就是对所述输出数据和所述测试数据规律性分析。其中,对于平面图的离散分析是一种常见的现有技术,对于本领域技术人员来说,借助一些简单的统计学原理即可设计出完成离散分析的智能过程。
具体的,对所述输出数据和所述测试数据进行关联性分析的步骤包括:
提取所述测试中的指令数据,根据预设的转换公式分别将所述指令数据和所述测试数据转换为第三特征值和第二特征值,得到特征值组;
根据所述特征值组生成采样表,随机提取所述采样表中预设数量的特征值组,确定拟合函数;
将其他特征值组中的第三特征值输入所述拟合函数,得到预测值;
计算所述预测值和相应的第二特征值之间的偏移率,根据所述偏移率确定关联级别。
关联性分析的主体是指令数据和输出数据,它采取的是一种预测的方式,根据已有的一些指令数据和输出数据,得到一个拟合函数,如果新的数据符合这一拟合函数,就可以认为它们之间存在某种关联。
实施例2
图5示出了嵌入式开发程序的漏洞识别系统的组成结构框图,本发明实施例中,一种嵌入式开发程序的漏洞识别系统,所述系统10包括:
虚拟机生成模块11,用于接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机;
初步检测模块12,用于接收用户上传的测试表,根据所述测试表对所述嵌入式代码初步检测;其中,所述测试表包括输入项和对应的输出项;
边界条件提取模块13,用于当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表;
二次检测模块14,用于根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告。
图6示出了嵌入式开发程序的漏洞识别系统中虚拟机生成模块的组成结构框图,所述虚拟机生成模块11包括:
元件获取单元111,用于接收用户上传的电子元件型号和连接关系;所述环境参数包括电子元件型号;
新建单元112,用于根据所述电子元件型号在预设的虚拟元件库中读取虚拟元件,当读取结果为空时,开放虚拟元件新建端口;
数据读取单元113,用于根据所述虚拟元件新建端口获取虚拟元件的硬件架构和数据结构;
编译验证单元114,用于接收所述连接关系连接虚拟元件,根据连接后的虚拟元件编译用户上传的嵌入式代码,当编译结果为成功时,封装连接后的虚拟元件,得到虚拟机。
图7示出了嵌入式开发程序的漏洞识别系统中边界条件提取模块的组成结构框图,所述边界条件提取模块13包括:
分隔符标记单元131,用于当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,标记嵌入式代码中的分隔符;
代码拆分单元132,用于根据所述分隔符将所述嵌入式代码拆分为含有位置信息的子代码;所述位置信息为相对于嵌入式代码起始点的相对位置;
子表生成单元133,用于提取所述子代码中的条件语句,读取所述条件语句中的边界条件,得到以所述子代码的位置信息为索引项的边界条件子表;
连接单元134,用于连接所述边界条件子表,得到边界条件表。
所述嵌入式开发程序的漏洞识别方法所能实现的功能均由计算机设备完成,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述程序代码由所述一个或多个处理器加载并执行以实现所述嵌入式开发程序的漏洞识别方法的功能。
处理器从存储器中逐条取出指令、分析指令,然后根据指令要求完成相应操作,产生一系列控制命令,使计算机各部分自动、连续并协调动作,成为一个有机的整体,实现程序的输入、数据的输入以及运算并输出结果,这一过程中产生的算术运算或逻辑运算均由运算器完成;所述存储器包括只读存储器(Read-Only Memory,ROM),所述只读存储器用于存储计算机程序,所述存储器外部设有保护装置。
示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在终端设备中的执行过程。
本领域技术人员可以理解,上述服务设备的描述仅仅是示例,并不构成对终端设备的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,上述处理器是上述终端设备的控制中心,利用各种接口和线路连接整个用户终端的各个部分。
上述存储器可用于存储计算机程序和/或模块,上述处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现上述终端设备的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如信息采集模板展示功能、产品信息发布功能等)等;存储数据区可存储根据泊位状态显示系统的使用所创建的数据(比如不同产品种类对应的产品信息采集模板、不同产品提供方需要发布的产品信息等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例系统中的全部或部分模块/单元,也可以通过计算机程序来指令相关的硬件来完成,上述的计算机程序可存储于计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个系统实施例的功能。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种嵌入式开发程序的漏洞识别方法,其特征在于,所述方法包括:
接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机;
接收用户上传的测试表,根据所述测试表对所述嵌入式代码初步检测;其中,所述测试表包括输入项和对应的输出项;
当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表;
根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告。
2.根据权利要求1所述的嵌入式开发程序的漏洞识别方法,其特征在于,所述接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机的步骤包括:
接收用户上传的电子元件型号和连接关系;所述环境参数包括电子元件型号;
根据所述电子元件型号在预设的虚拟元件库中读取虚拟元件,当读取结果为空时,开放虚拟元件新建端口;
根据所述虚拟元件新建端口获取虚拟元件的硬件架构和数据结构;
接收所述连接关系连接虚拟元件,根据连接后的虚拟元件编译用户上传的嵌入式代码,当编译结果为成功时,封装连接后的虚拟元件,得到虚拟机。
3.根据权利要求1所述的嵌入式开发程序的漏洞识别方法,其特征在于,所述当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表的步骤包括:
当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,标记嵌入式代码中的分隔符;
根据所述分隔符将所述嵌入式代码拆分为含有位置信息的子代码;所述位置信息为相对于嵌入式代码起始点的相对位置;
提取所述子代码中的条件语句,读取所述条件语句中的边界条件,得到以所述子代码的位置信息为索引项的边界条件子表;
连接所述边界条件子表,得到边界条件表。
4.根据权利要求1所述的嵌入式开发程序的漏洞识别方法,其特征在于,所述根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告的步骤包括:
读取所述边界条件表中的边界条件子表及其位置信息;
提取并组合所述边界条件子表中所有的边界条件,得到预设数量的边界条件组;
根据所述位置信息定位所述嵌入式代码中的子代码;
将所述边界条件组输入所述子代码,得到输出信息,根据所述输出信息生成检测报告。
5.根据权利要求1所述的嵌入式开发程序的漏洞识别方法,其特征在于,所述方法还包括:
根据预设的分类规则将虚拟机分为若干个独立的模块,并获取各模块的存储结构;其中,所述存储结构包括硬件结构和运算规则;
根据所述存储结构确定测试数据,并将所述测试数据向相应的模块发送,获取各模块的输出数据;其中,所述测试数据包括随机数据和指令数据,所述随机数据的长度由所述硬件结构确定;
对所述输出数据和所述测试数据进行规律性分析和关联性分析,根据规律性分析结果和关联性分析结果生成该模块的风险值;
当所述风险值大于预设的风险阈值时,标记相应的模块,根据标记的模块生成风险评估报告。
6.根据权利要求1所述的嵌入式开发程序的漏洞识别方法,其特征在于,对所述输出数据和所述测试数据进行规律性分析的步骤包括:
根据预设的转换公式分别将所述输出数据和所述测试数据转换为第一特征值和第二特征值;
根据所述第一特征值和所述第二特征值在预设的平面图中生成坐标点;所述平面图中含有坐标轴,所述坐标轴实时根据所述第一特征值和所述第二特征值的量级进行适应性调整;
对含有坐标点的平面图进行离散性分析,根据离散性分析结果生成规律级别。
7.根据权利要求6所述的嵌入式开发程序的漏洞识别方法,其特征在于,对所述输出数据和所述测试数据进行关联性分析的步骤包括:
提取所述测试中的指令数据,根据预设的转换公式分别将所述指令数据和所述测试数据转换为第三特征值和第二特征值,得到特征值组;
根据所述特征值组生成采样表,随机提取所述采样表中预设数量的特征值组,确定拟合函数;
将其他特征值组中的第三特征值输入所述拟合函数,得到预测值;
计算所述预测值和相应的第二特征值之间的偏移率,根据所述偏移率确定关联级别。
8.一种嵌入式开发程序的漏洞识别系统,其特征在于,所述系统包括:
虚拟机生成模块,用于接收用户上传的含有环境参数的嵌入式代码,基于所述环境参数生成虚拟机;
初步检测模块,用于接收用户上传的测试表,根据所述测试表对所述嵌入式代码初步检测;其中,所述测试表包括输入项和对应的输出项;
边界条件提取模块,用于当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,识别并提取所述嵌入式代码中的条件代码,根据所述条件代码生成边界条件表;
二次检测模块,用于根据所述边界条件表对所述嵌入式代码进行二次检测,并根据初步检测结果和二次检测结果生成检测报告。
9.根据权利要求8所述的嵌入式开发程序的漏洞识别系统,其特征在于,所述虚拟机生成模块包括:
元件获取单元,用于接收用户上传的电子元件型号和连接关系;所述环境参数包括电子元件型号;
新建单元,用于根据所述电子元件型号在预设的虚拟元件库中读取虚拟元件,当读取结果为空时,开放虚拟元件新建端口;
数据读取单元,用于根据所述虚拟元件新建端口获取虚拟元件的硬件架构和数据结构;
编译验证单元,用于接收所述连接关系连接虚拟元件,根据连接后的虚拟元件编译用户上传的嵌入式代码,当编译结果为成功时,封装连接后的虚拟元件,得到虚拟机。
10.根据权利要求8所述的嵌入式开发程序的漏洞识别系统,其特征在于,所述边界条件提取模块包括:
分隔符标记单元,用于当所述嵌入式代码通过初步检测时,遍历所述嵌入式代码,标记嵌入式代码中的分隔符;
代码拆分单元,用于根据所述分隔符将所述嵌入式代码拆分为含有位置信息的子代码;所述位置信息为相对于嵌入式代码起始点的相对位置;
子表生成单元,用于提取所述子代码中的条件语句,读取所述条件语句中的边界条件,得到以所述子代码的位置信息为索引项的边界条件子表;
连接单元,用于连接所述边界条件子表,得到边界条件表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049942.3A CN114579972A (zh) | 2022-01-17 | 2022-01-17 | 嵌入式开发程序的漏洞识别方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210049942.3A CN114579972A (zh) | 2022-01-17 | 2022-01-17 | 嵌入式开发程序的漏洞识别方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114579972A true CN114579972A (zh) | 2022-06-03 |
Family
ID=81772427
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210049942.3A Pending CN114579972A (zh) | 2022-01-17 | 2022-01-17 | 嵌入式开发程序的漏洞识别方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114579972A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114626A (zh) * | 2022-08-26 | 2022-09-27 | 国网江西省电力有限公司电力科学研究院 | 工业设备代码检测方法、系统、计算机设备及存储介质 |
CN115174276A (zh) * | 2022-09-07 | 2022-10-11 | 国网江西省电力有限公司电力科学研究院 | 一种竞争式工业控制系统漏洞挖掘方法及系统 |
-
2022
- 2022-01-17 CN CN202210049942.3A patent/CN114579972A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115114626A (zh) * | 2022-08-26 | 2022-09-27 | 国网江西省电力有限公司电力科学研究院 | 工业设备代码检测方法、系统、计算机设备及存储介质 |
CN115174276A (zh) * | 2022-09-07 | 2022-10-11 | 国网江西省电力有限公司电力科学研究院 | 一种竞争式工业控制系统漏洞挖掘方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9274923B2 (en) | System and method for stack crawl testing and caching | |
CN114579972A (zh) | 嵌入式开发程序的漏洞识别方法及系统 | |
Lawall et al. | WYSIWIB: A declarative approach to finding API protocols and bugs in Linux code | |
US11327722B1 (en) | Programming language corpus generation | |
CN113497809A (zh) | 基于控制流和数据流分析的mips架构漏洞挖掘方法 | |
CN111459495A (zh) | 单元测试代码文件生成方法、电子装置及存储介质 | |
CN109388573B (zh) | 一种无漏报的中断驱动型程序运行时错误检测方法和系统 | |
KR101979329B1 (ko) | 바이너리의 취약점을 유발하는 입력데이터 위치 추적 방법 및 그 장치 | |
CN116136950B (zh) | 芯片验证方法、装置、系统、电子设备及存储介质 | |
CN112506757A (zh) | 自动测试方法、系统、计算机设备及其介质 | |
CN107643893A (zh) | 一种程序检测方法及装置 | |
CN116933267B (zh) | 一种符号执行的智能合约漏洞检测方法、系统和设备 | |
CN112685316A (zh) | 代码执行路径的获取方法、装置、计算机设备及存储介质 | |
RU168346U1 (ru) | Устройство выявления уязвимостей | |
CN115659337A (zh) | 一种计算机网络防御方法以及系统 | |
CN115309661A (zh) | 一种应用测试方法、装置、电子设备及可读存储介质 | |
CN101916221A (zh) | 一种针对设备进行单元测试的方法和系统 | |
CN115237753A (zh) | 固件排错方法、系统、终端设备及存储介质 | |
CN111339035B (zh) | 一种目标数据的查询方法、装置、计算机设备和存储介质 | |
KR100924519B1 (ko) | 소프트웨어 보안 테스팅을 수행하기 위한 알려지지 않은파일 포맷 분석 시스템 및 방법 | |
CN114579975A (zh) | 漏洞管理方法、系统、计算机设备及存储介质 | |
CN113806231A (zh) | 一种代码覆盖率分析方法、装置、设备和介质 | |
WO2021104027A1 (zh) | 代码性能检测方法、装置、设备及存储介质 | |
CN112003837A (zh) | 基于Modbus协议的设备智能适配方法、装置及存储介质 | |
CN117555811B (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 |