RHCOS 4:OpenShift Container Platform 4.13.4 (RHSA-2023: 3612)

critical Nessus 插件 ID 189450

简介

远程 Red Hat CoreOS 主机缺少 OpenShift Container Platform 4.13.4 的一个或多个安全更新。

描述

远程 Red Hat Enterprise Linux CoreOS 4 主机上安装的程序包受到 RHSA-2023: 3612 公告。

- 攻击者可造成接受 HTTP/2 请求的 Go 服务器内存过度增长。HTTP/2 服务器连接包含客户端发送的 HTTP 标头密钥的缓存。尽管此缓存中的条目总数已上限,但攻击者可发送非常大的密钥,从而导致服务器为每个打开的连接分配大约 64 MiB。(CVE-2022-41717)

- 大量握手记录可能会造成 crypto/tls 错误。客户端和服务器都可能发送大型 TLS 握手记录,从而在尝试构造响应时分别造成服务器和客户端错误。这会影响所有 TLS 1.3 版客户端、明确启用会话恢复的 TLS 1.2 版客户端(通过将 Config.ClientSessionCache 设置为非 nil 值)以及请求客户端证书的 TLS 1.3 版服务器(通过设置 Config.ClientAuth >= RequestClientCert)。(CVE-2022-41724)

- net/http 和 mime/multipart 中的过量资源消耗可能导致拒绝服务。
使用 mime/multipart.Reader.ReadForm 进行的多部分表单解析会消耗大量不受限制的内存和磁盘文件。这也会影响使用 Request 方法 FormFile、FormValue、ParseMultipartForm 和 PostFormValue 在 net/http 程序包中进行的表单解析。ReadForm 采用 maxMemory 参数,据记载其在内存中最多可存储 +10MB maxMemory 字节(为非文件部分预留)。无法存储在内存中的文件部分以临时文件的形式存储在磁盘上。为非文件部分保留的不可配置的 10MB 过大,可能会单独打开拒绝服务矢量。但是,ReadForm 没有正确考虑解析的表单消耗的所有内存,例如映射条目开销、部分名称和 MIME 标头,从而允许恶意构建的表单消耗远远超过 10MB。此外,ReadForm 对创建的磁盘文件数量没有限制,允许相对较小的请求正文创建大量磁盘临时文件。修复后,ReadForm 现在可以正确考虑各种形式的内存开销,并且现在应将开销保持在其记录的 10MB + maxMemory 字节内存消耗内。用户仍应意识到此限制较高且可能仍然存在危险。此外,ReadForm 现在至多创建一个磁盘临时文件,从而将多个表单部分合并为一个临时文件。mime/multipart.File 接口类型的文档指出,如果存储在磁盘上,File 的底层具体类型将为 *os.File.。当表单包含多个文件部分时,情况不再如此,这是因为将多个文件部分合并为一个文件所致。可通过环境变量 GODEBUG=multipartfiles=distinct 重新启用之前对每个表单部分使用不同文件的行为。用户应注意,multipart.ReadForm 和调用它的 http.Request 方法不会限制临时文件消耗的磁盘数量。调用方可使用 http.MaxBytesReader 限制表单数据的大小。(CVE-2022-41725)

- 即使在解析小型输入时,HTTP 和 MIME 标头解析也可能会分配大量内存,从而可能导致拒绝服务。输入数据的某些异常模式可导致用于解析 HTTP 和 MIME 标头的通用函数分配远超所需的内容来保存已解析的标头。攻击者可能会利用此行为,导致 HTTP 服务器通过小型请求分配大量内存,从而可能导致内存耗尽和拒绝服务。
经修复后,标头解析现在可以正确分配所需内存来保存已解析的标头。
(CVE-2023-24534)

- 在处理包含大量部分的表单输入时,多部分表单解析可能会消耗大量 CPU 和内存。此问题由多种原因导致:1. mime/multipart.Reader.ReadForm 限制解析多部分表单可以消耗的总内存。ReadForm 可能会低估所消耗的内存量,导致它接受的输入大于预期。2. 限制总内存的做法并未考虑到包含多个部分的表单中的大量小型分配给垃圾回收器增加的压力。3.
ReadForm 可以分配大量短效缓冲区,这会进一步加大对垃圾回收器造成的压力。这些因素相结合,攻击者便可让解析多部分表单的程序消耗大量 CPU 和内存,从而可能导致拒绝服务。
这会影响使用 mime/multipart.Reader.ReadForm 的程序,也会影响使用 Request 方法 FormFile、FormValue、ParseMultipartForm 和 PostFormValue 在 net/http 程序包中进行的表单解析。经修复后,ReadForm 现在可以更好地估算已解析表单的内存消耗量,并大幅减少短效分配。此外,经修复的 mime/multipart.Reader 会对已解析表单的大小施加以下限制:1. 使用 ReadForm 解析的表单包含的部分不超过 1,000 个。此限制可通过环境变量 GODEBUG=multipartmaxparts= 进行调整。2. 使用 NextPart 和 NextRawPart 解析的表单部分包含的标头字段不超过 10,000 个。此外,使用 ReadForm 解析的所有表单部分包含的标头字段不超过 10,000 个。此限制可通过环境变量 GODEBUG=multipartmaxheaders= 进行调整。(CVE-2023-24536)

- 在包含具有极大行号的 //line 指令的 Go 源代码中,调用任何 Parse 函数都有可能因整数溢出而造成无限循环。(CVE-2023-24537)

- 模板未正确将反引号 (`) 视为 Javascript 字符串分隔符,也未按预期对其进行转义。自 ES6 起,反引号可用于 JS 模板文本。如果模板的 Javascript 模板文本中包含 Go 模板操作,则此操作的内容可用于停用文本,进而将任意 Javascript 代码注入 Go 模板。ES6 模板文字相当复杂,且其本身可以执行字符串插入操作,因此决定简单地禁止在此类文字中使用 Go 模板操作(例如 var a = {{.}}),因为没有显然安全的方式支持此行为。此方法与 github.com/google/safehtml 相同。经修复后,Template.Parse 在遇到此类模板时会返回一个 ErrorCode 值为 12 的错误。此 ErrorCode 当前并未导出,但将在 Go 1.21 版本中导出。依赖之前行为的用户可以使用 GODEBUG 标记 jstmpllitinterp=1 重新启用它,但需要注意的是现在将对反引号进行转义。应谨慎使用此做法。(CVE-2023-24538)

- 并非所有有效的 JavaScript 空白字符都被视为空白。在 JavaScript 上下文中,在字符集 \t\n\f\r\u0020\u2028\u2029 外包含其他空白字符和操作的模板在执行期间可能未经正确审查。(CVE-2023-24540)

- 1.1.4 及之前的 runc 版本含有导致权限提升的错误访问控制,此问题与 libcontainer/rootfs_linux.go 相关。要利用此问题,攻击者必须能够生成两个具有自定义 volume-mount 配置的容器,并且能够运行自定义图像。注意:存在此问题的原因是 CVE-2019-19921 回归。(CVE-2023-27561)

请注意,Nessus 尚未测试这些问题,而是只依据应用程序自我报告的版本号进行判断。

解决方案

根据 RHSA-2023: 0017 中的指南更新 RHCOS OpenShift Container Platform 4.13.4 3612.

另见

https://access.redhat.com/security/cve/CVE-2022-41717

https://access.redhat.com/security/cve/CVE-2022-41724

https://access.redhat.com/security/cve/CVE-2022-41725

https://access.redhat.com/security/cve/CVE-2023-24534

https://access.redhat.com/security/cve/CVE-2023-24536

https://access.redhat.com/security/cve/CVE-2023-24537

https://access.redhat.com/security/cve/CVE-2023-24538

https://access.redhat.com/security/cve/CVE-2023-24540

https://access.redhat.com/security/cve/CVE-2023-27561

https://access.redhat.com/errata/RHSA-2023:3612

https://bugzilla.redhat.com/2175721

插件详情

严重性: Critical

ID: 189450

文件名: rhcos-RHSA-2023-3612.nasl

版本: 1.0

类型: local

代理: unix

发布时间: 2024/1/24

最近更新时间: 2024/1/24

支持的传感器: Agentless Assessment, Frictionless Assessment Agent, Frictionless Assessment AWS, Frictionless Assessment Azure, Nessus Agent, Nessus

风险信息

VPR

风险因素: Medium

分数: 6.7

CVSS v2

风险因素: Critical

基本分数: 10

时间分数: 7.8

矢量: CVSS2#AV:N/AC:L/Au:N/C:C/I:C/A:C

CVSS 分数来源: CVE-2023-24540

CVSS v3

风险因素: Critical

基本分数: 9.8

时间分数: 8.8

矢量: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

时间矢量: CVSS:3.0/E:P/RL:O/RC:C

漏洞信息

CPE: cpe:/o:redhat:enterprise_linux:8:coreos, cpe:/o:redhat:enterprise_linux:9:coreos, p-cpe:/a:redhat:enterprise_linux:conmon, p-cpe:/a:redhat:enterprise_linux:containernetworking-plugins, p-cpe:/a:redhat:enterprise_linux:podman, p-cpe:/a:redhat:enterprise_linux:podman-catatonit, p-cpe:/a:redhat:enterprise_linux:podman-docker, p-cpe:/a:redhat:enterprise_linux:podman-gvproxy, p-cpe:/a:redhat:enterprise_linux:podman-plugins, p-cpe:/a:redhat:enterprise_linux:podman-remote, p-cpe:/a:redhat:enterprise_linux:podman-tests, p-cpe:/a:redhat:enterprise_linux:runc, p-cpe:/a:redhat:enterprise_linux:skopeo, p-cpe:/a:redhat:enterprise_linux:skopeo-tests

必需的 KB 项: Host/local_checks_enabled, Host/RedHat/release, Host/RedHat/rpm-list, Host/cpu

可利用: true

易利用性: Exploits are available

补丁发布日期: 2023/6/23

漏洞发布日期: 2022/12/6

参考资料信息

CVE: CVE-2022-41717, CVE-2022-41724, CVE-2022-41725, CVE-2023-24534, CVE-2023-24536, CVE-2023-24537, CVE-2023-24538, CVE-2023-24540, CVE-2023-27561

CWE: 176, 400, 41, 770, 835, 94

RHSA: 2023:3612