GLSA-202209-17:Redis:多个漏洞

critical Nessus 插件 ID 165541

语言:

描述

远程主机受到 GLSA-202209-17 中所述漏洞的影响(Redis:多个漏洞)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。在受影响的版本中,在 Redis 中执行特别构建的 Lua 脚本会导致基于堆的 Lua 堆栈溢出,原因是对此情况的检查不完整。这会导致堆损坏,并可能导致远程代码执行。
此问题存在于具有 Lua 脚本支持的所有 Redis 版本(从 2.6 开始)中。此问题已在版本 6.2.6、6.0.16 和 5.0.14 中修复。对于无法更新的用户,在不修补 redis-server 可执行文件的情况下缓解该问题的其他变通方案是阻止用户执行 Lua 脚本。这可通过使用 ACL 限制 EVAL 和 EVALSHA 命令来实现。(CVE-2021-32626)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。在受影响的版本中,可以利用 Redis 中的整数溢出缺陷来损坏堆,并可能导致远程代码执行。该漏洞涉及将默认的 proto-max-bulk-len 和 client-query-buffer-limit 配置参数更改为非常大的值,然后构造特别构建的非常大的流元素。此问题已在 Redis 6.2.6、6.0.16 和 5.0.14 中修复。对于无法升级的用户,在不修补 redis-server 可执行文件的情况下缓解该问题的其他变通方案是阻止用户修改 proto-max-bulk-len 配置参数。这可通过使用 ACL 限制非特权用户使用 CONFIG SET 命令来实现。(CVE-2021-32627)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。可以利用所有 Redis 版本使用的 ziplist 数据结构中的整数溢出缺陷来损坏堆,并可能导致远程代码执行。该漏洞涉及将默认的 ziplist 配置参数(hash-max-ziplist-entries、hash-max-ziplist-value、zset-max-ziplist-entries 或 zset-max-ziplist-value)修改为非常大的值,然后构造特别构建的命令以创建非常大的 ziplist。此问题已在 Redis 版本 6.2.6、6.0.16 和 5.0.14 中修复。在不修补 redis-server 可执行文件的情况下缓解该问题的其他变通方案是阻止用户修改上述配置参数。这可通过使用 ACL 限制非特权用户使用 CONFIG SET 命令来实现。(CVE-2021-32628)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。使用 Redis Lua Debugger 时,用户可以发送畸形请求,造成调试器的协议解析器读取实际缓冲区之外的数据。此问题会影响具有 Lua 调试支持的所有 Redis 版本(3.2 或更高版本)。已在版本 6.2.6、6.0.16 和 5.0.14 中修复此问题。(CVE-2021-32672)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。解析传入的 Redis 标准协议 (RESP) 请求时,Redis 根据用户指定的值分配内存,这些值决定元素的数量(在多批量标头中)和每个元素的大小(在批量标头中)。通过多个连接传递特别构建的请求的攻击者可导致服务器分配大量内存。由于使用相同的解析机制来处理身份验证请求,因此未经身份验证的用户也可利用此漏洞。此问题已在 Redis 版本 6.2.6、6.0.16 和 5.0.14 中修复。在不修补 redis-server 可执行文件的情况下缓解该问题的其他变通方案是阻止访问,以阻止未经身份验证的用户连接到 Redis。这可以通过几种不同的方法实现:使用防火墙、iptables 和安全组等网络访问控制工具,或启用 TLS 并要求用户使用客户端证书进行身份验证。
(CVE-2021-32675)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。可以利用影响所有 Redis 版本的整数溢出缺陷来损坏堆,并可能用于泄漏堆的任意内容或触发远程代码执行。该漏洞涉及将默认的 set-max-intset-entries 配置参数更改为非常大的值,然后构造特别构建的命令以操纵集。此问题已在 Redis 版本 6.2.6、6.0.16 和 5.0.14 中修复。在不修补 redis-server 可执行文件的情况下缓解该问题的其他变通方案是阻止用户修改 set-max-intset-entries 配置参数。这可通过使用 ACL 限制非特权用户使用 CONFIG SET 命令来实现。(CVE-2021-32687)

- Redis 是一个持续存在于磁盘上的内存中数据库。自版本 2.2 开始,以及在 5.0.13、6.0.15 和 6.2.5 之前的版本中,存在一个涉及越界读取和整数溢出的漏洞。在 32 位系统上,Redis“*BIT*”命令容易受到整数溢出漏洞的影响,此漏洞可能会被用来损坏堆、泄漏任意堆内容或触发远程代码执行。该漏洞涉及将默认的“proto-max-bulk-len”配置参数更改为极大值,然后构造特别构建的命令位命令。此问题仅影响 32 位平台上或编译为 32 位二进制的 Redis。Redis 版本 5.0.`3m 6.0.15 和 6.2.5 包含针对此问题的修补程序。在不修补“redis-server”可执行文件的情况下缓解该问题的其他变通方案是阻止用户修改“proto-max-bulk-len”配置参数。这可通过使用 ACL 限制非特权用户使用 CONFIG SET 命令来实现。
(CVE-2021-32761)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。解析特别构建的大量多批次网络回复时,redis-cli 命令行工具和 redis-sentinel 服务可能容易受到整数溢出漏洞的影响。这是由底层 hiredis 库中的漏洞所致,此库在调用 calloc() 堆分配函数之前未执行溢出检查。此问题仅影响具有不执行自有溢出检查的堆分配器的系统。大多数现代系统都会进行检查,因此不太可能受到影响。此外,默认情况下,redis-sentinel 使用也不易受到影响的 jemalloc 分配器。此问题已在 Redis 版本 6.2.6、6.0.16 和 5.0.14 中修复。
(CVE-2021-32762)

- Redis 是一个持续存在于磁盘上的开源内存中数据库。可以利用基础字符串库中的整数溢出缺陷来损坏堆,并可能导致拒绝服务或远程代码执行。该漏洞涉及将默认的 proto-max-bulk-len 配置参数更改为非常大的值,然后构造特别构建的网络有效负载或命令。此问题已在 Redis 版本 6.2.6、6.0.16 和 5.0.14 中修复。在不修补 redis-server 可执行文件的情况下缓解该问题的其他变通方案是阻止用户修改 proto-max-bulk-len 配置参数。这可通过使用 ACL 限制非特权用户使用 CONFIG SET 命令来实现。(CVE-2021-41099)

- Redis 是一个持续存在于磁盘上的内存中数据库。通过利用 Lua 脚本执行环境中的漏洞,有权访问版本低于 7.0.0 或 6.2.7 的 Redis 的攻击者可以注入 Lua 代码,该代码将以另一个 Redis 用户(可能更高的)权限执行。Redis 中的 Lua 脚本执行环境提供了一些措施,可防止脚本产生持续存在的副作用,这些副作用可在以后影响相同或不同脚本的执行。这些措施的多个漏洞早已为人所知,但它们不会造成安全影响,因为 Redis 安全模型未认可用户或权限的概念。在 Redis 6.0 版中引入 ACL 后,较低权限的用户可利用这些弱点,注入稍后会在特权用户执行 Lua 脚本时执行的 Lua 代码。已在 Redis 版本 7.0.0 和 6.2.7 中修复此问题。如果不使用 Lua 脚本,还有一种变通方案可在不修补 redis-server 可执行文件的情况下缓解此问题,即使用 ACL 规则阻止访问 `SCRIPT LOAD` 和 `EVAL` 命令。(CVE-2022-24735)

- Redis 是一个持续存在于磁盘上的内存中数据库。在低于 6.2.7 和 7.0.0 的版本中,尝试加载特别构建的 Lua 脚本的攻击者可造成空指针取消引用,进而导致 redis-server 进程崩溃。已在 Redis 版本 7.0.0 和 6.2.7 中修复此问题。如果不使用 Lua 脚本,还有一种变通方案可在不修补 redis-server 可执行文件的情况下缓解此问题,即使用 ACL 规则阻止访问 `SCRIPT LOAD` 和 `EVAL` 命令。
(CVE-2022-24736)

- Redis 是一个持续存在于磁盘上的内存中数据库。在特定状态下对串流密钥执行特别构建的“XAUTOCLAIM”命令可能会造成堆溢出,并且可能导致远程代码执行。此问题会影响 7.x 分支的 7.0.4 之前版本。该修补程序在 7.0.4 版中发布。
(CVE-2022-31144)

- 在 Redis v7.0 中发现可通过 streamGetEdgeID 组件造成内存泄漏。(CVE-2022-33105)

- Redis 是一个持续存在于磁盘上的内存中数据库。7.0.0 至 7.0.5 版容易受到整数溢出漏洞影响。在特定状态下使用特别构建的“COUNT”参数对串流密钥执行“XAUTOCLAIM”命令可能会造成整数溢出以及后续的堆溢出,并且可能导致远程代码执行。Redis 7.0.5 版已修复此问题。尚无已知的变通方案。(CVE-2022-35951)

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

解决方案

所有 Redis 用户皆应升级至最新版本:

# emerge --sync # emerge --ask --oneshot --verbose >=dev-db/redis-7.0.5

另见

https://security.gentoo.org/glsa/202209-17

https://bugs.gentoo.org/show_bug.cgi?id=803302

https://bugs.gentoo.org/show_bug.cgi?id=816282

https://bugs.gentoo.org/show_bug.cgi?id=841404

https://bugs.gentoo.org/show_bug.cgi?id=856040

https://bugs.gentoo.org/show_bug.cgi?id=859181

https://bugs.gentoo.org/show_bug.cgi?id=872278

插件详情

严重性: Critical

ID: 165541

文件名: gentoo_GLSA-202209-17.nasl

版本: 1.3

类型: local

发布时间: 2022/9/29

最近更新时间: 2023/10/10

支持的传感器: Nessus

风险信息

VPR

风险因素: Medium

分数: 6.7

CVSS v2

风险因素: High

基本分数: 9

时间分数: 7

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

CVSS 分数来源: CVE-2021-32762

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

CVSS 分数来源: CVE-2022-35951

漏洞信息

CPE: p-cpe:/a:gentoo:linux:redis, cpe:/o:gentoo:linux

必需的 KB 项: Host/local_checks_enabled, Host/Gentoo/release, Host/Gentoo/qpkg-list

可利用: true

易利用性: Exploits are available

补丁发布日期: 2022/9/29

漏洞发布日期: 2021/7/21

参考资料信息

CVE: CVE-2021-32626, CVE-2021-32627, CVE-2021-32628, CVE-2021-32672, CVE-2021-32675, CVE-2021-32687, CVE-2021-32761, CVE-2021-32762, CVE-2021-41099, CVE-2022-24735, CVE-2022-24736, CVE-2022-31144, CVE-2022-33105, CVE-2022-35951