GRUB2 中的两个漏洞可让您绕过 UEFI 安全启动保护

已披露有关 GRUB2 引导加载程序中两个漏洞的信息,这些漏洞可能导致在使用特殊设计的字体和处理某些 Unicode 序列时执行代码。 该漏洞可用于绕过 UEFI 安全启动验证启动机制。

已发现的漏洞:

  • CVE-2022-2601 - 处理 pf2 格式的特殊设计字体时,grub_font_construct_glyph() 函数中存在缓冲区溢出,这是由于 max_glyph_size 参数的计算不正确以及分配的内存区域明显小于所需的内存区域而导致的。容纳字形。
  • CVE-2022-3775 以特殊样式的字体呈现某些 Unicode 序列时,会发生越界写入。 问题出在字体处理代码中,是由于缺乏适当的检查来确保字形的宽度和高度与可用位图的大小相匹配而引起的。 攻击者可以以某种方式构造输入,从而导致数据尾部被写入分配的缓冲区的外部。 值得注意的是,尽管利用该漏洞很复杂,但不排除将问题引入代码执行的可能性。

该修复已作为补丁发布。 可以在以下页面上评估消除发行版中的漏洞的状态:Ubuntu、SUSE、RHEL、Fedora、Debian。 要修复 GRUB2 中的问题,仅更新软件包是不够的;您还需要生成新的内部数字签名并更新安装程序、引导加载程序、内核软件包、fwupd 固件和 shim 层。

大多数 Linux 发行版使用 Microsoft 数字签名的小型填充层来验证 UEFI 安全启动模式下的启动。 该层使用自己的证书验证 GRUB2,这使得发行版开发人员不必让每个内核和 GRUB 更新都经过 Microsoft 认证。 GRUB2 中的漏洞允许您在成功验证 shim 后、加载操作系统之前的阶段执行代码,在安全启动模式处于活动状态时嵌入信任链并获得对进一步启动过程的完全控制,包括加载另一个操作系统、修改操作系统组件系统并绕过锁定保护。

为了在不撤销数字签名的情况下阻止该漏洞,发行版可以使用 SBAT(UEFI 安全启动高级目标)机制,大多数流行的 Linux 发行版中的 GRUB2、shim 和 fwupd 都支持该机制。 SBAT 是与 Microsoft 联合开发的,涉及向 UEFI 组件的可执行文件添加额外的元数据,其中包括有关制造商、产品、组件和版本的信息。 指定的元数据经过数字签名认证,并且可以单独包含在 UEFI 安全启动允许或禁止的组件列表中。

SBAT 允许您阻止对各个组件版本号使用数字签名,而无需撤销安全启动密钥。 通过 SBAT 阻止漏洞不需要使用 UEFI 证书吊销列表 (dbx),而是在替换内部密钥的级别执行以生成签名并更新 GRUB2、shim 和发行版提供的其他引导工件。 在引入 SBAT 之前,更新证书吊销列表(dbx,UEFI 吊销列表)是完全阻止该漏洞的先决条件,因为无论使用何种操作系统,攻击者都可以使用带有旧的易受攻击版本的 GRUB2 的可启动媒体,通过数字签名认证,以破坏 UEFI 安全启动。

来源: opennet.ru

添加评论