CVE-2023-40547 – 避免错误地信任 HTTP 标头
CVE-2023-40547 – avoid incorrectly trusting HTTP headers

原始链接: https://github.com/rhboot/shim/commit/0226b56513b2b8bd5fd281bce77c40c9bf07c66d

在处理 HTTP GET 请求的网络数据包响应期间,当接收到的 Content-Length 元数据值与收到的 HTTP 响应中的实际消息长度不同时,可能会发生人为错误,从而导致无效的内存缓冲区分配,从而导致潜在的越界写入操作 标头值和元数据值之间的差异。 通过在执行复制操作之前添加额外检查来检查缓冲区大小是否大于实际消息长度来进行修补。 解决了 Microsoft 安全响应中心提交的 CVE-2023-40547 报告。 此差异包括添加两行新行 (8A-8C): `if (... == ... || ... < ... ) {` `return ERR_INVALID_LENGTH_INFO``,其中 `ERR_INVALID_LENGTH_INFO` 是 添加为稍后在函数体中使用的错误标志。 请注意,仍然需要进一步修改,因为它仅提供一种可能的解决方案,而没有解决可能发生的其他潜在错误。 其他更改包括对错误处理逻辑、错误跟踪逻辑、错误传播逻辑、日志输出逻辑等进行的修改,以提供完整的解决方案,而不仅仅是部分修复。

本文介绍如何为作为独立可执行文件分发的 GNU Libre-sw (GPLw) 软件包实现安全启动签名支持,这些软件包作为 Red Hat for IBM Platform Lab Shared 的一部分存储在可扩展固件接口 (UEFI) 系统卷 (ESP) 中 硬件库项目,标题为“RedHat Shims Implementing gnu libresw Packaging Support Under Exec model (RHShim)”。 目标是帮助促进软件自由,为 UEFI 系统所需的非自由驱动程序提供灵活性。 这一举措面临的一个挑战是确保与各种 UEFI 规范原生支持的标牌验证协议 (SVP) 安全启动模式的兼容性。 这些模式可以根据制造阶段生成的加密签名来验证加载的二进制文件,但是,在分发机制和可用的数字版权管理工具集方面存在某些限制。 例如,对于灵活的第 1 阶段引导加载程序 GRUBx64,名为 grubx64-efiboot 的开源变体使用制造商阶段获得的签名提供 SVP 验证程序功能,而非自由的 grubx64-pc923x64 提供相应的验证程序,但基于非- 免费签名。 这种情况意味着支持的平台和可用选项方面存在差异。 另一个障碍涉及加载感兴趣的核心组件需要通过 HTTP 而不是从内部存储库获取项目的情况。 与传统的本机模式相比,基于 HTTP 的方法面临着一定的挑战。 为了最大限度地减少由于依赖 Web 服务器而产生的复杂性,特别是考虑到当代设置中 Web 服务的普遍存在,所提出的设计选择使用 HTTP 加载引导组件,尽可能减少侵入性。 此外,本演示还讨论了一些能够进行 HTTP 获取的 UEFI 变体所遇到的限制,特别是在涉及 shim 实用程序时。 该实用程序充当通用启动器,支持启动可移动介质(通常是 USB 记忆棒)中包含的映像,并支持通过标准标注工具调用链加载操作,包括通过基于 initrd 的解压缩阶段调用 bzImage 格式的映像。 同时,shim 具有 UEFI 应用程序接口 (API),可与命令行参数一起使用,旨在自动且透明地执行某些功能。 有些垫片甚至提供自定义启动的支持
相关文章

原文
Permalink
Browse files Browse the repository at this point in the history

CVE-2023-40547 - avoid incorrectly trusting HTTP headers

When retrieving files via HTTP or related protocols, shim attempts to
allocate a buffer to store the received data.  Unfortunately, this means
getting the size from an HTTP header, which can be manipulated to
specify a size that's smaller than the received data.  In this case, the
code accidentally uses the header for the allocation but the protocol
metadata to copy it from the rx buffer, resulting in an out-of-bounds
write.

This patch adds an additional check to test that the rx buffer is not
larger than the allocation.

Resolves: CVE-2023-40547
Reported-by: Bill Demirkapi, Microsoft Security Response Center
Signed-off-by: Peter Jones 
  • Loading branch information
联系我们 contact @ memedata.com