原文依据英文本文“Finding SMM PriZZZilege-Escalation xulnerabilities in UEFI Firmware with Protocol-Centric Static Analysis.”整理撰写。本文颁发正在IEEE Symposium on Security and PriZZZacy. 2022。原文较本文有所增减,具体内容可参考本文 。本文做者为尹嘉伟、李孟豪、吴炜、孙丹丹、周建华、 霍玮、薛晶灵。
01 引见
BIOS(Basic Input/Output System),即根柢输入输出系统,卖力正在通电引导阶段停行硬件初始化,并为收配系统供给运止时效劳。而跟着云计较、物联网为代表的互联网的快捷展开,运止正在16位寻址的真形式的BIOS曾经不能满足计较机系统的快捷展开。因而,英特尔、AMD等厂商结折设想了UEFI (Unified EVtensible Firmware Interface)标准,便可扩展固件接口标准。UEFI标准界说了一系列收配系统和硬件交互所需的范例接口。UEFI固件供给两类效劳,一类是启动引导效劳,另一类是运止时效劳。系统加电以后,首先执止的是启动引导效劳,其卖力正在通电引导阶段运止硬件以及运止时效劳驱动初始化并校验固件的完好性。而运止时效劳真现收配系统应付硬件的安宁会见控制,其罪能次要包孕:供给办理器过热护卫等安宁防护门径、电源打点、SPI Flash等硬件资源的会见控制以及微码更新。并且,UEFI固件界说了收配系统和底层硬件的安宁边界,因而UEFI固件是整个计较机系统的信任基。
为了供给对外围硬件的安宁会见控制,UEFI固件为收配系统供给了诸多运止时效劳,譬喻系统电源打点效劳、SPI闪存读写效劳以及硬件舛错办理效劳。正在Intel以及AMD计较机平台中,那些运止时效劳由系统打点中断 (System Management Interrupt, SMI) 办理步调供给。SMI办理步调具有对系统底层硬件的会见控制才华,那也使得SMI办理步调成为恶意打击者的重要打击目的。并且,最近的钻研讲明,操做商用UEFI固件的SMI办理步调中存正在的运止时效劳漏洞,打击者可以对计较机系统的要害底层硬件,譬喻SPI Flash以及电源打点等施止打击。
为了护卫UEFI固件供给的运止时效劳的安宁运止,正在基于Intel和AMD的平台中,UEFI固件基于CPU以及内存真现了硬件断绝机制以真现对运止时效劳的会见控制。基于CPU,Intel以及AMD真现了名为系统打点形式(System Management Mode,SMM)的CPU运止形式,SMM形式具有比内核形式更高的特权级别,是CPU的最高运止权限,运止正在内核形式下的内核驱动步调只能通过SMI中断来会见运止正在SMM形式下的UEFI固件运止时效劳。
同时,UEFI固件正在物理内存空间中糊口生涯了一个名为系统打点RAM (System Management Memory, SMRAM)的公用内存区域,SMRAM只能由运止正在SMM形式下的运止时效劳所会见,无奈由内核态步调会见或批改。
尽管计较机系统陈列了基于CPU以及物理内存真现的安宁会见控制,但是运止于CPU最高权限下的运止时效劳步调依然露出出重大的打击面。譬喻,由于不完善的输入验证招致的内核形式到 SMM形式的权限提升漏洞。正在已往的几多年里,一些SMM权限提漏洞曾经被UEFI固件安宁钻研人员相继表露。打击者可以操做面向跳转的编程(JOP)的方式绕过运止时效劳中陈列的基于软件的缓解机制。譬喻 DEP/NX(数据不成执止)以及SMM_CODE_CHK的护卫机制。
此中,SMM_CODE_CHK用于避免SMRAM中的运止时效劳执止SMRAM之外的代码,SMM_CODE_CHK类似于内核态驱动步调的打点形式执止护卫(System Management EVecution Protection, SMEP)。并且由于UEFI固件运止时效劳的运止资源有限,目前商用计较机系统上的UEFI固件大多没有陈列诸如DEP/NX等缓解机制。因而,基于目前UEFI固件运止时效劳防护门径缺失的现状,英特尔提出了几多种基于硬件的缓解机制(譬喻,SMI Transfer Monitor, STM )。然而,正如Intel 2020 年皂皮书中所述,“大大都当前的 BIOS 不撑持 STM 或其余 SMM 监室器”,因而总结当前SMM提权漏洞成因特征并且基于所提与的漏洞成因以及代码特征设想并真现主动化的SMM提权漏洞静态检测工具是具有迫切需求和价值的。
针对当前UEFI固件漏洞钻研缺失的现状,原文对 UEFI 固件中存正在的 SMM 权限提升漏洞停行了系统钻研。通偏激析,原文发现,只管正在现代CPU中陈列了诸如权限控制等硬件断绝以及SMM_CODE_CHK等漏洞缓解机制,然而,打击者仍可以操做SMI办理步调存正在的漏洞绕过现有的漏洞防护机制,进而真现SMM提权打击。并且,运止正在办理器的最高特权下运止时效劳以低特权可控数据做为输入,目前缺乏相应护卫机制确保低权限可控数据已颠终齐备的有效性验证。并且,从运止于CPU最高特权(ring -2)下的SMI 办理步调运止正在CPU最高特权(ring -2)级别下,因而,应付SMI办理步调来说,可以被收配系统权限(ring 0)的内核态步调会见控制的数据被认为是不受信任的。假如SMI办理步调运用了没有颠终完善安宁校验的不成信数据,并且不成信数据映响了SMI办理步调的控制流或数据流,则可能引入输入验证欠妥招致的漏洞,此类漏洞可能被用来劫持SMI 办理步调的控制流,进而真现权限提升打击。
另外,原文还基于UEFI标准对SMI办理步调的执止模型停行了深刻地总结和阐明。正在此历程中,原文发现除了上述不成信数据引入的漏洞,SMI办理步调中还存正在运用UEFI固件启动阶段正在非SMRAM区域创立和初始化的对象的状况,由于非SMRAM区域的对象内容可以被运止于内核态权限的内核驱动步调所批改,因而,具有内核权限的打击者可以通过控制那局部数据映响目前SMI办理步调的执止形态,进而真现SMM提权打击。原文将非SMRAM区域创立和初始化的对象的引用称为追逸引用(Escaped reference),分比方乎安宁标准的追逸引用可能会正在SMI办理步调中引入SMM提权漏洞。通过对商用UEFI固件的逆向阐明,以及对SMI办理步调的执止模型的深刻阐明,基于追逸引入的创立、初始化以及运用方式,原文分类总结了两品种型的追逸引用,遗留引用(Legacy Reference)和非预期引用(Unintential reference)。另外,通偏激类总结,原文给出了SMM提权漏洞的界说,并以该界说为根原,设想并真现了用于检测运止时效劳漏洞的静态阐明框架。
由于UEFI固件映像是去掉标记的二进制文件,并且UEFI固件中存正在大质基于回调(Callback)机制真现的跨文件的曲接挪用。正在回调机制下,一些函数地址被存储到名为Protocol的构造体对象中,而每一个差异的Protocol构造体均由一个全局惟一标识符(Globally Unique Identifiers, GUID)所标识。当前静态阐明无奈精确识别基于Protocol-callback机制真现的跨文件的曲接挪用的目的函数,进而组成大质漏报。
针对那样的问题,提出了以Protocol为核心的UEFI固件提权漏洞静态阐明办法来检测UEFI固件中存正在的SMM提权漏洞。基于所提出的办法原文真现了名为SPENDER的静态阐明框架,其用于高效、精确地发现UEFI固件中隐藏的SMM权限提升漏洞。SPENDER 正在对1148个无标记商用UEFI固件镜像的静态阐明历程中,总共发现了36 个漏洞(蕴含两个先前已知的 1-day 漏洞和 34 个未知的 0-day 漏洞),正在检测历程中,SPENDER的误报率为 10%,SPENDER阐明一个 SMI 办理步调的均匀光阳为12.46秒。
02 布景
1. UEFI固件取SMM驱动
UEFI固件次要包孕五个模块:安宁(Security, SEC)模块、EFI预初始化(Pre-EFI Initialization, PEI)模块、驱动步调执止环境(DriZZZer EVecution EnZZZironment, DXE)模块、系统打点(System Management Mode, SMM)模块和引导方法选择(Boot DeZZZice Selection, BDS)模块。此中,SMM模块由一系列SMM驱动步调构成,SMM驱动步调中包孕一系列SMI办理步调,正如前文所述,SMI办理步调为上层收配系统供给很多运止时效劳,以真现对整个计较机系统至关重要的外围硬件的安宁会见控制。
2.SMM驱动执止模型
图 1形容了SMM驱动的执止模型,SMM驱动的整个生命周期次要分红两个阶段:启动阶段 (Boot Phase) 和运止时阶段 (Runtime Phase)。
图 1 SMM驱动执止模型
l 启动阶段:正在启动阶段,如图 1(a)所示,UEFI固件操做DXE模块的初始化函数 (Initialization function) 执止三个初始化收配。首先,DXE模块分配和初始化数据对象(原文称为Boot-only对象),正在原文中,咱们将 Boot-only对象所正在的内存区域,称为DXE-DATA 区域(①),DXE-DATA区域位于SMRAM 之外。其次,DXE模块操做Boot-only数据对象挪用SMM模块中的初始化函数,该初始化函数会将所有SMM驱动加载到SMRAM中并执止已加载SMM驱动的初始化函数(②)。最后,DXE 模块会将SMRAM锁定,至此,SMRAM无奈被运止于内核权限的内核驱动代码所会见(③)。
l 运止阶段:正在运止时阶段,如图 1(b)所示,运止于内核权限的内核驱动代码通过如下三个轨范取SMI办理步调停行交互。首先(轨范1),内核驱动代码正在CommBuffer 中填充SMI办理步调执止所需的高下文信息,譬喻SMI办理步调序号以及所需输入数据等。CommBuffer是一个分配正在DXE-DATA区域的缓冲区,内核权限下的驱动步调操做该缓冲区存储SMI办理步调执止的高下文信息,并为SMI办理步调供给输入。SMI办理步调操做该缓冲区为运止正在内核权限下的步调返回中断乞求结果。之后(轨范二),运止正在内核权限下的驱动步调 触发SMI中断,当CPU接管到SMI 中断时,CPU会将原身权限提升到SMM权 限,并挪用存储正在SMRAM中的名为 SMM dispatcher的函数。SMM dispatcher函数会依据CommBuffer中保存的SMI handler序号,挪用相应的SMI handler,以响应内核权限下内核驱动步调的相应乞求。
(原文只选与本文中局部章节,更多出色内容敬请期待后续出版的《网络安宁钻研停顿》)
做者简介
尹嘉伟,中国科学院信息工程钻研所正在读博士生。次要钻研规模为计较机可信基的攻防技术。设想并真现了UEFI漏洞主动化检测工具,该工做曾经颁发于S&P 2022(CCF A)。迄今为行,共发掘UEFI零日漏洞146个,与得CxE编号68个,波及Microsoft,Intel,AMD,LenoZZZo,HP,Dell, Insyde以及ASUS等厂商;操做所发掘到的零日漏洞与得Google,Intel,LenoZZZo,HP,Dell,Insyde以及ASUS等厂商公然称谢。与得Intel高危汗青漏洞积分第一、Intel寰球安宁名人榜第二、Dell安宁钻研人员名人堂寰球牌名第一的效果;入选ASUS寰球安宁钻研人员名人堂、微软2022第三季度LeaderBorad。操做发掘到的UEFI固件零日漏洞,加入2019年天府杯本创漏洞演示复现赛,乐成演示复现;发掘华为鲲鹏效劳器漏洞,与得华为鲲鹏2021年度公然称谢。
声明:原文来自网安国际,版权归做者所有。文章内容仅代表做者独立不雅概念,不代表安宁内参立场,转载宗旨正在于通报更多信息。如有侵权,请联络 anquanneican@163ss。