GRUB2引导加载程序揭示了多个严重漏洞

GRUB是基于Unix的操作系统使用的一种流行的引导加载程序,已修复了多个严重级别较高的漏洞。

2020年,BleepingComputer报告了GRUB2中的BootHole漏洞,即使安全启动验证机制处于活动状态,攻击者也可能使攻击者破坏操作系统的启动过程。

威胁参与者可能会进一步利用此缺陷在操作系统中隐藏可在每次引导时运行的任意代码(“ bootkit”)。

特别是,引导加载程序中的此类缺陷允许规避UEFI安全启动,UEFI安全启动是一种验证机制,用于确保计算机的UEFI固件执行的代码是受信任的而不是恶意的。

针对严重性较高的GRUB2漏洞发布了117个补丁

本周GRUB项目维护人员发布了数百个上游补丁,以解决下面列出的严重引导加载程序缺陷。

“去年宣布的BootHole漏洞鼓励许多人仔细研究一般的引导过程的安全性,尤其是GRUB引导加载器。”

甲骨文软件开发商兼GRUB维护者Daniel Kiper表示:“因此,在过去的几个月中,我们不仅获得了报告,而且还发现了GRUB自身的各种安全缺陷。”

关于纠正的漏洞和CVE列表,Kiper指出,修复所有错误的补丁包包括117个补丁。

GRUB2漏洞列表如下:

CVECVSS 3.1严重程度类型描述报告人
CVE-2020-14372高(7.5)不允许输入的清单不完整启用安全启动后,acpi命令允许特权用户加载精制的ACPI表。马特·库克里(MátéKukri)
CVE-2020-25632高(7.5)免费使用GRUB2的rmmod实现存在缺陷,允许攻击者卸载用作依赖项的模块,而无需检查是否仍在加载任何其他依赖项模块。克里斯·库尔森(规范)
CVE-2020-25647中(6.9)越界写调用grub_usb_device_initialize()来处理USB设备初始化。它从USB设备中读取所需的描述符,并使用该数据填充某些USB数据结构。grub_usb_device_initialize()执行很少的边界检查,只是假设USB设备提供了合理的值。此行为可以触发内存损坏或导致任意代码执行。Joseph Tartaro(IOActive),Ilja van Sprundel(IOActive)
CVE-2020-27749高(7.5)堆栈缓冲区溢出grub_parser_split_cmdline()将提供的命令行中存在的变量名扩展为它们相应的变量内容,并使用1kB堆栈缓冲区进行临时存储而没有足够的边界检查。攻击者可以利用此漏洞来规避安全启动保护。克里斯·库尔森(规范)
CVE-2020-27779高(7.5)授权不当cutmem命令允许特权用户取出存储区域当启用安全启动泰迪·里德
CVE-2021-3418中(6.4)权限保留不当GRUB 2.05重新引入了CVE-2020-15705。这是指发行版中提到的特定缺陷的发行版。迪米特里·约翰·莱德科夫(规范)
CVE-2021-20225高(7.5)堆越界写入GRUB2中的选项解析器允许攻击者通过调用带有大量特定简短形式的选项的某些命令,从而在堆分配的缓冲区末尾进行写操作。Daniel Axtens(IBM)
CVE-2021-20233高(7.5)堆越界写菜单呈现代码中的GRUB2菜单呈现代码setparam_prefix()存在一个缺陷,即假设表示带引号的单引号需要3个字符,而实际上需要4个字符,则执行长度计算。Daniel Axtens(IBM)

供应商尚未发布完整的缓解措施详细信息

Kiper 在GRUB的邮件列表中描述了为解决这些缺陷而进行的改进。

尽管已经发布了117个上游代码补丁来解决这些CVE,但是OS厂商将提供有关缓解和获取更新的详细说明。

“当需要更新时,相应的发行版和供应商将提供确切更新需求的详细信息。”

Canonical  (Ubuntu),DebianRedHatSuse还发布了 详细说明修复步骤的公告。

“重要的是要知道垫片SBAT的开发仍在进行中。”

“要完全缓解所有CVE,将需要更新的UEFI吊销列表(dbx),至少在某些情况下,它将不允许使用当今的启动工件进行安全启动,” Kiper继续说道。

并非所有供应商可能都已针对缺陷发布了更新,一旦协调披露流程完成,将有更多详细信息。

微软有望发布更新的UEFI吊销文件,以缓解这些漏洞。 

鉴于GRUB中BootHole漏洞的严重性,应该尽快修补上述严重漏洞。

*编译:Domino

*来自:bleepingcomputer