CN111752586B - 跨架构的嵌入式设备固件未修补漏洞检测方法及系统 - Google Patents
跨架构的嵌入式设备固件未修补漏洞检测方法及系统 Download PDFInfo
- Publication number
- CN111752586B CN111752586B CN202010578595.4A CN202010578595A CN111752586B CN 111752586 B CN111752586 B CN 111752586B CN 202010578595 A CN202010578595 A CN 202010578595A CN 111752586 B CN111752586 B CN 111752586B
- Authority
- CN
- China
- Prior art keywords
- analysis
- function
- difference
- similarity
- template
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Stored Programmes (AREA)
Abstract
一种跨架构的嵌入式设备固件未修补漏洞检测方法及系统,首先采集新版本和旧版本的固件,选取两个对应的新旧版本程序二进制文件作为分析对象,将两个二进制文件提升到LLVM IR,基于LLVM IR展开分析,即对两个版本固件的中间语言代码进行函数级别的构造相似性分析,识别出构造相似函数;然后对非构造相似函数进行函数语义相似性分析,识别出语义相似函数;最后对得到的语义相似函数进行差异分析,将差异分析的结果与差异模板进行匹配,完成未修补漏洞检测。本发明通过使用本系统可以快速检测识别闭源嵌入式设备固件中由第三方库引入的未修补漏洞,并且支持ARM、MIPS、IA‑32架构。
Description
技术领域
本发明涉及的是一种信息安全领域的技术,具体是一种跨架构的嵌入式设备固件未修补漏洞检测方法及系统。
背景技术
由于更新时间滞后,目前很多嵌入式设备使用的还是旧版本固件,这导致一些已经被官方修补的漏洞还存在于嵌入式设备中。并且大部分固件的闭源特性,导致了这些未修补的漏洞更难以被发现。因此对这些漏洞进行检测具有很重大的安全意义。
相比于传统平台,嵌入式设备的固件漏洞检测存在运行和模拟困难的问题,通过传统的漏洞检测方法迁移到嵌入式设备上,会存在不可用或者效率低下的问题。现有的固件漏洞检测方法之一是依赖于动态执行或者设备模拟,通过动态分析将固件的执行部分到实际硬件上,该技术虽然较为精确,但必须提前获得设备的物理硬件,在用于大规模分析时会存在设备资源的限制以及负担;另有利用静态分析技术对含有操作系统的嵌入式设备的固件进行解包分析,从而确定文件内部可能存在漏洞的代码或二进制文件,但该技术在大规模的固件镜像分析时,容易导致产生大量的假阳性误报或假阴性。
本发明针对嵌入式设备固件中存在的未修补漏洞检测进行了定制,解决的技术问题是高效检测嵌入式设备固件中是否存在未修补漏洞。
发明内容
本发明针对现有技术存在的上述不足,提出一种跨架构的嵌入式设备固件未修补漏洞检测方法及系统,通过使用本系统可以快速检测识别闭源嵌入式设备固件中由第三方库引入的未修补漏洞,并且支持ARM、MIPS、IA-32架构。
本发明是通过以下技术方案实现的:
本发明首先采集新版本和旧版本的固件,选取两个对应的新旧版本程序二进制文件作为分析对象,将两个二进制文件分别提升到LLVM IR,基于LLVM IR展开分析,即对两个版本固件的中间语言代码进行函数级别的构造相似性分析,识别出构造相似函数;然后对非构造相似函数进行函数语义相似性分析,识别出语义相似函数;最后对得到的语义相似函数进行差异分析,将差异分析的结果与差异模板进行匹配,完成未修补漏洞检测。
所述的提升是指:将二进制程序通过代码提升(Lifting)转换为中间语言表示(LLVM IR)。
所述的函数级别的构造相似性分析是指:分析两个目标中间语言在函数级别上的构造相似性,过程内的控制流图相似性。
所述的函数语义相似性分析是指:进行函数级别的符号执行,对返回值符号表达式、内部函数调用参数的符号表达式进行相似性分析。
所述的差异分析是指:进行基本块级别的语义相似性分析,去除识别出来的语义相似基本块,得到差异基本块即差异分析的结果。
所述的匹配是指:将差异基本块与未修补漏洞差异模板进行包括结构相似性分析以及语义相似性分析的定制化匹配。
本发明涉及一种实现上述方法的系统,包括:预处理单元、非构造相似函数识别单元、语义相似函数识别单元、差异分析单元以及差异模板匹配单元,其中:预处理单元与非构造相似函数识别单元相连并传输中间语言表示,非构造相似函数识别单元与语义相似函数识别单元相连并传输去掉构造相似函数后的非构造相似函数集合,语义相似函数识别单元与差异分析单元相连并传输筛选后的非构造相似但是语义相似的函数对,差异分析单元与差异模板匹配单元相连,并传输分析得到的差异基本块。
技术效果
本发明整体解决了现有技术无法高效检测嵌入式设备固件中是否存在第三方库引入的未修补漏洞的问题。
与现有技术相比,本发明在筛选掉构造相似函数的基础上分析差异信息并与其差异模板进行匹配,由于是对未修补漏洞检测进行的定制,因此相对其他固件漏洞检测方案,能够在保证效率的前提下,更加精确的检测、定位出未修补漏洞。本发明在检测嵌入式设备固件中存在的未修补漏洞上已有检测上准确率以及性能上的提高,经过测量平均进行一次检测所需要的时间数量级为30秒。
附图说明
图1为本发明系统结构示意图;
图2为差异模板一示意图;
图3为差异模板二示意图;
图4为差异模板三示意图;
图5为差异模板四示意图;
图6为差异模板五示意图;
图7为差异模板六示意图
图8为差异模板七示意图。
具体实施方式
如图1所示,为针对给定目标固件及其新发布版本固件,其跨架构固件未修补漏洞检测方法及系统,具体包括以下步骤:
步骤1)用binwalk对新旧版本固件分别进行解包,确认目标固件是否为基于Linux的固件,若是,则选取新旧版本固件中对应的两个二进制文件进行分析,如果是裸机固件,则直接对两个固件进行分析。
步骤2)使用RetDec分别将目标和新发布版本二进制文件提升到LLVM中间语言(LLVM IR),基于中间语言展开分析。
步骤2)生成待检测固件中间语言表示以及新发布版本固件中间语言表示的过程内控制流图,进行函数间的控制流图的相似性分析,若得到的相似度超过阈值α,则认为两个函数是构造相似函数对,将识别出来的构造相似函数对从待分析函数内进行剔除。
步骤3)对剩下的非构造相似函数进行基于KLEE的函数级别符号执行,对符号执行得到的返回值符号表达式、内部函数调用参数和返回值的符号表达式进行正规化,然后做相似性分析,若相似度超过阈值β,则认为两个函数是语义相似函数对。
步骤4)对得到的语义相似构造不相似函数对进行基本块级别的基于符号执行的语义相似性分析,若相似度超过γ,则认为是语义相似基本块,去除识别出来的语义相似基本块,得到差异基本块。
步骤5)将差异基本块与未修补漏洞差异模板进行定制化匹配,包括:
5.1)模板一:加入了icmp指令与空指针进行比较,新加入了一个含有错误处理代码的分支。对于此模板,采用基于控制流图的结构相似性比较,并判断新增的指令是否为条件判断指令。
5.2)模板二:将内存释放函数的调用指令从代码中进行了删除。对于此模板,采用直接的指令比较,判断是否删除对单指针参数函数调用指令的删除。
5.3)模板三:加入了对指针置零的store指令。对于此模板,判断是否加入了对内存进行置零的指令。
5.4)模板四:加入了对内存操作函数的参数进行算术运算的指令。对于此模板,判断是否有加入对内存操作函数的参数进行算术运算的指令。
5.5)模板五:加入了bitcast指令,进行指针的类型转换。对于此模板,判断是否仅新加入进行类型转换的指令。
5.6)模板六:进行了icmp指令判定条件的替换。对于此类模板,判断是否替换条件判断指令的条件。
5.7)模板七:加入了两个函数调用,传入的为同一参数。对于此类模板,判断是否新增两个将同一变量作为参数的函数调用指令。
步骤6)为检测出来的未修补漏洞生成报告。
本实施例通过在两个主流嵌入式设备架构上实现:ARM、MIPS,两个架构均为32位;检测环境的硬件配置为:双Intel Xeon Gold 5122处理器,128GB内存,1TB固态硬盘,操作系统为Ubuntu 18.04.2LTS(GNU/Linux 4.15.0-45-generic x86_64)。
本系统测试实验中的目标固件所基于的具体微控制器(芯片)类型包括:CC1310(ARM Cortex-M3)、STM32F2(ARM Cortex-M3)、LPC1800(ARM Cortex-M3)、LPC1700(ARMCortex-M3)、MT7621A/N(MIPS1004Kc),BCM4706(MIPS74Kc)。
经过具体实际实验,在Intel Xeon Gold的具体环境设置下,以α=0.9,β=0.9,γ=0.7参数运行上述系统,平均进行一次检测所需要的时间数量级为30秒。
与现有技术相比,本发明为完整的对闭源嵌入式设备固件中未修补漏洞检测的系统,在筛选掉构造相似函数的基础上分析差异信息并与其差异模板进行匹配,由于是对未修补漏洞检测进行的定制,因此相对其他固件漏洞检测方案,能够在保证效率的前提下,更加精确的检测、定位出未修补漏洞。本发明在检测嵌入式设备固件中存在的未修补漏洞上有显著的检测准确率以及性能的提高,经过测量平均进行一次检测所需要的时间数量级为30秒。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
Claims (6)
1.一种跨架构的嵌入式设备固件未修补漏洞检测方法,其特征在于,首先采集新版本和旧版本的固件,选取两个对应的新旧版本程序二进制文件作为分析对象,将两个二进制文件提升到LLVM IR,基于LLVM IR展开分析,即对两个版本固件的中间语言代码进行函数级别的构造相似性分析,识别出构造相似函数;然后对非构造相似函数进行函数语义相似性分析,识别出语义相似函数;最后对得到的语义相似函数进行差异分析,将差异分析的结果与差异模板进行匹配,完成未修补漏洞检测;
所述的匹配是指:将差异基本块与未修补漏洞差异模板进行包括结构相似性分析以及语义相似性分析的定制化匹配,具体包括:
模板一:加入了icmp指令与空指针进行比较,新加入了一个含有错误处理代码的分支;其定制化匹配为:采用基于控制流图的结构相似性比较,并判断新增的指令是否为条件判断指令;
模板二:将内存释放函数的调用指令从代码中进行了删除;其定制化匹配为:采用直接的指令比较,判断是否删除对单指针参数函数调用指令的删除;
模板三:加入了对指针置零的store指令;其定制化匹配为:判断是否加入了对内存进行置零的指令;
模板四:加入了对内存操作函数的参数进行算术运算的指令;其定制化匹配为:判断是否有加入对内存操作函数的参数进行算术运算的指令;
模板五:加入了bitcast指令,进行指针的类型转换;其定制化匹配为:判断是否仅新加入进行类型转换的指令;
模板六:进行了icmp指令判定条件的替换;其定制化匹配为:判断是否替换条件判断指令的条件;
模板七:加入了两个函数调用,传入的为同一参数;其定制化匹配为:判断是否新增两个将同一变量作为参数的函数调用指令。
2.根据权利要求1所述的跨架构的嵌入式设备固件未修补漏洞检测方法,其特征是,所述的提升是指:将二进制程序通过代码提升转换为中间语言表示。
3.根据权利要求1所述的跨架构的嵌入式设备固件未修补漏洞检测方法,其特征是,所述的函数级别的构造相似性分析是指:分析两个目标中间语言在函数级别上的构造相似性,过程内的控制流图相似性。
4.根据权利要求1所述的跨架构的嵌入式设备固件未修补漏洞检测方法,其特征是,所述的函数语义相似性分析是指:进行函数级别的符号执行,对返回值符号表达式、内部函数调用参数的符号表达式进行相似性分析。
5.根据权利要求1所述的跨架构的嵌入式设备固件未修补漏洞检测方法,其特征是,所述的差异分析是指:进行基本块级别的语义相似性分析,去除识别出来的语义相似基本块,得到差异基本块即差异分析的结果。
6.一种实现权利要求1-5中任一所述方法的跨架构的嵌入式设备固件未修补漏洞检测系统,其特征在于,包括:预处理单元、非构造相似函数识别单元、语义相似函数识别单元、差异分析单元以及差异模板匹配单元,其中:预处理单元与非构造相似函数识别单元相连并传输中间语言表示,非构造相似函数识别单元与语义相似函数识别单元相连并传输去掉构造相似函数后的非构造相似函数集合,语义相似函数识别单元与差异分析单元相连并传输筛选后的非构造相似但是语义相似的函数对,差异分析单元与差异模板匹配单元相连,并传输分析得到的差异基本块。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010578595.4A CN111752586B (zh) | 2020-06-23 | 2020-06-23 | 跨架构的嵌入式设备固件未修补漏洞检测方法及系统 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202010578595.4A CN111752586B (zh) | 2020-06-23 | 2020-06-23 | 跨架构的嵌入式设备固件未修补漏洞检测方法及系统 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN111752586A CN111752586A (zh) | 2020-10-09 |
| CN111752586B true CN111752586B (zh) | 2024-04-02 |
Family
ID=72676562
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202010578595.4A Active CN111752586B (zh) | 2020-06-23 | 2020-06-23 | 跨架构的嵌入式设备固件未修补漏洞检测方法及系统 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN111752586B (zh) |
Families Citing this family (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN113553056B (zh) * | 2021-07-21 | 2024-05-14 | 浙江大学 | 基于图匹配的llvm中间语言差分分析方法及系统 |
| CN113778509B (zh) * | 2021-08-13 | 2024-07-02 | 国网河北省电力有限公司电力科学研究院 | 一种确定开源组件的版本的方法、存储介质和电子装置 |
| CN116432042A (zh) * | 2021-12-30 | 2023-07-14 | 中国科学院信息工程研究所 | 一种二进制函数相似性检测方法及装置 |
| CN114282226B (zh) * | 2021-12-31 | 2024-05-28 | 上海交通大学 | 单次多漏洞代码检测方法及系统 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018101575A1 (ko) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
| CN108737417A (zh) * | 2018-05-16 | 2018-11-02 | 南京大学 | 一种面向工业控制系统的脆弱性检测方法 |
| CN111177733A (zh) * | 2019-12-30 | 2020-05-19 | 北京航空航天大学 | 一种基于数据流分析的软件补丁检测方法及装置 |
Family Cites Families (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10943015B2 (en) * | 2018-03-22 | 2021-03-09 | ReFirm Labs, Inc. | Continuous monitoring for detecting firmware threats |
| US11050777B2 (en) * | 2018-11-20 | 2021-06-29 | Saudi Arabian Oil Company | Method and system for remediating cybersecurity vulnerabilities based on utilization |
-
2020
- 2020-06-23 CN CN202010578595.4A patent/CN111752586B/zh active Active
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2018101575A1 (ko) * | 2016-11-29 | 2018-06-07 | 한국전력공사 | 바이너리 코드 기반 임베디드 소프트웨어 취약점 분석 장치 및 그 방법 |
| CN108737417A (zh) * | 2018-05-16 | 2018-11-02 | 南京大学 | 一种面向工业控制系统的脆弱性检测方法 |
| CN111177733A (zh) * | 2019-12-30 | 2020-05-19 | 北京航空航天大学 | 一种基于数据流分析的软件补丁检测方法及装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN111752586A (zh) | 2020-10-09 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111752586B (zh) | 跨架构的嵌入式设备固件未修补漏洞检测方法及系统 | |
| CN111177733B (zh) | 一种基于数据流分析的软件补丁检测方法及装置 | |
| CN110287702B (zh) | 一种二进制漏洞克隆检测方法及装置 | |
| CN109460641B (zh) | 一种针对二进制文件的漏洞定位发掘系统和方法 | |
| CN108469984B (zh) | 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法 | |
| CN113468525B (zh) | 针对二进制程序的相似漏洞检测方法及装置 | |
| CN101515320A (zh) | 一种攻击时漏洞检测方法及其系统 | |
| CN104375914A (zh) | 一种服务器内部压力变化自动测试方法 | |
| CN105117341A (zh) | 一种基于动态符号执行的分布式自动测试案例生成方法 | |
| JP2019514119A (ja) | ハイブリッドプログラムバイナリ特徴の抽出及び比較 | |
| CN104407968B (zh) | 一种通过静态分析测算代码指令最长运行时间的方法 | |
| Harzevili et al. | Automatic static vulnerability detection for machine learning libraries: Are we there yet? | |
| CN117909984A (zh) | 基于相似性分析的实时操作系统驱动漏洞挖掘系统及方法 | |
| CN115310087A (zh) | 一种基于抽象语法树的网站后门检测方法和系统 | |
| CN112016099B (zh) | 二进制程序过程间静态污点分析方法及系统 | |
| CN106709350A (zh) | 一种病毒检测方法及装置 | |
| CN111967013A (zh) | 一种基于补丁摘要比对的c/c++补丁存在性检测方法 | |
| CN115080978B (zh) | 一种基于模糊测试的运行时漏洞检测方法及系统 | |
| CN109977953A (zh) | 基于yolov3的目标检测算法在嵌入式设备上的实现方法 | |
| CN105824749A (zh) | 一种linux系统下用户态进程异常的分析方法 | |
| RU168346U1 (ru) | Устройство выявления уязвимостей | |
| CN114462046A (zh) | 一种基于反编译的智能IoT设备固件安全检测方法及系统 | |
| KR20190112524A (ko) | 아키텍처에 무관한 프로그램 함수 유사도 측정 방법 | |
| CN117369868B (zh) | 一种面向国产软件环境的冷热应用代码迁移方法 | |
| CN109670317B (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 |