CVE-2020-10713 | GRUB2 BootHole缝隙公告

颁布功夫 2020-07-30

0x00 缝隙概述


宝运莱·(中国区)最新官方网站


Eclypsium钻研人员在无数Linux系统使用的GRUB2疏导法式中发现了一个缝隙将其定名为“BootHole”(CVE-2020-10713),即便启用了Secure Boot,也可在启动过程中执行肆意代码。攻击者可利用该缝隙装置悠久且隐秘的bootkit或恶意疏导法式来节造设备。

该缝隙影响使用Secure Boot的系统,即便它们不使用GRUB2。所有署名的GRUB2均受影响,这意味着险些所有的Linux 刊行版均受影响。此表GRUB2还支吃熹它操作系统、内核和治理法式如Xen。这个缝隙还涉及到任何使器拥有尺度Microsoft Third Party UEFI Certificate Authority的Secure Boot的Windows设备,例如工业、医疗、金融等行业中使用的设备均受影响。该缝隙导致这些设备易遭到例如最近使用恶意UEFI疏导法式的攻击活动。

Eclypsium已和多家行业如OS厂商、推算机造作商和应急响应中心协调披露该缝隙�;航獯胧┮笫鹈筒渴鹦碌氖璧挤ㄊ�,这样能够预防攻击者使用老旧、易受攻击版本。这一过程可能极度漫长,由于组织机构实现建复必要大量功夫。


0x01 缝隙详情


BootHole缝隙是解析grub.cfg文件时在GRUB2中产生的缓冲区溢出。此配置文件是通常位于EFI系统分区中的表部文件,因而能够由拥有治理员特权的攻击者批改,而无需更改已署名供给商shim和GRUB2 bootloader可执行文件的齐全性�;撼迩绯鍪构セ髡吣芄辉赨EFI执行环境中获得肆意代码执行权限,该代码能够用于运行恶意软件,更改启动过程,直接建补OS内核或执行恶意代码。

为了处置来自表部配置文件的号令,GRUB2使用flex和bison从说话描述文件和援手法式函数天生针对特定域说话(DSL)的解析引擎。

和为每个DSL手动编写自界说解析器相比,通常以为这是一种更好的步骤。但是GRUB2、flex和bison都是复杂的软件包,拥有自己的设计如果,很容易忽略。这些不匹配的设计如果可能会导致易受攻击的代码。

flex天生的解析器引擎将此界说蕴含为令牌处置代码的一部门:


宝运莱·(中国区)最新官方网站


在这个宏中,天生的代码检测到它遇到的令牌太大而无法放入flex的内部解析缓冲区并挪用YY_FATAL_ERROR(),这是使用flex天生的解析器的软件提供的援手函数。

但是,YY_FATAL_ERROR()GRUB2软件包中提供的实现是:


宝运莱·(中国区)最新官方网站


它不会终场执行或退出,而只是将谬误输出到节造台并返回到挪用函数。不幸的是,在编写flex代码时就进展YY_FATAL_ERROR()不会再返回任何挪用。这导致yy_flex_strncpy()被挪用,并将源字符串从配置文件复造到一个太幼而无法包容它的缓冲区中。


宝运莱·(中国区)最新官方网站


除了这个特定的蹊径之表,flex天生的代码中的很多其他处所也进展对YY_FATAL_ERROR()的任何挪用始终不会返回,并且在进展被粉碎时执行不安全的操作。API的出产者和消费者之间的如果不匹配是一个极度常见的缝隙起源。

最终,通过为配置文件提供输入令牌,解析器无法处置这些太长的令牌,此缓冲区溢出将覆盖堆中的关键结构。这些被覆盖的字段蕴含解析器结构元素,它能够用作肆意的write-what-where原语,以获取肆意代码执行并劫持疏导过程。


宝运莱·(中国区)最新官方网站


还要把稳的是,UEFI执行环境没有地址空间布局随机化(ASLR)或数据执行�;ぃ―EP / NX)或其他系统中常见的缓解缝隙的技术,因而,此类缝隙很容易利用,堆是齐全可执行的,无需构建ROP链。

鉴于GRUB2 解析配置文件的步骤中存在一个弱点,攻击者能够执行肆意代码,绕过署名验证。BootHole缝隙可被用于装置可悠久和隐秘的bootkit或者即便在启用Secure Boot 的情况下也可运行的恶意疏导法式。攻击者可能在操作系统之前运行恶意代码并节造操作系统的加载方式、直接建复操作系统、甚至使疏导法式批改OS镜像。

所有从grub.cfg文件中读取号令的GRUB2 署名版本均易受攻击,影响所有Linux 刊行版。截至目前,已有80多个shim受影响。除了Linux 系统表,任何使器拥有尺度微软UEFI CA的Secure Boot的系统也受该缝隙影响。因而,钻研人员以为当前使用的大无数系统,以及大量基于Linux 的OT 和IoT系统,均可能受这些缝隙的影响。

另表,任何依赖UEFI Secure Boot 的硬件根信赖机造均可被绕过。


0x02 措置建议


受影响厂商颁布安全布告和更新:

? Microsoft

? Security advisory

? https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV200011

? UEFI Forum

? Updated Revocation List

? https://uefi.org/revocationlistfile

? Debian

? Security advisory

? https://www.debian.org/security/2020-GRUB-UEFI-SecureBoot

? Canonical:

? Security advisory

? https://ubuntu.com/security/notices/USN-4432-1

? KnowledgeBase article

? https://wiki.ubuntu.com/SecurityTeam/KnowledgeBase/GRUB2SecureBootBypass

? Red Hat

? Customer documentation

? https://access.redhat.com/security/vulnerabilities/grub2bootloader

? CVE information

? https://access.redhat.com/security/cve/cve-2020-10713

? Vulnerability response article

? https://access.redhat.com/security/vulnerabilities/grub2bootloader

? SUSE

? Security advisory:

? https://www.suse.com/c/suse-addresses-grub2-secure-boot-issue/

? Knowledge Base article:

? https://www.suse.com/support/kb/doc/?id=000019673

? HP

? Security advisory

? HPSBHF03678 rev. 1 – GRUB2 Bootloader Arbitrary Code Execution:https://support.hp.com/us-en/document/c06707446

? HPE

? Security advisory

? https://techhub.hpe.com/eginfolib/securityalerts/Boot_Hole/boot_hole.html

? VMware

? Knowledge Base article

? https://kb.vmware.com/s/article/80181

? Upstream Grub2 project

? GRUB2 Git Repository:http://git.savannah.gnu.org/gitweb/?p=grub.git&view=view+git+repository

? GRUB Developer Mailing List:https://lists.gnu.org/mailman/listinfo/grub-devel/

必要把稳的是和UEFI有关的更新曾导致设备不成用,因而厂商必要极度审慎。若是在更新的Linux疏导加载法式和shim之前更新了撤除列表(dbx),则将不会疏导系统。

更复杂的情况是,企业灾备机造也会遇到此问题,另表,当硬件故障而必要进行设备更新时,一样型号的新系统可能已经利用了dbx更新,并且在尝试疏导先前装置的操作系统时会失败。


建议:

1、监控疏导法式分区(EFI法式分区)的内容,这将为其余的过程节俭功夫,并有助于确定受影响的系统;

2、持续更新系统,以削减攻击的可能性。出格是更新后,旧的疏导法式建议删除。它蕴含急救盘、装置法式、企业黄金镜像、虚构机或其它可疏导媒介;

3、测试撤销列表更新。确保测试的是在使用的固件版本和型号。

4、要解决此缝隙问题,首先要部署撤除更新。

5、联系供给商,确认他们在解决此问题。

Eclypsium拥有可用的powershell和bash剧本,用于检测此dbxupdate撤除的疏导法式,参考链接:https://github.com/eclypsium/BootHole/。


0x03 有关新闻


https://www.zdnet.com/article/boothole-attack-impacts-windows-and-linux-systems-using-grub2-and-secure-boot/#ftag=RSSbaffb68


0x04 参考链接


https://eclypsium.com/2020/07/29/theres-a-hole-in-the-boot/


0x05 功夫线


2020-07-29 Eclypsium颁布汇报

2020-07-30 VSRC颁布缝隙公告


宝运莱·(中国区)最新官方网站