CN113553593B - 基于语义分析的物联网固件内核漏洞挖掘方法及系统 - Google Patents
基于语义分析的物联网固件内核漏洞挖掘方法及系统 Download PDFInfo
- Publication number
- CN113553593B CN113553593B CN202110825307.5A CN202110825307A CN113553593B CN 113553593 B CN113553593 B CN 113553593B CN 202110825307 A CN202110825307 A CN 202110825307A CN 113553593 B CN113553593 B CN 113553593B
- Authority
- CN
- China
- Prior art keywords
- kernel
- security
- internet
- things
- firmware
- 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; 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/436—Semantic checking
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于语义分析的物联网固件内核漏洞挖掘方法及系统,包括:收集物联网固件内核及对应版本的Linux内核以形成内核对,对内核对进行编译和函数匹配以得到待匹配函数对;分析待匹配函数对以确定物联网固件内核中被删除的安全操作;依据被删除的安全操作,在Linux内核中和物联网固件内定位与被删除的安全操作相关的安全变量,并查找安全变量在函数内的其他使用位置和使用方式;比较在物联网固件内核和Linux内核中,与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式,以实现对已删除安全操作的安全影响进行分析,辅助漏洞的确认。本发明能够通过语义分析实现对物联网固件内核漏洞的高效分析。
Description
技术领域
本发明属于物联网安全技术领域,尤其涉及一种基于语义分析的物联网固件内核漏洞挖掘方法及系统。
背景技术
近年来随着物联网生态的快速发展,物联网设备在人们的日常生活中发挥了重要的作用,为人类生活带来了极大的便利。作为物联网设备的核心,物联网固件内核安全决定了物联网设备的安全性、可靠性和稳定性。然而,对于大多数物联网设备供应商而言,开发安全、可靠、稳定、高效的物联网固件内核需要高昂的开发成本和较长的开发周期。因此,大量下游物联网供应商倾向于在其数十亿的物联网设备中采用开源的Linux内核。
在实际使用过程中,大部分物联网供应商都需要通过代码段删除/添加或使用非标准编译配置来构建符合自身需求的Linux内核。在内核代码定制过程中,考虑到有限的物联网设备的硬件和系统资源,物联网厂商倾向于删除一些不相关的Linux内核代码段以节省设备算力资源。但是,由于Linux内核固有的复杂性以及物联网固件内核缺乏长期有效的维护,部分代码修剪变得不可靠和不安全。具体来说,很多必要的安全操作包括安全检查、变量初始化、资源释放等操作被误删除了,进而引入了各种影响物联网固件内核安全性和可靠性的安全漏洞,例如内存泄漏、拒绝服务、空指针解引用等。
综上,基于内核的物联网设备广泛应用的同时也为物联网生态带来了新的安全隐患:在内核代码段删除/添加的过程中,物联网固件内核漏洞的引入严重影响了物联网生态的安全。对物联网设备内核中的漏洞进行快速精准的定位变得越来越重要,因为物联网设备的安全风险将直接导致用户日常生活的损失。大部分物联网设备固件内核的关键子系统(内存管理器(MM)、文件系统(FS)、网络软件(NET)和设备驱动程序(DEV))源自于开源的Linux内核。在Linux内核中,缺少安全检查、缺少加/减锁语句和缺少变量初始化错误已经导致了很多严重的系统故障,例如数据丢失、系统崩溃以及软件系统中关键功能的错误执行。与Linux内核相比,物联网设备固件内核通常与各种不受信任的外部信号进行交互,例如图像、语音、网络程序包和物理环境温度等。因此,物联网设备需要对更多的外部接收信号进行安全检查。然而,如上文所述,考虑到物联网设备的效率和能源消耗,在设计固件内核时,物联网供应商通常会删除对应版本的Linux内核中的部分代码,包括部分安全操作(安全检查、变量初始化和资源释放操作),安全操作的误删除可能会导致各种潜在的安全问题。例如,开发人员可能会错误地删除一个系统安全检查,这种不恰当的安全检查的删除会导致系统运行故障。在物联网设备固件内核的设计和开发中,如何验证修剪后的物联网固件内核代码是否引入新的漏洞是一个重要的研究课题。但是,很少有研究者专注于此问题,这使得物联网设备固件内核极易成为攻击者的目标。
发明内容
将于上述,本发明的目的是提供一种基于语义分析的物联网固件内核漏洞挖掘方法及系统,通过语义分析实现对物联网固件内核漏洞的高效分析。
第一方面,实施例提供的一种基于语义分析的物联网固件内核漏洞挖掘方法,包括以下步骤:
(1)收集物联网固件内核及对应版本的Linux内核以形成内核对,对内核对进行编译和函数匹配以得到待匹配函数对;
(2)采用差分分析方法分析待匹配函数对,以确定物联网固件内核中被删除的安全操作;
(3)依据被删除的安全操作,在Linux内核中定位与被删除的安全操作相关的安全变量,并查找安全变量在函数内的其他使用位置和使用方式;
(4)依据在Linux内核中定位的与被删除的安全操作相关的安全变量,在物联网固件内核中查找与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式;
(5)比较在物联网固件内核和Linux内核中,与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式,以实现对已删除安全操作的安全影响进行分析,辅助漏洞的确认。
在一个实施例中,所述对内核对进行编译和函数匹配以得到待匹配函数对,包括:
内核的编译过程为:尽可能多地打开物联网固件内核的编译配置选项对物联网固件内核中的源代码进行编译以覆盖更多的源代码;使用-o2优化级别且打开-g编译选项允许编译开发者获取调试信息;当一个版本的物联网固件内核源代码编译完成后,在编译与其对比的相同版本的Linux内核源代码时,采用相同的makefile文件进行编译以减少编译选项不同带来的误报和漏报,最终获取内核对的待匹配LLVM中间代码;
函数匹配过程为:静态分析待匹配LLVM中间代码,获取源代码中每个函数的函数名,依据函数名对内核对中函数进行匹配,以形成待匹配函数对。
在一个实施例中,步骤(2)包括:
通过对待匹配函数对进行静态分析,分别定位两个函数中的相关安全操作,包括安全检查、变量初始化和资源释放操作;
通过差分比较两个函数中的相关安全操作来确定物联网固件内核中被删除的安全操作;
分析物联网固件内核中被删除的安全操作是否由安全补丁或代码封装造成,如果是,则认为该被删除的安全操作是合理的,不做后续分析。
在一个实施例中,针对分析被删除的安全操作是否由安全补丁造成,包括:对每个被删除的安全操作,通过搜索Linux内核的git commit信息,确认该被删除的安全操作是否包含在程序补丁中,如果包含在在程序补丁中,则认为该被删除的安全操作是由安全补丁造成的;
针对分析被删除的安全操作是否由代码封装造成,包括:通过对被删除的安全操作对应的代码序列和相应新函数中实现的代码序列进行比较来识别代码封装,如果被比较的两个代码序列的编辑距离小于阈值,并且被删除的安全操作对应的代码序列保留在新函数中,那么被删除的安全操作是由代码封装造成的。
在一个实施例中,步骤(3)包括:
对于被删除的安全操作,如果安全操作是函数调用,那么查找函数调用参数或返回值作为Linux内核中与安全操作相关的安全变量;如果安全操作不是函数调用,则直接查找安全操作对应的操作数作为安全操作相关的安全变量;
通过LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式。
在一个实施例中,步骤(4)包括:
根据Linux内核中定位的与被删除的安全操作相关的安全变量,对物联网固件内核中对应的安全变量进行定位;然后通过LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式。
在一个实施例中,在采用LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式时,通过对能够进行指针传递的GetElementPtrInst、BitCastInst指令的分析来进行指针别名分析。
在一个实施例中,所述根据Linux内核中定位的与被删除的安全操作相关的安全变量,对物联网固件内核中对应的安全变量进行定位,包括:采用差分分析方法分析待匹配函数对,确定待匹配函数对中匹配的基本块对,识别Linux内核中与被删除的安全操作相关的安全变量和使用了该安全变量的基本块,通过该基本块和匹配的基本块对定位到物联网固件内核中包含了对应变量的基本块和指令,通过访问指令的操作数获取物联网固件内核中对应的安全变量。
第二方面,实施例提供的一种基于语义分析的物联网固件内核漏洞挖掘装置,包括:
收集匹配模块,用于收集物联网固件内核及对应版本的Linux内核以形成内核对,对内核对进行编译和函数匹配以得到待匹配函数对;
确定模块,用于采用差分分析方法分析待匹配函数对,以确定物联网固件内核中被删除的安全操作;
定位模块,用于依据被删除的安全操作,在Linux内核中定位与被删除的安全操作相关的安全变量,并查找安全变量在函数内的其他使用位置和使用方式;
查找模块,用于依据在Linux内核中定位的与被删除的安全操作相关的安全变量,在物联网固件内核中查找与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式;
比较模块,用于比较在物联网固件内核和Linux内核中,与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式,以实现对已删除安全操作的安全影响进行分析,辅助漏洞的确认。
上述实施例提供的技术方案,具有的有益效果至少包括:
提出的基于语义的代码一致性分析方法,解决了物联网固件在代码剪裁中引入新漏洞问题,能够有效发现真实物联网固件内核中存在的漏洞,具有实用性;
提出了基于代码差分分析获得待匹配函数对,进而获得匹配的基本块对,对物联网固件内核中删除的安全操作进行定位,最终能够快速准确地发现Linux内核中与被删除安全操作相关的安全变量和物联网固件内核中相关的安全变量;
提出的基于安全变量使用对比识别漏洞的方法,能够有效识别物联网固件内核中误删安全操作引入的新漏洞,为测试物联网固件内核删除的安全操作代码提供了依据;
能够对多种类型的安全操作进行分析,涵盖了大部分内核常见漏洞,能够提高物联网固件内核的安全性和稳定性,能够大幅提高内核漏洞的挖掘效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动前提下,还可以根据这些附图获得其他附图。
图1和图2是一实施例提供的基于语义分析的物联网固件内核漏洞挖掘方法的流程图;
图3是一实施例提供的物联网固件内核中安全变量的定位流程图;
图4是一实施例提供的自动化的物联网固件漏洞的定位流程图;
图5是一实施例提供的基于语义分析的物联网固件内核漏洞挖掘系统的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
现实中,如果物联网固件内核确实不再需要一个安全检查,那么这个安全检查的删除就是合乎逻辑的。为了确定物联网固件内核是否仍需要一个已被删除的安全检查,需要了解在没有相应的安全操作的情况下,安全操作保护的相关代码是否仍然可达。如果安全操作保护的相关代码仍然可达,那么与被删除的安全检查相关的安全变量可能会进入错误状态,进而导致系统错误。综上所述,为了验证修剪后的物联网固件内核代码是否引入新的安全漏洞,需要回答以下问题:(1)对于一个在物理网固件内核中已被被删除的安全操作,在对应版本的Linux内核中,哪个安全变量被相应的安全操作验证、释放或初始化?(2)这个安全变量是否仍然存在于物联网固件内核中?(3)在物联网固件内核后续代码段中,这个安全变量如何被使用以及在哪里被使用?(4)在没有相应的安全操作的情况下,这个安全变量可以达到哪种错误状态?但是,自动回答上述问题是很困难的,因为安全操作、相关的安全变量及其使用方式在形式上非常多样化的。为了自动化解决上述问题,实施例提出使用代码一致性分析对一个已被删除的安全操作的安全影响进行分析。
具体来说,通过比较物联网固件内核和Linux内核中,与已删除安全操作相关的安全变量的使用形式(安全变量在可能受影响的代码段中的使用位置和使用方式)来对已删除安全操作的安全影响进行分析。因为,在安全操作影响的代码段(例如,安全检查的后继分支)中,假设由安全操作保护、释放或初始化的安全变量的使用方式和使用位置与对应版本的Linux内核相同。在这种情况下,可以认为物联网固件内核中已删除的安全操作仍然有必要存在,对这个安全操作进行删除可能会对物联网固件内核安全产生影响。通过上述技术,可以自动推断安全操作的删除是否带来安全风险。
图1和图2是一实施例提供的基于语义分析的物联网固件内核漏洞挖掘方法的流程图。如图1和图2所示,实施例提供的基于语义分析的物联网固件内核漏洞挖掘方法,适用于判定已删除安全操作的安全影响,包括以下步骤:
步骤1,收集物联网固件内核及对应的Linux内核以形成内核对,对内核对进行编译和函数匹配以得到待匹配函数对。
实施例中,在收集物联网固件内核后,为每个物联网固件内核匹配对应版本的Linux内核,形成内核对,然后对内核对进行编译,即对物联网固件内核和对应版本的Linux内核使用尽可能相同的编译选项进行编译,编译过程为:尽可能多地打开编译配置选项对物联网固件内核中的源代码进行编译以覆盖更多的源代码;使用-o2优化级别且打开-g编译选项允许编译开发者获取调试信息;当物联网固件内核的源代码编译完成后,在编译与其对比的Linux内核源代码时,采用相同的makefile文件进行编译以减少编译选项不同带来的误报和漏报,最终获取内核对的待匹配LLVM中间代码;
获得中间代码后,进行函数匹配,匹配过程为:静态分析待匹配LLVM中间代码,获取源代码中每个函数的函数名,依据函数名对内核对中函数进行匹配,以形成待分析的待匹配函数对。
步骤2,采用差分分析方法分析待匹配函数对,以确定物联网固件内核中被删除的安全操作。
实施例中,步骤2的具体过程为:通过对待匹配函数对进行静态分析,分别定位两个函数中的相关安全操作,包括安全检查、变量初始化和资源释放操作;通过差分分析工具差分比较两个函数中的相关安全操作来确定物联网固件内核中被删除的安全操作;分析确定的被删除的安全操作是否由安全补丁或代码封装造成,如果是,则认为该被删除的安全操作是合理的,不做后续分析。
步骤2的核心是定位和分析可能会造成安全影响的在物联网固件内核中被删除的安全操作。如果被删除的安全操作是由程序补丁或代码封装引起的,那么删除这个安全操作是合理的,不需要做进一步的安全分析。因此,对于每个被删除的安全操作,通过搜索Linux内核的git commit信息,确认这个被删除的安全操作是否包含在程序补丁中。具体来说,首先需要定位该安全操作在哪个函数中被删除,然后搜索这个函数的Linux内核补丁中的每行代码,以检查补丁中是否做了相同的代码删除操作。对于函数封装,通过对删除的代码序列和相应新函数中实现的代码序列进行比较来识别代码封装。如果被比较的两个代码序列的编辑距离小于阈值θed,说明这两个代码序列在语法上是相似的。此外,如果被删除的安全操作仍被保留在新函数中,那么这个被删除的安全操作也不需要进一步的安全分析。实施例中,通过levenshtein算法对两个代码序列的编辑距离进行计算。
步骤3,依据被删除的安全操作,在Linux内核中定位与被删除的安全操作相关的安全变量,并查找安全变量在函数内的其他使用位置和使用方式。
实施例中,步骤3的具体过程为:对于被删除的安全操作,如果安全操作是函数调用,那么查找函数调用参数或返回值作为Linux内核中与安全操作相关的安全变量;如果安全操作不是函数调用,则直接查找安全操作对应的操作数作为安全操作相关的安全变量;
通过LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式。如果在函数中能够找到安全变量的使用,则通过静态指针分析获取安全变量的别名使用。否则查看当前分析的安全变量是从哪个变量得来,对上一层的变量的使用进行追踪,直到能够在函数中找到该变量的使用为止。
步骤3的核心是找出被删除的安全操作保护、初始化或释放的相关安全变量。如果没有相应的安全操作,安全变量则无法被验证、初始化或释放,因此会造成内核崩溃或进入错误运行状态。基于经验分析,大部分安全操作是通过函数调用完成的。例如变量初始化通常通过memset函数调用实现。因此安全变量通常为安全操作相关的参数或返回值。
在通过LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式的过程中,对于指针变量的使用存在指针传递的问题:一个指针或其成员被赋值给另一个变量。因此仅仅追踪指针变量本身的使用是不够的,仍然需要通过指针别名分析对指针的传递变量进行追踪和分析。传统的LLVM指针别名分析精度较差,因此本实施例通过对能够进行指针传递的GetElementPtrInst和BitCastInst等指令的分析来进行指针别名分析。此外,由于LLVM使用了静态单赋值命名方式,因此和被删除的安全操作直接相关的安全变量在函数中未必有后续使用。当没有追踪到安全变量的使用时,对赋值给安全变量的上一级变量进行追踪和分析。
步骤4,依据在Linux内核中定位的与被删除的安全操作相关的安全变量,在物联网固件内核中查找与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式。
实施例中,步骤4的具体过程为:根据Linux内核中定位的与被删除的安全操作相关的安全变量和程序差分分析结果,对物联网固件内核中对应的安全变量进行定位;然后通过LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式。
步骤4中,由于安全操作在物联网固件内核中已被删除,因此直接从物联网固件内核查找安全操作相关的安全变量是比较困难的。因此,借助代码差分分析获得的基本块匹配对(物联网固件内核函数和对应版本的Linux内核函数中对应的基本块匹配对)和Linux内核中识别的安全变量,本发明提出了一种新的物联网固件内核中安全变量定位方法。具体来说,首先查看Linux内核中识别的安全变量和其存在的基本块。然后通过匹配起来的基本块对定位物联网固件内核中包含对应变量的基本块和指令。最终通过访问指令的操作数获取物联网固件内核中对应的安全变量。
步骤5,比较在物联网固件内核和Linux内核中,与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式,以实现对已删除安全操作的安全影响进行分析,辅助漏洞的确认。
基于同样的发明构思,如图5所示,实施例还提供了一种基于语义分析的物联网固件内核漏洞挖掘系统500,包括:
收集匹配模块510,用于收集物联网固件内核及对应版本的Linux内核以形成内核对,对内核对进行编译和函数匹配以得到待匹配函数对;
确定模块520,用于采用差分分析方法分析待匹配函数对,以确定物联网固件内核中被删除的安全操作;
定位模块530,用于依据被删除的安全操作,在Linux内核中定位与被删除的安全操作相关的安全变量,并查找安全变量在函数内的其他使用位置和使用方式;
查找模块540,用于依据在Linux内核中定位的与被删除的安全操作相关的安全变量,在物联网固件内核中查找与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式;
比较模块550,用于比较在物联网固件内核和Linux内核中,与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式,以实现对已删除安全操作的安全影响进行分析,辅助漏洞的确认。
需要说明的是,上述实施例提供的基于语义分析的物联网固件内核漏洞挖掘装置在进行基于语义分析的物联网固件内核漏洞挖掘时,应以上述各功能模块的划分进行举例说明,可以根据需要将上述功能分配由不同的功能模块完成,即在终端或服务器的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的基于语义分析的物联网固件内核漏洞挖掘装置与基于语义分析的物联网固件内核漏洞挖掘方法实施例属于同一构思,其具体实现过程详见基于语义分析的物联网固件内核漏洞挖掘方法实施例,这里不再赘述。
上述实施例提出的基于语义的代码一致性分析方法,解决了物联网固件在代码剪裁中引入新漏洞问题,能够有效发现真实物联网固件内核中存在的漏洞,具有实用性;提出了基于代码差分分析获得待匹配函数对,进而获得匹配的基本块对,对Linux内核中删除的安全变量进行定位,最终能够快速准确地发现固件内核删除的安全变量;提出的基于安全变量使用对比识别漏洞的方法,能够有效识别物联网固件内核中误删安全操作引入的漏洞,为测试物联网固件内核删除的安全操作代码提供了依据;能够对多种类型的安全操作进行分析,涵盖了大部分内核常见错误,能够提高固件内核的安全性和稳定性,能够大幅提高内核漏洞的挖掘效率。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,包括以下步骤:
(1)收集物联网固件内核及对应版本的Linux内核以形成内核对,对内核对进行编译和函数匹配以得到待匹配函数对;
(2)采用差分分析方法分析待匹配函数对,以确定物联网固件内核中被删除的安全操作;
(3)依据被删除的安全操作,在Linux内核中定位与被删除的安全操作相关的安全变量,并查找安全变量在函数内的其他使用位置和使用方式;
(4)依据在Linux内核中定位的与被删除的安全操作相关的安全变量,在物联网固件内核中查找与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式;
(5)比较在物联网固件内核和Linux内核中,与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式,以实现对已删除安全操作的安全影响进行分析,辅助漏洞的确认。
2.如权利要求1所述的基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,所述对内核对进行编译和函数匹配以得到待匹配函数对,包括:
内核的编译过程为:尽可能多地打开物联网固件内核编译配置选项对物联网固件内核源代码进行编译以覆盖更多的源代码;使用-o2优化级别且打开-g编译选项允许编译开发者获取调试信息;当物联网固件内核源代码编译完成后,在编译与其对比的相同版本的Linux内核源代码时,采用相同的makefile文件进行编译以减少编译选项不同带来的误报和漏报,最终获取内核对的待匹配LLVM中间代码;
函数匹配过程为:静态分析待匹配LLVM中间代码,获取源代码中每个函数的函数名,依据函数名对内核对中函数进行匹配,以形成待匹配函数对。
3.如权利要求1所述的基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,步骤(2)包括:
通过对待匹配函数对进行静态分析,分别定位两个函数中的相关安全操作,包括安全检查、变量初始化和资源释放操作;
通过差分比较两个函数中的相关安全操作来确定物联网固件内核中被删除的安全操作;
分析物联网固件内核中被删除的安全操作是否由安全补丁或代码封装造成,如果是,则认为该被删除的安全操作是合理的,不做后续分析。
4.如权利要求3所述的基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,针对分析被删除的安全操作是否由安全补丁造成,包括:对每个被删除的安全操作,通过搜索Linux内核的git commit信息,确认该被删除的安全操作是否包含在程序补丁中,如果包含在程序补丁中,则认为该被删除的安全操作是由安全补丁造成的;
针对分析被删除的安全操作是否由代码封装造成,包括:通过对被删除的安全操作对应的代码序列和相应新函数中实现的代码序列进行比较来识别代码封装,如果被比较的两个代码序列的编辑距离小于阈值,并且被删除的安全操作对应的代码序列保留在新函数中,那么被删除的安全操作是由代码封装造成的。
5.如权利要求1所述的基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,步骤(3)包括:
对于被删除的安全操作,如果安全操作是函数调用,那么查找函数调用参数或返回值作为Linux内核中与安全操作相关的安全变量;如果安全操作不是函数调用,则直接查找安全操作对应的操作数作为安全操作相关的安全变量;
通过LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式。
6.如权利要求1所述的基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,步骤(4)包括:
根据Linux内核中定位的与被删除的安全操作相关的安全变量,对物联网固件内核中对应的安全变量进行定位;然后通过LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式。
7.如权利要求5或6所述的基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,在采用LLVM定义的变量的def-use链查找Linux内核中安全变量在函数内的其他使用位置和使用方式时,通过对能够进行指针传递的GetElementPtrInst、BitCastInst指令的分析来进行指针别名分析。
8.如权利要求6所述的基于语义分析的物联网固件内核漏洞挖掘方法,其特征在于,所述根据Linux内核中定位的与被删除的安全操作相关的安全变量,对物联网固件内核中对应的安全变量进行定位,包括:
采用差分分析方法分析待匹配函数对,确定待匹配函数对中匹配的基本块对,识别Linux内核中与被删除的安全操作相关的安全变量和使用了该安全变量的基本块,通过该基本块和匹配的基本块对定位到物联网固件内核中包含了对应变量的基本块和指令,通过访问指令的操作数获取物联网固件内核中对应的安全变量。
9.一种基于语义分析的物联网固件内核漏洞挖掘系统,其特征在于,包括:
收集匹配模块,用于收集物联网固件内核及对应版本的Linux内核以形成内核对,对内核对进行编译和函数匹配以得到待匹配函数对;
确定模块,用于采用差分分析方法分析待匹配函数对,以确定物联网固件内核中被删除的安全操作;
定位模块,用于依据被删除的安全操作,在Linux内核中定位与被删除的安全操作相关的安全变量,并查找安全变量在函数内的其他使用位置和使用方式;
查找模块,用于依据在Linux内核中定位的与被删除的安全操作相关的安全变量,在物联网固件内核中查找与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式;
比较模块,用于比较在物联网固件内核和Linux内核中,与已被删除的安全操作相关的安全变量、安全变量在函数内的其他使用位置和使用方式,以实现对已删除安全操作的安全影响进行分析,辅助漏洞的确认。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110825307.5A CN113553593B (zh) | 2021-07-21 | 2021-07-21 | 基于语义分析的物联网固件内核漏洞挖掘方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110825307.5A CN113553593B (zh) | 2021-07-21 | 2021-07-21 | 基于语义分析的物联网固件内核漏洞挖掘方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553593A CN113553593A (zh) | 2021-10-26 |
CN113553593B true CN113553593B (zh) | 2023-08-04 |
Family
ID=78103853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110825307.5A Active CN113553593B (zh) | 2021-07-21 | 2021-07-21 | 基于语义分析的物联网固件内核漏洞挖掘方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553593B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114490313B (zh) * | 2021-12-10 | 2024-07-16 | 中国科学院信息工程研究所 | 一种基于关键语义特征的安全检查缺陷检测方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070008782A (ko) * | 2005-07-12 | 2007-01-18 | 한국전자통신연구원 | 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템 |
CN102708323A (zh) * | 2012-05-15 | 2012-10-03 | 中科方德软件有限公司 | 安全操作系统中防止文件客体重用的方法 |
CN103389939A (zh) * | 2013-07-03 | 2013-11-13 | 清华大学 | 一种针对堆可控分配漏洞的检测方法及系统 |
CN103699389A (zh) * | 2013-12-30 | 2014-04-02 | 北京大学 | 一种基于编译选项的Linux内核模块关系提取方法 |
CN104615542A (zh) * | 2015-02-11 | 2015-05-13 | 中国科学院软件研究所 | 一种基于函数调用的脆弱性关联分析辅助漏洞挖掘的方法 |
CN112380542A (zh) * | 2021-01-18 | 2021-02-19 | 杭州弈鸽科技有限责任公司 | 基于错误场景生成的物联网固件漏洞挖掘方法及系统 |
-
2021
- 2021-07-21 CN CN202110825307.5A patent/CN113553593B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070008782A (ko) * | 2005-07-12 | 2007-01-18 | 한국전자통신연구원 | 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템 |
CN102708323A (zh) * | 2012-05-15 | 2012-10-03 | 中科方德软件有限公司 | 安全操作系统中防止文件客体重用的方法 |
CN103389939A (zh) * | 2013-07-03 | 2013-11-13 | 清华大学 | 一种针对堆可控分配漏洞的检测方法及系统 |
CN103699389A (zh) * | 2013-12-30 | 2014-04-02 | 北京大学 | 一种基于编译选项的Linux内核模块关系提取方法 |
CN104615542A (zh) * | 2015-02-11 | 2015-05-13 | 中国科学院软件研究所 | 一种基于函数调用的脆弱性关联分析辅助漏洞挖掘的方法 |
CN112380542A (zh) * | 2021-01-18 | 2021-02-19 | 杭州弈鸽科技有限责任公司 | 基于错误场景生成的物联网固件漏洞挖掘方法及系统 |
Non-Patent Citations (1)
Title |
---|
数据关联性分析辅助漏洞挖掘;尹青 等;《计算机应用研究》;第31卷(第02期);583-589 * |
Also Published As
Publication number | Publication date |
---|---|
CN113553593A (zh) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Cao et al. | MVD: memory-related vulnerability detection based on flow-sensitive graph neural networks | |
Corina et al. | Difuze: Interface aware fuzzing for kernel drivers | |
CN107832619B (zh) | Android平台下应用程序漏洞自动化挖掘系统及方法 | |
Xu et al. | Spain: security patch analysis for binaries towards understanding the pain and pills | |
Martin et al. | Finding application errors and security flaws using PQL: a program query language | |
CN103577324B (zh) | 移动应用中隐私信息泄露的静态检测方法 | |
Samhi et al. | Jucify: A step towards android code unification for enhanced static analysis | |
Sun et al. | Hybrid firmware analysis for known mobile and iot security vulnerabilities | |
CN114021142A (zh) | 一种安卓应用程序漏洞检测方法 | |
Zhang et al. | Statically discovering high-order taint style vulnerabilities in os kernels | |
Kang et al. | Scaling javascript abstract interpretation to detect and exploit node. js taint-style vulnerability | |
Hao et al. | Constructing benchmarks for supporting explainable evaluations of static application security testing tools | |
CN113553593B (zh) | 基于语义分析的物联网固件内核漏洞挖掘方法及系统 | |
Ferrara et al. | Static privacy analysis by flow reconstruction of tainted data | |
Al Kassar et al. | Testability Tarpits: the Impact of Code Patterns on the Security Testing of Web Applications. | |
CN113626823B (zh) | 一种基于可达性分析的组件间交互威胁检测方法及装置 | |
Ying et al. | Detecting buffer-overflow vulnerabilities in smart grid devices via automatic static analysis | |
Meng et al. | WeMinT: Tainting Sensitive Data Leaks in WeChat Mini-Programs | |
Eberlein et al. | Semantic debugging | |
Zhong et al. | Scalable compositional static taint analysis for sensitive data tracing on industrial micro-services | |
CN116305131B (zh) | 脚本静态去混淆方法及系统 | |
Yang et al. | Compatibility issue detection for Android apps based on path-sensitive semantic analysis | |
Han et al. | An optimized static propositional function model to detect software vulnerability | |
Ma et al. | Communication-based attacks detection in android applications | |
US20220164446A1 (en) | Process wrapping method for evading anti-analysis of native codes, recording medium and device for performing the method |
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 |