CN114462044A - 一种基于污点分析的uefi固件漏洞静态检测方法及装置 - Google Patents
一种基于污点分析的uefi固件漏洞静态检测方法及装置 Download PDFInfo
- Publication number
- CN114462044A CN114462044A CN202111649424.7A CN202111649424A CN114462044A CN 114462044 A CN114462044 A CN 114462044A CN 202111649424 A CN202111649424 A CN 202111649424A CN 114462044 A CN114462044 A CN 114462044A
- Authority
- CN
- China
- Prior art keywords
- uefi
- vulnerability
- code
- function
- 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.)
- Granted
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 50
- 230000003068 static effect Effects 0.000 title claims abstract description 35
- 238000001514 detection method Methods 0.000 title claims abstract description 26
- 238000000034 method Methods 0.000 claims abstract description 90
- 230000008569 process Effects 0.000 claims abstract description 23
- 238000005516 engineering process Methods 0.000 claims abstract description 15
- 238000005206 flow analysis Methods 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 65
- 238000011084 recovery Methods 0.000 claims description 26
- 238000004891 communication Methods 0.000 claims description 14
- 238000004422 calculation algorithm Methods 0.000 claims description 10
- 238000010586 diagram Methods 0.000 claims description 10
- 238000001914 filtration Methods 0.000 claims description 8
- 230000007246 mechanism Effects 0.000 claims description 6
- 238000012546 transfer Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 238000012216 screening Methods 0.000 claims description 5
- 238000012567 pattern recognition method Methods 0.000 claims description 3
- 230000007547 defect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 230000006837 decompression Effects 0.000 description 3
- 238000000605 extraction Methods 0.000 description 2
- 238000006317 isomerization reaction Methods 0.000 description 2
- 238000003909 pattern recognition Methods 0.000 description 2
- 238000004873 anchoring Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013021 overheating Methods 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
-
- 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/033—Test or assess software
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
本发明公开一种基于污点分析的UEFI固件漏洞静态检测方法及装置,涉及UEFI固件静态分析领域,针对当前尚未有就UEFI固件的漏洞检测进行有效自动化静态分析的情况,利用UEFI固件的模式匹配、定制化数据流分析等技术,通过分析UEFI安全标准规范、UEFI固件实现样例以及实际商用设备固件,提取UEFI固件和恢复UEFI固件语义信息,结合漏洞的代码表现特征,采用数据流跟踪以及模式匹配等方法追踪有漏洞的污点数据的传播过程,实现大规模UEFI固件漏洞静态扫描和检测,识别、定位、发现潜在的安全漏洞威胁风险。
Description
技术领域
本发明涉及UEFI固件静态分析领域,具体涉及一种基于污点分析的UEFI固件漏洞静态检测方法及装置。
背景技术
UEFI固件是互联网设备上的软件,实现对底层硬件的访问控制。UEFI固件主要负责在通电引导阶段运行硬件以及驱动程序初始化并校验固件的完整性,并实现操作***对于硬件的安全访问控制,其功能主要包含:提供处理器过热保护等安全防护措施、电源管理、SPI Flash等硬件资源的访问控制以及微码更新。近年来UEFI固件漏洞层出不穷,例如Thinkpwn以及Aptio等漏洞,攻击者可以利用这些漏洞实现整个物理设备的访问控制。此外,因UEFI固件安全漏洞引发的真实安全事件也频繁出现。如Lojax以及TrickBot等。因此,针对UEFI固件的漏洞挖掘迫在眉睫。
静态分析技术已经在传统软件分析利用得到了广泛的应用,因其具有分析效率高、代码覆盖率全的优势,被广大安全分析人员及安全分析工具所采用。目标程序提取以及语义信息恢复是静态分析的关键环节,主要负责从固件中提取出待分析的目标程序,并恢复目标程序的语义、语法以及结构信息。其中,目标程序的语义信息是指目标程序代码所要完成的基本功能信息,主要包括程序的控制流、数据流、调用关系等信息。使用当前目标程序提取以及信息恢复技术进行规模化UEFI固件分析存在如下问题:(1)UEFI固件为无符号二进制程序,且其实现不依赖于标准C函数库以及标准***调用。UEFI固件是商业程序,不同设备上的UEFI固件专用性强、固件源码以及相关描述文档不公开,获取到的UEFI固件均为无符号的二进制文件。其中,二进制程序的符号信息指的是二进制程序中的函数名、参数名等能够标识二进制程序内部函数和参数的信息。无符号二进制程序中则没有相关的函数名称、参数名称等信息。而针对二进制的传统静态分析在恢复语义信息(如定位攻击者可控的外部输入点)时依赖于标准C函数库以及标准***调用,例如:read/write函数,此类函数可以通过函数特征匹配来识别,但是UEFI固件的实现不依赖于标准C函数库以及标准***调用,因此传统基于函数特征匹配的方法无法适用于UEFI固件语义信息恢复。(2)UEFI固件具有异构化的特点。UEFI固件由IBV或者OEM根据不同产品特性定制化开发,不同IBV或者OEM针对不同系列产品的接口实现方式不同,这就导致了不同系列产品之间缺少兼容通用的分析技方法,给大规模、自动化分析UEFI固件漏洞带来了极大的阻碍。(3)UEFI固件具有独立的数据流跨过程、跨文件传输机制,传统的跨过程分析技术和方法无法直接应用于UEFI固件的静态分析之中,需要依据UEFI固件的特点单独定制相关跨过程、跨文件数据流传输机制才能保证污点分析的准确、高效实现。
由上述可知,现有技术目前存在以下两个主要问题:
1.如何在无符号二进制UEFI固件中准确定位漏洞敏感代码。当前在各个设备厂商定制的UEFI固件均是以无符号二进制的形式固化在主板上的存储芯片之中,仅通过直接逆向提取的UEFI二进制固件,无法获取足够的特征信息来识别漏洞敏感代码特征。此外,UEFI固件代码在设计之初,并不依赖于标准的函数库和***调用来实现其逻辑功能,这就导致UEFI固件代码中实现代码内存空间分配、参数读写、指针调用等操作的实现方法和步骤均无法使用标准函数库和***调用中的实现模式作为参考。这也使分析漏洞敏感代码变得更加困难。
2.如何准确识别和构建跨过程、跨文件的间接调用关系。跨过程、跨文件的间接调用关系是建立污点分析的基础关系之一。传统的跨过程间接调用识别方法主要依靠指针分析和值集分析。这两种分析方法均需要依赖于精准的程序控制流图来定位和跟踪需要跨过程传递的变量值的初始化位置。但是,由于UEFI固件的数据和逻辑传递不依赖于传统的***调用函数和标准库函数,这就导致无法获取精准的程序控制流图,进而无法准确进行跨过程和跨文件的污点分析,无法获取有效的漏洞信息。
程序静态分析可以实现UEFI固件的大规模分析,但是由于UEFI固件的无符号、不开源、无说明文档以及程序框架异构化等问题,使得传统程序提取以及语义信息恢复技术无法直接应用于UEFI固件的漏洞检测分析之中。
发明内容
为了克服现有静态分析的不足,本发明提出了一种基于污点分析的UEFI固件漏洞静态检测方法及装置,针对当前尚未有就UEFI固件的漏洞检测进行有效自动化静态分析的情况,利用UEFI固件的模式匹配、定制化数据流分析等技术,通过分析UEFI安全标准规范、UEFI固件实现样例以及实际商用设备固件,提取UEFI固件和恢复UEFI固件语义信息,结合漏洞的代码表现特征,采用数据流跟踪以及模式匹配等方法追踪有漏洞的污点数据的传播过程,实现大规模UEFI固件漏洞静态扫描和检测,识别、定位、发现潜在的安全漏洞威胁风险。
一方面,本发明提出一种基于污点分析的UEFI固件漏洞静态检测方法,包括以下步骤:
将UEFI固件解压缩,恢复固件中的各个功能模块,所述模块为无符号二进制机器码;
将所述模块的二进制机器码反编译成包含符号信息的中间表示代码,并将所述中间表示代码包含的符号信息进行恢复;
对恢复的符号信息的代码进行遍历,识别不可信数据,筛选出UEFI固件代码中潜在的漏洞威胁,并标记为漏洞特征;
针对恢复的符号信息中的每个函数,生成函数内控制流图,然后根据各个函数之间的调用关系,构建跨函数的全局控制流图;
根据所述全局控制流图,跟踪所述漏洞特征的代码传播过程,判定所述漏洞特征是否为实际漏洞。
进一步地,符号信息的恢复方法为:通过驱动入口函数初始化UEFI相关变量,并结合UEFI符号恢复规则,对所述模块中的每个函数内的结构体和调用函数进行符号信息恢复。
进一步地,符号信息的恢复步骤包括:
预先设置作为符号信息恢复标准的UEFI符号恢复规则;
对所述模块中的每一个函数,利用所述UEFI符号恢复规则中的每一个规则进行符号信息恢复,所述符号信息包括函数的地址、名称和类型;
将所述符号信息分别加入UEFI运行时服务驱动所使用的进程间的通信协议产生者集合IPSet、通信协议消费者集合LPSet、***管理接口对象集合SHSet和已恢复的符号信息集合SymSet之中,将上述集合IPSet、LPSet、SHSet、SymSet作为恢复结果。
进一步地,根据不可信数据的表现形式和识别方法识别不可信数据,包括:
对于硬编码地址,识别方法为:mov指令的操作数为特定的硬编码地址;
对于UEFI服务,识别方法为:所有调用UEFI提供的启动服务及运行时服务;
对于UEFI变量,识别方法为:所有从UEFI特定内存空间之外获取的全部变量;
对手通信缓存,识别方法为:通过***管理接口所传递到UEFI特定内存空间的任意数据内容;
对于CPU状态保存,识别方法为:UEFI固件中用于处理与CPU现场状态保存的指令集合;
对于过滤检查代码,识别方法为:所有UEFI固件内与UEFI特定内存空间范围有关的操作集合;
对于任意内存空间执行,识别方法为:UEFI固件代码中支持对任意内存区域代码的执行操作集合;
对于任意内存空间读写,识别方法为:UEFI固件代码中支持对任意内存区域代码的读写操作集合。
进一步地,利用模式识别方法和数据流分析方法,根据不可信数据的表现形式和识别方法识别不可信数据;其中模式识别方法为根据预先确定的不可信数据的操作指令及对应的输入参数信息,在二进制程序中进行局部代码匹配;数据流分析方法为根据二进制程序内部代码的处理逻辑,分析参数数据在函数内和函数间传递过程。
进一步地,构建所述全局控制流图的步骤包括:
查找函数内的直接调用关系,根据该直接调用关系生成调用关系图;
针对文件内跨函数间接调用,使用后向切片技术找到函数调用的代码位置,并将被调用函数作为新的节点,加入到所述调用关系图中;
针对跨文件间接调用,使用UEFI自定义的进程间通信协议机制,分别在IPSet、LPSet集合中匹配通信协议的生产者函数和消费者函数,并将消费者函数作为新节点,加入到所述调用关系图中;
根据所述调用关系图中函数之间的调用关系,扩展每个函数对应的函数内控制流图,构建跨函数的全局控制流图。
进一步地,利用静态污点分析算法跟踪所述漏洞特征的代码传播过程,判定所述漏洞特征是否为实际漏洞;所述静态污点分析算法包括以下步骤:
将所述漏洞特征中的硬编码地址、UEFI服务、UEFI变量、通信缓存、CPU状态保存这五种不可信数据的表现形式对应的特征代码集合作为污点源集合;
将所述漏洞特征中的任意内存空间执行、任意内存空间读写这两种不可信数据的表现形式对应的特征代码集合作为污点汇点集合;
将所述漏洞特征中的过滤检查代码不可信数据的表现形式对应的特征代码集合作为过滤无效漏洞路径判定集合;
针对所述污点源集合中的每一个表示漏洞特征的源点,在全局控制流图中定位该源点的位置;以该源点为起点开始污点分析,判断污点传播过程中的每个节点,如果所述节点在所述污点汇点集合中,则标记从所述源点到所述节点的路径为污染路径,加入到一污点传播路径集合;否则将所述节点加入到从所述源点开始的污点传播路径种,继续沿着全局控制流图进行遍历;
在生成的污点传播路径集合中,对每一条路径进行遍历,判定是否有节点属于所述过滤无效漏洞路径判定集合中,如果有,则将该路径从所述污点传播路径集合中删除;如果所述污点传播路径集合不为空,则将所述污点传播路径集合加入到一漏洞检测结果集合中;该漏洞检测结果集合中的漏洞即为实际漏洞。
另一方面,本发明还提出一种基于污点分析的UEFI固件漏洞静态检测装置,包括:
中间表示生成器,用于将UEFI固件解压缩,恢复固件中的各个功能模块,所述模块为无符号二进制机器码;将所述模块的二进制机器码反编译成包含符号信息的中间表示代码;
漏洞静态检测器,用于将所述中间表示代码包含的符号信息进行恢复;对恢复的符号信息代码进行遍历,识别不可信数据,筛选出UEFI固件代码中潜在的漏洞威胁,并标记为漏洞特征;针对所述恢复的符号信息中的每个函数,生成函数内控制流图,然后根据各个函数之间的调用关系,构建跨函数的全局控制流图;根据所述全局控制流图,跟踪所述漏洞特征的代码传播过程,判定所述漏洞特征是否为实际漏洞。
本发明取得了以下有益效果:
(1)为了能够准确识别UEFI固件中的漏洞敏感代码,本发明创造性的通过启发式方法建立UEFI固件通用符号表并恢复UEFI自定义的内存空间操作函数,为各厂商定制的无符号UEFI固件的符号恢复过程提供充分有效的锚定标准,进而实现UEFI固件代码全部变量及标准函数的符号恢复,为漏洞敏感代码定位提供充分明确的特征信息。
(2)为了准确构建跨过程和跨文件的调用关系、实现跨过程数据流图的融合,本发明根据UEFI固件数据流传输的特殊性,定制了跨过程和跨文件调用机制的识别方法,形成间接调用关系的全面恢复方法,为UEFI固件自动化分析提供全面、准确的调用关系及基础数据流信息。
(3)该方法可以在实际UEFI固件测试集合中全面实现自动化漏洞静态检测,具体的实施过程可以根据被检测固件和检测需求的不同进行自主的漏洞代码特征定制和扩展,具有可扩展性和较高的灵活性。
附图说明
图1是本发明实施例公开的一种基于污点分析的UEFI固件漏洞静态检测方法流程图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
本发明实施例公开了一种基于污点分析的UEFI固件漏洞检测方法和装置,通过准确恢复UEFI固件内的语义信息及跨过程、跨函数数据流,实现针对UEFI固件的静态污点分析,并根据标记的漏洞代码特征信息,实现在大规模UEFI固件场景下的准确高效漏洞检测。本方法分为中间表示生成和漏洞静态检测两个阶段,如图1所示。其中,中间表示生成阶段主要是完成针对UEFI固件的提取和反汇编等预处理工作,可以由一中间表示生成器执行完成;漏洞静态检测阶段则分为语义信息恢复、污点信息识别、调用关系图生成、以及污点分析等四个步骤,可以由一漏洞静态检测器执行完成。其流程具体描述如下:
1.中间表示生成
本发明实施例首先要将以二进制形式表示的UEFI固件反编译成可理解的中间表示代码,并在此基础上实现静态污点分析。中间表示生成阶段主要包括两个步骤:UEFI固件解压及反编译。
步骤1.1UEFI固件解压缩
一个完整的UEFI固件是由标准压缩算法,将大量不同功能的模块封装压缩成的一个集合体。本发明实施例首先将UEFI固件解压缩,恢复其中的各个独立功能模块,以便于后续反编译及漏洞检测。
步骤1.2对UEFI固件中的每一个功能模块进行反编译生成中间表示代码
当通过解压缩获取了UEFI固件中的所有功能模块之后,每个模块均是以无符号二进制机器码的形式呈现在分析者面前。为了能够进一步分析和检测漏洞,需要将二进制机器码反编译成包含符号信息的中间表示代码。在本发明实施例中,通过自动加载UEFI固件中全部功能模块到定制的中间表示生成器中,实现对固件中所有功能模块的反编译操作。为整合恢复固件不同模块内部及模块之间的语义联系提供充分有效的信息。
2.漏洞静态检测
本阶段,在反编译形成的UEFI固件代码中间表示的基础上,首先实现对固件逻辑语义信息的恢复。以此为基础,依照UEFI安全标准的规定,在中间表示代码上定位到具有漏洞特征的代码片段作为污点源,并且依据UEFI固件单独设计的跨过程、跨文件信息传递机制,恢复不同函数、不同模块之间的全局控制流拓扑结构图。通过在全局控制流拓扑结构图上探测污点源与可触发漏洞的汇点代码片段之间是否由可达路径的方法来判断漏洞是否存在。具体步骤如下:
步骤2.1语义信息恢复
本步骤的主要目标是恢复UEFI固件的每个模块中的重要符号信息,包括重要数据结构信息和重要函数信息,以供后续分析使用。在恢复过程中,主要通过驱动入口函数负责初始化UEFI相关变量,并结合预先通过启发式方法总结的UEFI符号恢复规则,对模块中的每个函数内的结构体和调用函数进行符号信息恢复。恢复算法如下:
其中,IPSet表示UEFI运行时服务驱动必须“生产”协议对象集合。其他的UEFI运行时服务驱动可以“使用”该协议对象集合中的一个实例来完成进程间通信及数据传递。UEFI运行时驱动程序既是通信协议的使用者又是通信协议的产生者。协议的生产者必须创建该协议,并从内存中分配相应的空间存储协议的数据结构。然后初始化协议结构中声明的函数指针等数据,最后将完成初始化的协议实例对象存储到数据库中。协议的消费者使用全局标识符为索引在数据库中查找协议,然后通过查找到的已恢复符号信息的协议实例调用相应的函数接口,以获取协议传来的相应的数据及信息。
步骤2.2漏洞特征识别
根据步骤2.1的操作完成了符号信息恢复之后,重点关注可接受不可信数据的操作指令以及对应的输入参数信息。通过逐一遍历所有已恢复符号信息代码的方式,利用模式识别技术和数据流分析技术,按照表1总结的不可信数据的表现形式和识别方法,筛选出UEFI固件代码中潜在的漏洞威胁,并将其标记为漏洞特征。其中,模式识别技术是指根据预先确定的不可信数据的操作指令及对应的输入参数信息,在二进制程序中进行局部代码匹配的技术,一般会按照二进制程序数据流的结构进行逐一匹配。数据流分析技术是根据二进制程序内部代码的处理逻辑,分析参数数据在函数内和函数间传递过程的分析技术,主要用来指定模式匹配过程的顺序和流程。
表1不可信数据表现及识别方法
步骤2.3全局控制流图生成
本发明需要使用污点分析技术来跟踪漏洞特征代码的传播过程来确定UEFI固件中的潜在漏洞是否会被触发。因此,需要建立全面准确的全局控制流图来协助分析漏洞特征代码的传播过程。生成全局控制流图的过程主要分为两部分:首先建立函数内的控制流图,其次,根据函数间和文件间的函数调用关系,构建跨过程、跨文件的全局控制流图。全局控制流图生成算法如下:
步骤2.4获取步骤2.2中的漏洞特征集合、步骤2.3中的全局控制流图CFG,基于静态污点分析算法跟踪漏洞特征代码的传播过程,判定其是否为实际漏洞。静态污点分析算法如下:
尽管为说明目的公开了本发明的具体内容、实施算法以及附图,其目的在于帮助理解本发明的内容并据以实施,但是本领域的技术人员可以理解:在不脱离本发明及所附的权利要求的精神和范围内,各种替换、变化和修改都是可能的。本发明不应局限于本说明书最佳实施例和附图所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。
Claims (9)
1.一种基于污点分析的UEFI固件漏洞静态检测方法,其特征在于,包括以下步骤:
将UEFI固件解压缩,恢复固件中的各个功能模块,所述模块为无符号二进制机器码;
将所述模块的二进制机器码反编译成包含符号信息的中间表示代码,并将所述中间表示代码包含的符号信息进行恢复;
对恢复的符号信息的代码进行遍历,识别不可信数据,筛选出UEFI固件代码中潜在的漏洞威胁,并标记为漏洞特征;
针对恢复的符号信息中的每个函数,生成函数内控制流图,然后根据各个函数之间的调用关系,构建跨函数的全局控制流图;
根据所述全局控制流图,跟踪所述漏洞特征的代码传播过程,判定所述漏洞特征是否为实际漏洞。
2.如权利要求1所述的方法,其特征在于,符号信息的恢复方法为通过驱动入口函数初始化UEFI相关变量,并结合UEFI符号恢复规则,对所述模块中的每个函数内的结构体和调用函数进行符号信息恢复。
3.如权利要求2所述的方法,其特征在于,符号信息的恢复步骤包括:
预先设置作为符号信息恢复标准的UEFI符号恢复规则;
对所述模块中的每一个函数,利用所述UEFI符号恢复规则中的每一个规则进行符号信息恢复,所述符号信息包括函数的地址、名称和类型;
将所述符号信息分别加入UEFI运行时服务驱动所使用的进程间的通信协议产生者集合IPSet、通信协议消费者集合LPSet、***管理接口对象集合SHSet和已恢复的符号信息集合SymSet之中,将上述集合IPSet、LPSet、SHSet、SymSet作为恢复结果。
4.如权利要求1所述的方法,其特征在于,根据不可信数据的表现形式和识别方法识别不可信数据,包括:
对于硬编码地址,识别方法为:mov指令的操作数为特定的硬编码地址;
对于UEFI服务,识别方法为:所有调用UEFI提供的启动服务及运行时服务;
对于UEFI变量,识别方法为:所有从UEFI特定内存空间之外获取的全部变量;
对手通信缓存,识别方法为:通过***管理接口所传递到UEFI特定内存空间的任意数据内容;
对于CPU状态保存,识别方法为:UEFI固件中用于处理与CPU现场状态保存的指令集合;
对于过滤检查代码,识别方法为:所有UEFI固件内与UEFI特定内存空间范围有关的操作集合;
对于任意内存空间执行,识别方法为:UEFI固件代码中支持对任意内存区域代码的执行操作集合;
对于任意内存空间读写,识别方法为:UEFI固件代码中支持对任意内存区域代码的读写操作集合。
5.如权利要求4所述的方法,其特征在于,利用模式识别方法和数据流分析方法,根据不可信数据的表现形式和识别方法识别不可信数据;其中模式识别方法为根据预先确定的不可信数据的操作指令及对应的输入参数信息,在二进制程序中进行局部代码匹配;数据流分析方法为根据二进制程序内部代码的处理逻辑,分析参数数据在函数内和函数间传递过程。
6.如权利要求4所述的方法,其特征在于,利用静态污点分析算法跟踪所述漏洞特征的代码传播过程,判定所述漏洞特征是否为实际漏洞。
7.如权利要求6所述的方法,其特征在于,所述静态污点分析算法包括以下步骤:
将所述漏洞特征中的硬编码地址、UEFI服务、UEFI变量、通信缓存、CPU状态保存这五种不可信数据的表现形式对应的特征代码集合作为污点源集合;
将所述漏洞特征中的任意内存空间执行、任意内存空间读写这两种不可信数据的表现形式对应的特征代码集合作为污点汇点集合;
将所述漏洞特征中的过滤检查代码不可信数据的表现形式对应的特征代码集合作为过滤无效漏洞路径判定集合;
针对所述污点源集合中的每一个表示漏洞特征的源点,在全局控制流图中定位该源点的位置;以该源点为起点开始污点分析,判断污点传播过程中的每个节点,如果所述节点在所述污点汇点集合中,则标记从所述源点到所述节点的路径为污染路径,加入到一污点传播路径集合;否则将所述节点加入到从所述源点开始的污点传播路径种,继续沿着全局控制流图进行遍历;
在生成的污点传播路径集合中,对每一条路径进行遍历,判定是否有节点属于所述过滤无效漏洞路径判定集合中,如果有,则将该路径从所述污点传播路径集合中删除;如果所述污点传播路径集合不为空,则将所述污点传播路径集合加入到一漏洞检测结果集合中;该漏洞检测结果集合中的漏洞即为实际漏洞。
8.如权利要求1所述的方法,其特征在于,构建所述全局控制流图的步骤包括:
查找函数内的直接调用关系,根据该直接调用关系生成调用关系图;
针对文件内跨函数间接调用,使用后向切片技术找到函数调用的代码位置,并将被调用函数作为新的节点,加入到所述调用关系图中;
针对跨文件间接调用,使用UEFI自定义的进程间通信协议机制,分别在IPSet、LPSet集合中匹配通信协议的生产者函数和消费者函数,并将消费者函数作为新节点,加入到所述调用关系图中;
根据所述调用关系图中函数之间的调用关系,扩展每个函数对应的函数内控制流图,构建跨函数的全局控制流图。
9.一种基于污点分析的UEFI固件漏洞静态检测装置,用于实现权利要求1-8任一项所述的方法,其特征在于,包括:
中间表示生成器,用于将UEFI固件解压缩,恢复固件中的各个功能模块,所述模块为无符号二进制机器码;将所述模块的二进制机器码反编译成包含符号信息的中间表示代码;
漏洞静态检测器,用于将所述中间表示代码包含的符号信息进行恢复;对恢复的符号信息代码进行遍历,识别不可信数据,筛选出UEFI固件代码中潜在的漏洞威胁,并标记为漏洞特征;针对所述恢复的符号信息中的每个函数,生成函数内控制流图,然后根据各个函数之间的调用关系,构建跨函数的全局控制流图;根据所述全局控制流图,跟踪所述漏洞特征的代码传播过程,判定所述漏洞特征是否为实际漏洞。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111649424.7A CN114462044B (zh) | 2021-12-30 | 2021-12-30 | 一种基于污点分析的uefi固件漏洞静态检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111649424.7A CN114462044B (zh) | 2021-12-30 | 2021-12-30 | 一种基于污点分析的uefi固件漏洞静态检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114462044A true CN114462044A (zh) | 2022-05-10 |
CN114462044B CN114462044B (zh) | 2024-06-25 |
Family
ID=81407173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111649424.7A Active CN114462044B (zh) | 2021-12-30 | 2021-12-30 | 一种基于污点分析的uefi固件漏洞静态检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114462044B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795489A (zh) * | 2023-02-09 | 2023-03-14 | 中国电子科技集团公司第三十研究所 | 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 |
CN116303042A (zh) * | 2023-03-22 | 2023-06-23 | 中国人民解放军国防科技大学 | 一种基于污点分析的软件配置故障检测方法 |
CN117389816A (zh) * | 2023-12-08 | 2024-01-12 | 国网江西省电力有限公司电力科学研究院 | 一种基于uefi固件检测的接口检测装置及其检测方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799529A (zh) * | 2012-07-13 | 2012-11-28 | 北京航空航天大学 | 一种动态的二进制代码测试用例生成方法 |
US20150199517A1 (en) * | 2014-01-16 | 2015-07-16 | Robert Allen Rose | Universal extensible firmware interface module identification and analysis |
CN106709356A (zh) * | 2016-12-07 | 2017-05-24 | 西安电子科技大学 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
CN109002721A (zh) * | 2018-07-12 | 2018-12-14 | 南方电网科学研究院有限责任公司 | 一种信息安全漏洞的挖掘分析方法 |
CN111428247A (zh) * | 2020-04-23 | 2020-07-17 | 南京大学 | 一种对计算机漏洞库进行改进的方法 |
CN112733150A (zh) * | 2021-01-12 | 2021-04-30 | 哈尔滨工业大学 | 一种基于脆弱性分析的固件未知漏洞检测方法 |
CN112800429A (zh) * | 2021-01-28 | 2021-05-14 | 北京工业大学 | 一种基于基础性的uefi bios固件***中驱动程序保护的方法 |
-
2021
- 2021-12-30 CN CN202111649424.7A patent/CN114462044B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799529A (zh) * | 2012-07-13 | 2012-11-28 | 北京航空航天大学 | 一种动态的二进制代码测试用例生成方法 |
US20150199517A1 (en) * | 2014-01-16 | 2015-07-16 | Robert Allen Rose | Universal extensible firmware interface module identification and analysis |
CN106709356A (zh) * | 2016-12-07 | 2017-05-24 | 西安电子科技大学 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
CN109002721A (zh) * | 2018-07-12 | 2018-12-14 | 南方电网科学研究院有限责任公司 | 一种信息安全漏洞的挖掘分析方法 |
CN111428247A (zh) * | 2020-04-23 | 2020-07-17 | 南京大学 | 一种对计算机漏洞库进行改进的方法 |
CN112733150A (zh) * | 2021-01-12 | 2021-04-30 | 哈尔滨工业大学 | 一种基于脆弱性分析的固件未知漏洞检测方法 |
CN112800429A (zh) * | 2021-01-28 | 2021-05-14 | 北京工业大学 | 一种基于基础性的uefi bios固件***中驱动程序保护的方法 |
Non-Patent Citations (3)
Title |
---|
唐和平;黄曙光;张亮: "污染传播分析的漏洞利用检测算法", 小型微型计算机***, vol. 31, no. 11, 31 December 2010 (2010-12-31) * |
曾祥飞;郭帆;涂风涛: "基于对象跟踪的J2EE程序动态污点分析方法", 计算机应用, vol. 35, no. 8, 31 December 2015 (2015-12-31) * |
缪旭东;王永春;曹星辰;方峰: "基于模式匹配的安全漏洞检测方法", 计算机科学, vol. 44, no. 4, 31 December 2017 (2017-12-31) * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115795489A (zh) * | 2023-02-09 | 2023-03-14 | 中国电子科技集团公司第三十研究所 | 一种基于硬件级进程跟踪的软件漏洞静态分析方法及装置 |
CN116303042A (zh) * | 2023-03-22 | 2023-06-23 | 中国人民解放军国防科技大学 | 一种基于污点分析的软件配置故障检测方法 |
CN116303042B (zh) * | 2023-03-22 | 2023-09-12 | 中国人民解放军国防科技大学 | 一种基于污点分析的软件配置故障检测方法 |
CN117389816A (zh) * | 2023-12-08 | 2024-01-12 | 国网江西省电力有限公司电力科学研究院 | 一种基于uefi固件检测的接口检测装置及其检测方法 |
CN117389816B (zh) * | 2023-12-08 | 2024-04-02 | 国网江西省电力有限公司电力科学研究院 | 一种基于uefi固件检测的接口检测装置及其检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN114462044B (zh) | 2024-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Redini et al. | Karonte: Detecting insecure multi-binary interactions in embedded firmware | |
Corina et al. | Difuze: Interface aware fuzzing for kernel drivers | |
KR102415971B1 (ko) | 악성 모바일 앱 감지 장치 및 방법 | |
US9946880B2 (en) | Software vulnerability analysis method and device | |
CN114462044B (zh) | 一种基于污点分析的uefi固件漏洞静态检测方法及装置 | |
Bayer et al. | Scalable, behavior-based malware clustering. | |
Zhang et al. | A first step towards algorithm plagiarism detection | |
CN111859375A (zh) | 漏洞检测方法、装置、电子设备及存储介质 | |
CN112733150B (zh) | 一种基于脆弱性分析的固件未知漏洞检测方法 | |
CN111447215A (zh) | 数据检测方法、装置和存储介质 | |
US20130239214A1 (en) | Method for detecting and removing malware | |
CN102867144B (zh) | 一种用于检测和清除计算机病毒的方法和装置 | |
Lin et al. | Dimsum: Discovering semantic data of interest from un-mappable memory with confidence | |
CN101515320A (zh) | 一种攻击时漏洞检测方法及其*** | |
CN113961919B (zh) | 恶意软件检测方法和装置 | |
CN113987517B (zh) | 基于物联网固件的漏洞挖掘方法、装置、设备及存储介质 | |
CN105095759A (zh) | 文件的检测方法及装置 | |
Adkins et al. | Heuristic malware detection via basic block comparison | |
Samhi et al. | Difuzer: Uncovering suspicious hidden sensitive operations in android apps | |
Karande et al. | BCD: Decomposing binary code into components using graph-based clustering | |
CN113176926B (zh) | 一种基于虚拟机自省技术的api动态监控方法及*** | |
US20230141948A1 (en) | Analysis and Testing of Embedded Code | |
US20220366048A1 (en) | Ai-powered advanced malware detection system | |
KR101052735B1 (ko) | 메모리 조작유무를 감지하는 방법 및 이를 이용한 장치 | |
Dornhackl et al. | Defining malicious behavior |
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 |