CN109525556A - 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 - Google Patents
一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 Download PDFInfo
- Publication number
- CN109525556A CN109525556A CN201811215517.7A CN201811215517A CN109525556A CN 109525556 A CN109525556 A CN 109525556A CN 201811215517 A CN201811215517 A CN 201811215517A CN 109525556 A CN109525556 A CN 109525556A
- Authority
- CN
- China
- Prior art keywords
- protocol
- feature
- code
- firmware
- resolution module
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Evolutionary Biology (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统,通过分析协议解析代码特征构造特征向量;利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型用于识别协议解析模块;使用训练出的协议解析代码分类器模型识别目标系统的固件映像代码中的协议解析模块;针对识别的协议解析模块,利用危险代码特征库对协议解析模块进行可疑脆弱点快速扫描;构建控制流图、控制依赖图、数据依赖图,在此基础上提取出脆弱点的数据源路径;构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞,能够为网络协议安全、物联网/工业控制系统安全及安全测试提供了技术支撑。
Description
技术领域
本发明涉及网络协议安全、物联网/工业控制系统安全及安全测试技术领域,并且更具体地,涉及一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统。
背景技术
如今,嵌入式系统已广泛应用于众多应用中。嵌入式系统中的固件通常是定制的,以提供一组非常专业化的功能。他们很容易发生异常风险,但传统的整体程序分析在发现漏洞方面效率很低。首先,源代码和设计文档通常是专有的,因此只有二进制固件映像可用,所以静态分析由于缺乏语义信息而非常耗时。然后,由于不同嵌入式设备的外设存在很大差异,统一的动态仿真分析极为困难。另外,固件比较技术受到大的时间和空间开销以及低精度的影响。
因此,需要一种高效发现嵌入式系统中污点类协议漏洞的方法,以发现嵌入式系统固件中的协议漏洞。
发明内容
本发明提出一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统,以解决如何发现嵌入式系统固件中协议漏洞的问题。
为了解决上述问题,根据本发明的一个方面,提供了一种用于确定嵌入式系统固件中协议漏洞的轻量级方法,所述方法包括:
步骤1,分析获取的多个嵌入式设备的固件映像中每个嵌入式设备的固件映像对应的协议解析模块代码段,并提取每个协议解析模块对应的多个表征特征构造特征向量;
步骤2,将所述多个嵌入式设备的固件映像分为训练集和测试集,利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型;
步骤3,利用所述测试集验证所述协议解析代码分类器模型的准确性是否满足预设要求,若满足,则利用当前的协议解析代码分类器模型识别目标系统的固件映像的代码以获取目标系统的固件映像对应的协议解析模块代码段;反之,调整所述协议解析代码分类器模型的参数并返回步骤2;
步骤4,利用危险代码特征库对获取的目标系统的固件映像对应的协议解析模块代码段进行可以脆弱点快速扫描;
步骤5,构建控制流图、控制依赖和数据依赖图,以提取出脆弱点的数据源路径;
步骤6,构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞。
优选地,其中对构造的特征向量进行归一化处理,使用对数变换来标准化所有的表征特征,以避免特征的差异性对分类算法的影响。
优选地,其中所述特征分为调用关系特征、控制结构特征和协议字段特征,包括:switch跳转分支、循环结构、特殊字符比较、字符串信息、strcmp或strstr字符串处理函数、函数块数量、函数被调用次数以及调用子函数次数。
优选地,其中使用自动提取工具自动提取二进制程序,手动分析找到主服务程序,以获取目标系统的固件映像的代码;其中,所述自动提取工具包括:Binwalk和firmware-mod-kit。
优选地,其中所述危险代码特征库包括:不安全库函数、未检查的缓冲区拷贝代码片段、内存分配函数和系统调用库函数。
优选地,其中所述控制流图,是指有向控制流图,表示一个程序过程的一种抽象数据结构,图中的节点表示一个程序基本快,节点间的有向边代表控制流路径,能够有效的描述一个程序的执行流程;所述控制依赖图的每条边反映某个条件对变量值的影响;所述数据依赖图的每条边反映一个变量对另一个变量的依赖关系。
优选地,其中所述多类型漏洞模式能够形成多层级漏洞筛选规则,能够筛除一部分安全脆弱点位置,所述多类型漏洞模式包括:缓冲区溢出漏洞、命令注入漏洞和整数溢出漏洞。
根据本发明的另一个方面,提供了一种用于确定嵌入式系统固件中协议漏洞的轻量级系统,所述系统包括:
特征向量构造单元,用于分析获取的多个嵌入式设备的固件映像中每个嵌入式设备的固件映像对应的协议解析模块代码段,并提取每个协议解析模块对应的多个表征特征构造特征向量;
协议解析代码分类器模型确定单元,用于将所述多个嵌入式设备的固件映像分为训练集和测试集,利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型;
协议解析模块代码段获取单元,用于利用所述测试集验证所述协议解析代码分类器模型的准确性是否满足预设要求,若满足,则利用当前的协议解析代码分类器模型识别目标系统的固件映像的代码以获取目标系统的固件映像对应的协议解析模块代码段;反之,调整所述协议解析代码分类器模型的参数并返回协议解析代码分类器模型确定单元;
脆弱点快速扫描单元,用于利用危险代码特征库对获取的目标系统的固件映像对应的协议解析模块代码段进行可以脆弱点快速扫描;
脆弱点的数据源路径提取单元,用于构建控制流图、控制依赖和数据依赖图,以提取出脆弱点的数据源路径;
协议漏洞确定单元,用于构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞。
优选地,其中对构造的特征向量进行归一化处理,使用对数变换来标准化所有的表征特征,以避免特征的差异性对分类算法的影响。
优选地,其中所述特征分为调用关系特征、控制结构特征和协议字段特征,包括:switch跳转分支、循环结构、特殊字符比较、字符串信息、strcmp或strstr字符串处理函数、函数块数量、函数被调用次数以及调用子函数次数。
优选地,其中使用自动提取工具自动提取二进制程序,手动分析找到主服务程序,以获取目标系统的固件映像的代码;其中,所述自动提取工具包括:Binwalk和firmware-mod-kit。
优选地,其中所述危险代码特征库包括:不安全库函数、未检查的缓冲区拷贝代码片段、内存分配函数和系统调用库函数。
优选地,其中所述控制流图,是指有向控制流图,表示一个程序过程的一种抽象数据结构,图中的节点表示一个程序基本快,节点间的有向边代表控制流路径,能够有效的描述一个程序的执行流程;所述控制依赖图的每条边反映某个条件对变量值的影响;所述数据依赖图的每条边反映一个变量对另一个变量的依赖关系。
优选地,其中所述多类型漏洞模式能够形成多层级漏洞筛选规则,能够筛除一部分安全脆弱点位置,所述多类型漏洞模式包括:缓冲区溢出漏洞、命令注入漏洞和整数溢出漏洞。
本发明提供了一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统,通过分析协议解析代码特征,提取表征特征并构造特征向量;利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型用于识别协议解析模块;使用训练出的协议解析代码分类器模型识别目标系统的固件映像代码中的协议解析模块;针对识别的协议解析模块,利用危险代码特征库对协议解析模块进行可疑脆弱点快速扫描;构建控制流图、控制依赖图、数据依赖图,在此基础上提取出脆弱点的数据源路径;构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞。本发明能够根据目标系统的固件映像高效地发现嵌入式系统固件中协议漏洞的问题,为网络协议安全、物联网/工业控制系统安全及安全测试提供了技术支撑。
附图说明
通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
图1为根据本发明实施方式的用于确定嵌入式系统固件中协议漏洞的轻量级方法100的流程图;
图2为根据本发明实施方式的发现嵌入式系统固件中漏洞的架构图;
图3为根据本发明实施方式的确定协议解析代码分类器模型的流程图;
图4为根据本发明实施方式的控制流图、控制依赖和数据依赖图的示例图;
图5为根据本发明实施方式的用于确定嵌入式系统固件中协议漏洞的轻量级系统500的结构示意图。
具体实施方式
现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
图1为根据本发明实施方式的用于确定嵌入式系统固件中协议漏洞的轻量级方法100的流程图。如图1所示,本发明的实施方式提供的用于确定嵌入式系统固件中协议漏洞的轻量级方法能够根据目标系统的固件映像高效地发现嵌入式系统固件中协议漏洞的问题,为网络协议安全、物联网/工业控制系统安全及安全测试提供了技术支撑。本发明的实施方式提供的用于确定嵌入式系统固件中协议漏洞的轻量级方法100从步骤101处开始,在步骤101,分析获取的多个嵌入式设备的固件映像中每个嵌入式设备的固件映像对应的协议解析模块代码段,并提取每个协议解析模块对应的多个表征特征构造特征向量。
优选地,其中对构造的特征向量进行归一化处理,使用对数变换来标准化所有的表征特征,以避免特征的差异性对分类算法的影响。
优选地,其中所述特征分为调用关系特征、控制结构特征和协议字段特征,包括:switch跳转分支、循环结构、特殊字符比较、字符串信息、strcmp或strstr字符串处理函数、函数块数量、函数被调用次数以及调用子函数次数。
本发明的实施方式以变电站支持IEC104协议的RTU设备为例。本发明的实施方式提供的发现嵌入式系统固件中漏洞的架构图如图2所示。
协议解析需要处理大量的结构化数据,把这些处理数据的代码片段标记为协议解析模块,同样也是脆弱性安全分析的重要代码片段。通过IDAPro对协议的二进制代码进行分析,人工标记协议解析模块和非协议解析模块,并从这些模块中提取关键的特征,通过经验分析,将特征分为3类:调用关系特征、控制结构特征和协议字段特征。调用关系特征表明一个函数的上下文环境信息,例如协议解析模块处理结构化数据,可能被多个函数调用来处理相同结构的协议数据包,同时,根据不同协议字段执行相应的功能,则需要调用多个函数;控制结构特征,协议代码在执行过程中,依据不同的协议包字段执行不同的路径,会涉及大量的switch跳转分支,相应的函数块数量较大,并且可能需要循环处理网络包数据。协议字段特征,在对协议数据包进行分割处理时,通常使用特殊字符比较,例如换行符、回车符、空格等,以及字符串处理函数strcmp或strstr或strtok等。提取的特征包括:switch跳转分支、循环结构、特殊字符比较、字符串信息、strcmp/strstr等字符串处理函数、函数块数量、函数被调用次数以及调用子函数次数。
优选地,在步骤102,将所述多个嵌入式设备的固件映像分为训练集和测试集,利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型。
优选地,在步骤103,利用所述测试集验证所述协议解析代码分类器模型的准确性是否满足预设要求,若满足,则利用当前的协议解析代码分类器模型识别目标系统的固件映像的代码以获取目标系统的固件映像对应的协议解析模块代码段;反之,调整所述协议解析代码分类器模型的参数并返回步骤102。
优选地,其中使用自动提取工具自动提取二进制程序,手动分析找到主服务程序,以获取目标系统的固件映像的代码;其中,所述自动提取工具包括:Binwalk和firmware-mod-kit。
图3为根据本发明实施方式的确定协议解析代码分类器模型的流程图。如图3所示,收集多个嵌入式设备的固件映像,作为试验样本集;提取每个固件映像对应的协议解析模块的代码段的能够表征协议解析模块(解析器)的多个特征作为表征特征,并利用多个表征特征构造出特征向量,然后对其进行标准化处理。
在本发明的实施方式中,将实验样本集中的80%作为训练集,其余20%作为测试集,使用SVM算法进行训练,然后进行交叉重复验证,调整参数以使得测试结果满足要求;最终得到满足要求的协议解析代码分类器模型。在本发明的实施方式中,将来自多个固件的63个解析器标为正样本,随机选取300个负样本。将样本分为训练集和验证集,分别为S1和S2,首先将10个特征作为候选,并在S1上构建初始分类器;然后在S2上对分类器进行测试,并且权重最小的特征将被丢弃,根据测试结果选择出使得识别准确率最高的特征;使用SVM算法实现分类器的训练,最终得到满足要求的协议解析代码分类器模型。
在本发明的实施方式中,对目标系统的固件映像进行预处理获取目标系统的固件映像的代码,包括:首先设置系统环境,本发明的实施方式中使用运行在具有Intel XeonE5-2687W v3 CPU和125.8 GiB内存服务器上的的Ubuntu 14.04.2 LTS(GNU/Linux3.13.0-48-通用x86 64)系统。在RTU设备生产厂家获取对应型号的固件文件,使用Binwalk自动提取二进制文件。主要的服务程序被加载到交互式反汇编器(IDA)中,该程序可以将程序从二进制反汇编到汇编形式并恢复其控制流图。由于功能与指令集架构无关,并且反汇编代码足以用于分析,因此我们使用IDA支持的编程API编写Python脚本以提取功能值。
然后,利用训练出来的协议解析代码分类器模型对目标系统的固件进行特征提取,以识别出对应的协议解析模块代码段。
优选地,在步骤104,利用危险代码特征库对获取的目标系统的固件映像对应的协议解析模块代码段进行可以脆弱点快速扫描。
优选地,其中所述危险代码特征库包括:不安全库函数、未检查的缓冲区拷贝代码片段、内存分配函数和系统调用库函数。
优选地,在步骤105,构建控制流图、控制依赖和数据依赖图,以提取出脆弱点的数据源路径。
优选地,其中所述控制流图,是指有向控制流图,表示一个程序过程的一种抽象数据结构,图中的节点表示一个程序基本快,节点间的有向边代表控制流路径,能够有效的描述一个程序的执行流程;所述控制依赖图的每条边反映某个条件对变量值的影响;所述数据依赖图的每条边反映一个变量对另一个变量的依赖关系。
在本发明的实施方式中,使用危险代码特征库对提取的协议解析模块代码段进行可疑脆弱点快速扫描。通过抽取协议解析实现代码的特征,完成对协议解析模块的识别。针对该类模块进一步扫描可以脆弱点位置。造成协议安全性问题的有内存安全性缺失、整数溢出、可疑命令注入等。内存安全性缺失主要由不安全库函数(例:strcpy/memcpy/sprintf等)或未检查的缓冲区拷贝代码片段;整数溢出,最常见的是内存分配函数的参数存在算术运算时,由于整数溢出进一步导致内存溢出;可疑命令注入通常是系统调用库函数(system/exec等)命令参数未经合法性检查。主要针对缓冲区溢出、整数溢出和命令注入3类漏洞提取相应的脆弱点函数,如下表1所示:
表1漏洞类型及对应的脆弱点函数
为支持不同架构的软件或固件的二进制代码的脆弱性发现,将二进制代码转换成统一的中间语言。再通过遍历中间语言获取所有的脆弱点函数,建立函数调用地址到脆弱点函数的映射表。
然后,构建协议解析模块的控制流图、控制依赖和数据依赖图。其中,有向控制流图,表示一个程序过程的一种抽象数据结构,图中的节点表示一个程序基本快,节点间的有向边代表控制流路径,能够有效的描述一个程序的执行流程;数据依赖图中每条边反映一个变量对另一个变量的依赖关系;控制依赖图中每条边反映某个条件对变量值的影响。其中,控制流图、控制依赖和数据依赖图如图4所示。
优选地,在步骤106,构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞。
优选地,其中所述多类型漏洞模式能够形成多层级漏洞筛选规则,能够筛除一部分安全脆弱点位置,所述多类型漏洞模式包括:缓冲区溢出漏洞、命令注入漏洞和整数溢出漏洞。
在本发明的实施方式中,基于控制流图、控制依赖和数据依赖图,生成多类型漏洞模式,形成多层级漏洞筛选规则,筛除一部分安全脆弱点位置,把缓冲区溢出、整数溢出和命令注入漏洞统称为污点类型漏洞。
对于每种漏洞,其安全处理描述示例如下:
1)缓冲区溢出漏洞:大多缓冲区溢出漏洞是由于传递给复制操作的长度字段域未进行充分的验证。如:在嵌入式网络设备中,许多缓冲区溢出漏洞是由函数getenv所读取的环境变量参数在传递给memcpy(dst,src,n)之前未进行验证。对于这类漏洞,其数据安全处理描述集合可表示:
DSTmem表示目的地址内存分配大小,n<symbol表示变量n进行条件约束。
2)命令注入漏洞:一个典型的命令注入漏洞允许攻击者执行任意的shell命令,如常见的系统调用函数system(cmd),参数cmd在传递到system时未经过合法性校验,该漏洞的安全处理描述集合可表示为:
其中,len(cmd)≤symbol表示对参数cmd的长度进行条件约束。
3)整数溢出漏洞:当内存分配函数的参数存在算术运算时,可能导致内存溢出,如函数malloc(n+1),当参数n大小为检查时,可能造成整数溢出,并导致内存泄露问题。该漏洞的安全处理描述集合可表示为:
筛选出所有满足条件的脆弱点,对这些脆弱点进行漏洞验证。
基于现有漏洞模式匹配的可疑脆弱点路径,使用符号执行技术对该该脆弱点到可控攻击源路径的所有函数进行动态分析,利用约束求解器对到达脆弱点的路径进行约束求解,生成相应的输入数据,完成对漏洞的验证。
在本发明的实施方式中,改二进制分析工具的代码以支持控制流图、数据依赖和控制依赖图并分析安全敏感函数的输入源,以便于快速找出不安全的路径。
图5为根据本发明实施方式的用于确定嵌入式系统固件中协议漏洞的轻量级系统500的结构示意图。如图5所示,本发明的实施方式提供的用于确定嵌入式系统固件中协议漏洞的轻量级系统500,包括:特征向量构造单元501、协议解析代码分类器模型确定单元502、协议解析模块代码段获取单元503、脆弱点快速扫描单元504、脆弱点的数据源路径提取单元505和协议漏洞确定单元506。
优选地,所述特征向量构造单元501,用于分析获取的多个嵌入式设备的固件映像中每个嵌入式设备的固件映像对应的协议解析模块代码段,并提取每个协议解析模块对应的多个表征特征构造特征向量。
优选地,其中对构造的特征向量进行归一化处理,使用对数变换来标准化所有的表征特征,以避免特征的差异性对分类算法的影响。
优选地,其中所述特征分为调用关系特征、控制结构特征和协议字段特征,包括:switch跳转分支、循环结构、特殊字符比较、字符串信息、strcmp或strstr字符串处理函数、函数块数量、函数被调用次数以及调用子函数次数。
优选地,所述协议解析代码分类器模型确定单元502,用于将所述多个嵌入式设备的固件映像分为训练集和测试集,利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型。
优选地,所述协议解析模块代码段获取单元503,用于利用所述测试集验证所述协议解析代码分类器模型的准确性是否满足预设要求,若满足,则利用当前的协议解析代码分类器模型识别目标系统的固件映像的代码以获取目标系统的固件映像对应的协议解析模块代码段;反之,调整所述协议解析代码分类器模型的参数并返回协议解析代码分类器模型确定单元502。
优选地,其中使用自动提取工具自动提取二进制程序,手动分析找到主服务程序,以获取目标系统的固件映像的代码;其中,所述自动提取工具包括:Binwalk和firmware-mod-kit。
优选地,所述脆弱点快速扫描单元504,用于利用危险代码特征库对获取的目标系统的固件映像对应的协议解析模块代码段进行可以脆弱点快速扫描。
优选地,其中所述危险代码特征库包括:不安全库函数、未检查的缓冲区拷贝代码片段、内存分配函数和系统调用库函数。
优选地,所述脆弱点的数据源路径提取单元505,用于构建控制流图、控制依赖和数据依赖图,以提取出脆弱点的数据源路径。
优选地,其中所述控制流图,是指有向控制流图,表示一个程序过程的一种抽象数据结构,图中的节点表示一个程序基本快,节点间的有向边代表控制流路径,能够有效的描述一个程序的执行流程;所述控制依赖图的每条边反映某个条件对变量值的影响;所述数据依赖图的每条边反映一个变量对另一个变量的依赖关系。
优选地,所述协议漏洞确定单元506,用于构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞。
优选地,其中所述多类型漏洞模式能够形成多层级漏洞筛选规则,能够筛除一部分安全脆弱点位置,所述多类型漏洞模式包括:缓冲区溢出漏洞、命令注入漏洞和整数溢出漏洞。
本发明的实施例的用于确定嵌入式系统固件中协议漏洞的轻量级系统500与本发明的另一个实施例的用于确定嵌入式系统固件中协议漏洞的轻量级方法100相对应,在此不再赘述。
已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的步骤都没必要以公开的准确的顺序运行,除非明确地说明。
Claims (14)
1.一种用于确定嵌入式系统固件中协议漏洞的轻量级方法,其特征在于,所述方法包括:
步骤1,分析获取的多个嵌入式设备的固件映像中每个嵌入式设备的固件映像对应的协议解析模块代码段,并提取每个协议解析模块对应的多个表征特征构造特征向量;
步骤2,将所述多个嵌入式设备的固件映像分为训练集和测试集,利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型;
步骤3,利用所述测试集验证所述协议解析代码分类器模型的准确性是否满足预设要求,若满足,则利用当前的协议解析代码分类器模型识别目标系统的固件映像的代码以获取目标系统的固件映像对应的协议解析模块代码段;反之,调整所述协议解析代码分类器模型的参数并返回步骤2;
步骤4,利用危险代码特征库对获取的目标系统的固件映像对应的协议解析模块代码段进行可以脆弱点快速扫描;
步骤5,构建控制流图、控制依赖和数据依赖图,以提取出脆弱点的数据源路径;
步骤6,构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞。
2.根据权利要求1所述的方法,其特征在于,对构造的特征向量进行归一化处理,使用对数变换来标准化所有的表征特征,以避免特征的差异性对分类算法的影响。
3.根据权利要求1所述的方法,其特征在于,所述特征分为调用关系特征、控制结构特征和协议字段特征,包括:switch跳转分支、循环结构、特殊字符比较、字符串信息、strcmp或strstr字符串处理函数、函数块数量、函数被调用次数以及调用子函数次数。
4.根据权利要求1所述的方法,其特征在于,使用自动提取工具自动提取二进制程序,手动分析找到主服务程序,以获取目标系统的固件映像的代码;其中,所述自动提取工具包括:Binwalk和firmware-mod-kit。
5.根据权利要求1所述的方法,其特征在于,所述危险代码特征库包括:不安全库函数、未检查的缓冲区拷贝代码片段、内存分配函数和系统调用库函数。
6.根据权利要求1所述的方法,其特征在于,所述控制流图,是指有向控制流图,表示一个程序过程的一种抽象数据结构,图中的节点表示一个程序基本快,节点间的有向边代表控制流路径,能够有效的描述一个程序的执行流程;所述控制依赖图的每条边反映某个条件对变量值的影响;所述数据依赖图的每条边反映一个变量对另一个变量的依赖关系。
7.根据权利要求1所述的方法,其特征在于,所述多类型漏洞模式能够形成多层级漏洞筛选规则,能够筛除一部分安全脆弱点位置,所述多类型漏洞模式包括:缓冲区溢出漏洞、命令注入漏洞和整数溢出漏洞。
8.一种用于确定嵌入式系统固件中协议漏洞的轻量级系统,其特征在于,所述系统包括:
特征向量构造单元,用于分析获取的多个嵌入式设备的固件映像中每个嵌入式设备的固件映像对应的协议解析模块代码段,并提取每个协议解析模块对应的多个表征特征构造特征向量;
协议解析代码分类器模型确定单元,用于将所述多个嵌入式设备的固件映像分为训练集和测试集,利用构造的特征向量和所述训练集对支持向量机SVM进行训练,确定协议解析代码分类器模型;
协议解析模块代码段获取单元,用于利用所述测试集验证所述协议解析代码分类器模型的准确性是否满足预设要求,若满足,则利用当前的协议解析代码分类器模型识别目标系统的固件映像的代码以获取目标系统的固件映像对应的协议解析模块代码段;反之,调整所述协议解析代码分类器模型的参数并返回协议解析代码分类器模型确定单元;
脆弱点快速扫描单元,用于利用危险代码特征库对获取的目标系统的固件映像对应的协议解析模块代码段进行可以脆弱点快速扫描;
脆弱点的数据源路径提取单元,用于构建控制流图、控制依赖和数据依赖图,以提取出脆弱点的数据源路径;
协议漏洞确定单元,用于构建基于脆弱点的数据源路径的多类型漏洞模式,并通过模式匹配确定嵌入式系统固件中的协议漏洞。
9.根据权利要求8所述的系统,其特征在于,对构造的特征向量进行归一化处理,使用对数变换来标准化所有的表征特征,以避免特征的差异性对分类算法的影响。
10.根据权利要求8所述的系统,其特征在于,所述特征分为调用关系特征、控制结构特征和协议字段特征,包括:switch跳转分支、循环结构、特殊字符比较、字符串信息、strcmp或strstr字符串处理函数、函数块数量、函数被调用次数以及调用子函数次数。
11.根据权利要求8所述的系统,其特征在于,使用自动提取工具自动提取二进制程序,手动分析找到主服务程序,以获取目标系统的固件映像的代码;其中,所述自动提取工具包括:Binwalk和firmware-mod-kit。
12.根据权利要求8所述的系统,其特征在于,所述危险代码特征库包括:不安全库函数、未检查的缓冲区拷贝代码片段、内存分配函数和系统调用库函数。
13.根据权利要求8所述的系统,其特征在于,所述控制流图,是指有向控制流图,表示一个程序过程的一种抽象数据结构,图中的节点表示一个程序基本快,节点间的有向边代表控制流路径,能够有效的描述一个程序的执行流程;所述控制依赖图的每条边反映某个条件对变量值的影响;所述数据依赖图的每条边反映一个变量对另一个变量的依赖关系。
14.根据权利要求8所述的系统,其特征在于,所述多类型漏洞模式能够形成多层级漏洞筛选规则,能够筛除一部分安全脆弱点位置,所述多类型漏洞模式包括:缓冲区溢出漏洞、命令注入漏洞和整数溢出漏洞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811215517.7A CN109525556B (zh) | 2018-10-18 | 2018-10-18 | 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811215517.7A CN109525556B (zh) | 2018-10-18 | 2018-10-18 | 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109525556A true CN109525556A (zh) | 2019-03-26 |
CN109525556B CN109525556B (zh) | 2022-01-11 |
Family
ID=65772117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811215517.7A Active CN109525556B (zh) | 2018-10-18 | 2018-10-18 | 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109525556B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704267A (zh) * | 2019-09-23 | 2020-01-17 | 福建经联网络技术有限公司 | 一种核心控制芯片固件分析与验证系统 |
CN111488579A (zh) * | 2020-03-25 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、电子设备和计算机可读存储介质 |
CN112506795A (zh) * | 2020-12-18 | 2021-03-16 | 国家工业信息安全发展研究中心 | 工控设备安全漏洞的测试方法、系统、终端及存储介质 |
CN112733150A (zh) * | 2021-01-12 | 2021-04-30 | 哈尔滨工业大学 | 一种基于脆弱性分析的固件未知漏洞检测方法 |
CN113206854A (zh) * | 2021-05-08 | 2021-08-03 | 首约科技(北京)有限公司 | 一种快速开发国标终端协议的方法及装置 |
CN113468525A (zh) * | 2021-05-24 | 2021-10-01 | 中国科学院信息工程研究所 | 针对二进制程序的相似漏洞检测方法及装置 |
CN113791976A (zh) * | 2021-09-09 | 2021-12-14 | 南京大学 | 一种基于程序依赖增强缺陷定位的方法和装置 |
CN113810343A (zh) * | 2020-06-15 | 2021-12-17 | 深信服科技股份有限公司 | 函数注入攻击的检测方法、装置、设备及可读存储介质 |
CN114389978A (zh) * | 2021-12-21 | 2022-04-22 | 中国人民解放军32802部队 | 一种基于静态污点分析的网络协议侧信道检测方法和系统 |
CN113901459B (zh) * | 2021-08-26 | 2023-05-26 | 中国科学院信息工程研究所 | 固件内部二进制程序脆弱性发现方法及装置 |
CN116296431A (zh) * | 2022-12-28 | 2023-06-23 | 佩尔哲汽车内饰系统(太仓)有限公司 | 一种增程式新能源汽车的声学测试及分析方法 |
CN116776338A (zh) * | 2023-07-28 | 2023-09-19 | 上海螣龙科技有限公司 | 一种多层过滤高精度漏洞检测方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
CN106295335A (zh) * | 2015-06-11 | 2017-01-04 | 中国科学院信息工程研究所 | 一种面向嵌入式设备的固件漏洞检测方法及系统 |
CN106709356A (zh) * | 2016-12-07 | 2017-05-24 | 西安电子科技大学 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
KR20180060497A (ko) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
-
2018
- 2018-10-18 CN CN201811215517.7A patent/CN109525556B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101714118A (zh) * | 2009-11-20 | 2010-05-26 | 北京邮电大学 | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 |
CN101814053A (zh) * | 2010-03-29 | 2010-08-25 | 中国人民解放军信息工程大学 | 一种基于功能模型的二进制代码漏洞发现方法 |
CN106295335A (zh) * | 2015-06-11 | 2017-01-04 | 中国科学院信息工程研究所 | 一种面向嵌入式设备的固件漏洞检测方法及系统 |
KR20180060497A (ko) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
CN106709356A (zh) * | 2016-12-07 | 2017-05-24 | 西安电子科技大学 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
CN107885999A (zh) * | 2017-11-08 | 2018-04-06 | 华中科技大学 | 一种基于深度学习的漏洞检测方法及系统 |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
Non-Patent Citations (1)
Title |
---|
王继业等: "电力工控系统攻击仿真验证关键技术研究", 《电力信息与通信技术》 * |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110704267A (zh) * | 2019-09-23 | 2020-01-17 | 福建经联网络技术有限公司 | 一种核心控制芯片固件分析与验证系统 |
CN110704267B (zh) * | 2019-09-23 | 2022-08-30 | 福建经联网络技术有限公司 | 一种核心控制芯片固件分析与验证系统 |
CN111488579A (zh) * | 2020-03-25 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、电子设备和计算机可读存储介质 |
CN113810343A (zh) * | 2020-06-15 | 2021-12-17 | 深信服科技股份有限公司 | 函数注入攻击的检测方法、装置、设备及可读存储介质 |
CN113810343B (zh) * | 2020-06-15 | 2023-05-12 | 深信服科技股份有限公司 | 函数注入攻击的检测方法、装置、设备及可读存储介质 |
CN112506795A (zh) * | 2020-12-18 | 2021-03-16 | 国家工业信息安全发展研究中心 | 工控设备安全漏洞的测试方法、系统、终端及存储介质 |
CN112733150A (zh) * | 2021-01-12 | 2021-04-30 | 哈尔滨工业大学 | 一种基于脆弱性分析的固件未知漏洞检测方法 |
CN113206854B (zh) * | 2021-05-08 | 2022-12-13 | 首约科技(北京)有限公司 | 一种快速开发国标终端协议的方法及装置 |
CN113206854A (zh) * | 2021-05-08 | 2021-08-03 | 首约科技(北京)有限公司 | 一种快速开发国标终端协议的方法及装置 |
CN113468525A (zh) * | 2021-05-24 | 2021-10-01 | 中国科学院信息工程研究所 | 针对二进制程序的相似漏洞检测方法及装置 |
CN113901459B (zh) * | 2021-08-26 | 2023-05-26 | 中国科学院信息工程研究所 | 固件内部二进制程序脆弱性发现方法及装置 |
CN113791976A (zh) * | 2021-09-09 | 2021-12-14 | 南京大学 | 一种基于程序依赖增强缺陷定位的方法和装置 |
CN113791976B (zh) * | 2021-09-09 | 2023-06-20 | 南京大学 | 一种基于程序依赖增强缺陷定位的方法和装置 |
CN114389978A (zh) * | 2021-12-21 | 2022-04-22 | 中国人民解放军32802部队 | 一种基于静态污点分析的网络协议侧信道检测方法和系统 |
CN114389978B (zh) * | 2021-12-21 | 2024-04-02 | 中国人民解放军32802部队 | 一种基于静态污点分析的网络协议侧信道检测方法和系统 |
CN116296431A (zh) * | 2022-12-28 | 2023-06-23 | 佩尔哲汽车内饰系统(太仓)有限公司 | 一种增程式新能源汽车的声学测试及分析方法 |
CN116776338A (zh) * | 2023-07-28 | 2023-09-19 | 上海螣龙科技有限公司 | 一种多层过滤高精度漏洞检测方法、装置、设备及介质 |
CN116776338B (zh) * | 2023-07-28 | 2024-05-10 | 上海螣龙科技有限公司 | 一种多层过滤高精度漏洞检测方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109525556B (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109525556A (zh) | 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 | |
JP7200661B2 (ja) | 並行脆弱性検出 | |
CN110287702B (zh) | 一种二进制漏洞克隆检测方法及装置 | |
US8850581B2 (en) | Identification of malware detection signature candidate code | |
US9690945B2 (en) | Security analysis using relational abstraction of data structures | |
US20200380125A1 (en) | Method for Detecting Libraries in Program Binaries | |
US20180278635A1 (en) | Apparatus, method, and computer program for detecting malware in software defined network | |
CN104537308B (zh) | 提供应用安全审计功能的系统及方法 | |
CN110474900B (zh) | 一种游戏协议测试方法及装置 | |
CN112035359B (zh) | 程序测试方法、装置、电子设备及存储介质 | |
US8572747B2 (en) | Policy-driven detection and verification of methods such as sanitizers and validators | |
JP7287480B2 (ja) | 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム | |
Xue et al. | xfuzz: Machine learning guided cross-contract fuzzing | |
CN106528393A (zh) | 一种WebService的Mock测试的方法及装置 | |
CN111338692B (zh) | 基于漏洞代码的漏洞分类方法、装置及电子设备 | |
Zhang et al. | Ripple: Reflection analysis for android apps in incomplete information environments | |
CN108353083A (zh) | 用于检测域产生算法(dga)恶意软件的系统及方法 | |
CN112527674B (zh) | Ai框架的安全评测方法、装置、设备及存储介质 | |
CN107741907A (zh) | 结合底层指令和系统信息的模拟器检测方法及装置 | |
CN108958890A (zh) | 容器镜像检测方法、装置及电子设备 | |
Li et al. | Large-scale third-party library detection in android markets | |
CN110874475A (zh) | 漏洞挖掘方法、漏洞挖掘平台及计算机可读存储介质 | |
RU168346U1 (ru) | Устройство выявления уязвимостей | |
CN106101086A (zh) | 程序文件的云检测方法及系统、客户端、云端服务器 | |
Harzevili et al. | Automatic Static Vulnerability Detection for Machine Learning Libraries: Are We There Yet? |
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 |