BootHole安全启动存在严重漏洞,影响大量Linux和Window系统 – 作者:深信服千里目安全实验室

一、漏洞概要

2020年7月29日,Eclypsium研究人员在GRUB2引导程序中发现了一个漏洞并将其命名为“BootHole”(CVE-2020-10713),利用该漏洞可在启动进程中执行任意代码。攻击者可利用该漏洞安装持久且隐秘的bootkit或恶意引导程序来控制设备。目前绝大多数linux发行版系统受影响。深信服安全研究团队依据漏洞重要性和影响力进行评估,作出漏洞通告。

漏洞名称

GRUB2本地代码执行漏洞(CVE-2020-10713)

威胁等级

高危

影响范围

GRUB 1.99, 2.00, 2.02, 2.04

漏洞类型

代码执行

利用难度

中等

 

 

二、漏洞分析

2.1 GRUB2介绍

GRUB2全称GRand Unified Bootloader 2,统一引导加载程序,是来自GNU项目的操作系统启动程序。用于加载操作系统内核,然后将控制权转移到该内核。还可在计算机启动时选择希望运行的操作系统,解决同一台计算机上安装的多个操作系统的问题。

2.2 漏洞描述

Eclypsium研究人员在GRUB2引导程序中发现了一个漏洞并将其命名为“BootHole”(CVE-2020-10713),可在启动进程中执行任意代码。攻击者可利用该漏洞安装持久且隐秘的bootkit或恶意引导程序来控制设备。目前绝大多数linux发行版系统受影响。

2.3 漏洞详情

GRUB2配置文件是一个文本文件,解析异常的grub.cfg文件时在GRUB2中可发生缓冲区溢出。此配置文件是通常位于EFI系统分区中的外部文件,因此可以由具有管理员特权的攻击者修改。攻击者可以在UEFI执行环境中获得任意代码执行权限,该代码可以用于运行恶意软件,更改启动过程,直接篡改OS内核数据或执行许多其他恶意操作。

为了处理来自外部配置文件的命令,GRUB2使用flex和bison从语言描述文件和辅助程序函数生成针对特定域的语言解析引擎。Flex生成的语法引擎包括了处理token的代码如下:

图片[1]-BootHole安全启动存在严重漏洞,影响大量Linux和Window系统 – 作者:深信服千里目安全实验室-安全小百科

如果处理的token过长,则调用YY_FATAL_ERROR,该函数的实现为:

图片[2]-BootHole安全启动存在严重漏洞,影响大量Linux和Window系统 – 作者:深信服千里目安全实验室-安全小百科

其中并没有停止执行或退出程序的代码,只将错误输出到控制台并返回到调用的函数,这使得yy_flex_strncpy()被调用,并将配置文件中的源字符串从复制到一个过小的缓冲区中。

图片[3]-BootHole安全启动存在严重漏洞,影响大量Linux和Window系统 – 作者:深信服千里目安全实验室-安全小百科

除该路径外,flex生成的代码中还有很多其他地方,一旦YY_FATAL_ERROR()执行非预期操作将不会正确返回,并执行不安全的操作。最终,由于配置文件写入的token长度过大无法被解析器正常处理,将造成缓冲区溢出覆盖堆中的关键结构。这些覆盖的字段包括解析器内的结构元素等,可造成任意代码执行。

三、影响范围

【影响版本】

GRUB 1.99, 2.00, 2.02, 2.04

四、解决方案

4.1检测方案

输入以下命令查看grub2版本

grub-install –version

4.2 修复方案

厂商目前还未发布安全更新,请及时关注官网以获得最新版本。

https://www.gnu.org/software/grub/

4.3 临时修复方案

1.升级检查并修复 grub.cfg 文件

2.暂时替换引导程序为rEFInd/sysline/systemd-boot/clover

五、时间轴

2020/7/29  Eclypsium发布关于CVE-2020-10713的详细信息

2020/7/31 深信服千里目安全实验室发布漏洞分析文章。

六、参考链接

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

来源:freebuf.com 2020-07-31 18:40:24 by: 深信服千里目安全实验室

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论