本地执行快 服务器执行慢_GRUB2本地代码执行漏洞通告(CVE202010713)

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

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

威胁等级:高危

影响范围:GRUB 1.99, 2.00, 2.02, 2.04

漏洞类型:代码执行

利用难度:中等

漏洞分析

1 GRUB2介绍

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

2 漏洞描述

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

3 漏洞分析

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

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

3d901b4d63aaeb5a780d4c5324187f8b.png

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

16495496b534b719ae9fa7f1da8678b2.png

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

2da9507cb34406e42896b352b8b8462f.png

除该路径外,flex生成的代码中还有很多其他地方,一旦YY_FATAL_ERROR()执行非预期操作将不会正确返回,并执行不安全的操作。

最终,由于配置文件写入的token长度过大无法被解析器正常处理,将造成缓冲区溢出覆盖堆中的关键结构。这些覆盖的字段包括解析器内的结构元素等,可造成任意代码执行。

影响范围

【影响版本】

GRUB 1.99, 2.00, 2.02, 2.04

解决方案

1检测方案

输入以下命令查看grub2版本

grub-install --version

2 修复方案

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

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

3 临时修复方案

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

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

参考链接

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

时间轴

2020/7/29

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

2020/7/31

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

点击阅读原文,及时关注并登录深信服智安全平台,可轻松查询漏洞相关解决方案

57e80366dfa2a436867396c249c1293f.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值