【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

IoT 1年前 (2023) admin
406 0 0

点击上方蓝字 关注联想全球安全实验室


CVE-2022-21198 Intel SMM 漏洞分析

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

背景

2022年10月下旬,我参加了Intel的Circuit Breaker项目。该项目是Intel发起的漏洞奖励计划,在签署了一系列协议之后我终于拿到了代码。第一次拿到Intel的UEFI代码还是有点小激动的,有些模块在IDA里看过很多遍,但是当真正看到代码的时候还是有种既熟悉又陌生的感觉。

大概一周后,我在一个SMI处理程序中发现了一处TOCTOU漏洞,配合DMA攻击能够读写SMRAM并将权限提升到系统管理模式(SMM)。在上报该漏洞后,Intel认为该问题与内部审计的漏洞(CVE-2022-21198) 相同。从Intel 2022年11月份的安全公告 Intel-sa-00688和安全更新情况来看,他们可能提前就知道这个漏洞了,很遗憾这次无缘奖金。

Intel给CVE-2022-21198的评分为7.9分,属于高危漏洞,但在公告里一笔带过。因此,本文主要聊一聊漏洞的细节,以及Intel是如何修复的。

由于NDA的缘故,源码就不进行展示了。这里用IDA的伪代码进行替代,这份代码相信许多看官手里也都有。


【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

漏洞

该漏洞位于SpiSmmStub的一处SMI handler中。

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

深入ChildSwSmiHandler分析:

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

处理程序调用 SmmIsBufferOutsideSmmValid来检查攻击者控制的 CommBuffer指针是否与SMRAM重叠,以避免SMI处理程序读/写它自己的地址空间。然后分配一块内存,把CommBuffer复制到安全的内存上,避免TOCTOU攻击。一切都是标准的中规中矩的操作,到目前为止,一切都很好。

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

真正有问题的部分在这里。在完成某个具体的功能的时候,比如SPI_FUNCTION_FLASH_READ处理函数从安全内存中取参数,调用Interface+n执行具体操作,在操作完成后还需要把结果返回给调用者,也就是放回到CommBuffer中。

而如上图所示,在返回的数据结构的构造中,数据长度、嵌套指针的值等等这些都没有从安全内存中获取,而是从攻击者可控的CommBuffer中重新获取,这也为攻击者提供了TOCTOU利用的机会。比如上面这个代码片段,CopyMem的目的地址和长度都是攻击者可控的,尽管前面有检查,但是在这里仍然留下了很长的时间窗口可以让攻击者利用DMA攻击修改这些值。

而整个ChildSwSmiHandler的代码风格都是类似的,这也导致了许多功能处理都有一样的问题。

  SPI_FUNCTION_FLASH_READ
SPI_FUNCTION_FLASH_READ_SFDP
SPI_FUNCTION_FLASH_READ_JEDEC_ID
SPI_FUNCTION_FLASH_READ_STATUS
SPI_FUNCTION_GET_REGION_ADDRESS
SPI_FUNCTION_READ_PCH_SOFTSTRAP
SPI_FUNCTION_READ_CPU_SOFTSTRAP

整个漏洞的情况大致如此,并不复杂。


【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

POC

由于我并没有PCILeech之类的可以做DMA attack的东西,只能把代码拿出来用线程来构造竞争条件模拟一下,所以就不拿来献丑了。


【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

修复方案

再来看看Intel的补丁。

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析
【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

Intel的修复方案也很简单,在从Commbuffer复制到安全内存和从安全内存复制到Commbuffer动作之后多加了一个修复嵌套指针的操作。

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

简单地说,SMI handler不再直接使用外部提供的嵌套指针了。这个函数根据不同功能号重新构造内部的嵌套指针,返回数据的时候也是一股脑地把Commbuffer填满然后再去修复内部的指针。

这个修复方案仍然有一点点瑕疵,目前已经报告给Intel了,由于还没有披露,具体就不多说了。

最后附上一份fwhunt rule。(大部分时候是好用的)

INTEL-SA-00688:
meta:
author: charles
license: CC0-1.0
name: CVE-2022-21198
namespace: vulnerabilities
CVE number: CVE-2022-21198
vendor id: INTEL-SA-00688
CVSS score: 7.9 High
advisory: https:/www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00688.html
description: Time-of-check time-of-use race condition in the BIOS firmware for some Intel(R) Processors may allow a privileged user to potentially enable escalation of privilege via local access.
volume guids:
- 7D655829-26DD-4342-96AD-04899477C3FA
hex_strings:
not-all:
- 488b014883e80174624883e801745c4883e802744d4883e801743e4883e801742f4883e80174294883e80174154883e80174064883f801753a488d412048894118c3488d412448894114488d4128eb1f488d411c48894114c3488d411d48894115c3488d412148894119c3488d41244889411c
code:
and:
- pattern: E8....FFFF488B....803D....000000
place: child_sw_smi_handlers




【转发抽奖】

福利来啦!!!



安全保驾护航

代码的世界亦有万千色彩


关注此公众号+转发本文至朋友圈

即可参与抽奖~

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析


别划走!!!

还有【留言抽奖】!!!


文章下方参与留言,

10个小伙伴送上精美礼品

【安全实验室定制鼠标收纳袋】一份~


【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析


欢迎大家积极参与~

 -END-

往期精彩合集

●物联网安全之FirmAE固件模拟仿真

●如何保障服务器安全

●使用frida辅助分析iOS App加密算法

●联想的产品安全

●通过Tor + Proxychains/Proxifier 来尽可能隐藏入侵痕迹

Web安全开发实战(一)

一个赏金3000美元的一键账号接管漏洞分析

●CVE-2023-24055

●开源软件安全治理的思考与实践

NFC卡复制和修改

CSL

【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

联想GIC全球安全实验室(中国)

[email protected]

原文始发于微信公众号(联想全球安全实验室):【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析

版权声明:admin 发表于 2023年4月20日 下午6:01。
转载请注明:【重大福利在文末↓↓↓】CVE-2022-21198 Intel SMM 漏洞分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...