2024 年 10 月 7 日,Redis 中一个严重漏洞(编号为CVE-2024-31449)的信息被公开。该漏洞允许经过身份验证的用户使用特制的 Lua 脚本执行远程代码,对使用 Redis 的系统的安全构成重大威胁。
CVE-2024-31449 是什么?
Redis 自带 Lua 解释器,支持执行用户脚本。CVE-2024-31449 漏洞与bit.tohexLua 库中的函数有关。攻击者可使用特制的 Lua 脚本触发库中的堆栈缓冲区溢出bit,从而可能导致 Redis 服务器上执行任意代码。
需要注意的是,利用此漏洞执行的任何命令都将在拥有 Redis 进程的用户和组下运行。这可以为攻击者提供相当高级别的系统访问权限。
如何重现漏洞(PoC)
为了演示此漏洞,您可以使用特制的 Lua 脚本,bit.tohex使用特定参数调用该函数。此类脚本的一个示例是通过以下方式执行命令redis-cli:
redis-cli eval "return bit.tohex(65535, -2147483648)" 0
重现步骤:
-
使用redis-cli或其他支持执行 Lua 脚本的客户端连接到您的 Redis 服务器。
-
bit.tohex执行调用具有大值或负值的函数的Lua脚本:
redis-cli eval "return bit.tohex(65535, -2147483648)" 0
3.观察服务器行为。成功利用此漏洞后,服务器可能会:
-
返回不正确的结果或错误。
-
使 Redis 服务器崩溃。
-
可能执行任意代码。
重要提示:此示例仅用于教育目的,不应在生产环境中使用。执行此脚本可能会导致 Redis 服务器不稳定或受到损害。
谁有风险?
所有版本的 Redis 社区版 (CE)、Redis 开源版 (OSS) 和 Redis Stack 都容易受到此漏洞的影响。如果您的 Redis 实例可供经过身份验证的用户访问,尤其是当对 Lua 脚本的访问不受限制时,您就会面临风险。
4.将 Redis 更新到最新版本
-
对于 Redis OSS/CE/Stack:更新到以下版本:
-
OSS/CE:7.4.1、7.2.6 或 6.2.16
-
堆栈:7.4.0-v1、7.2.0-v13 或 6.2.6-v17
-
对于 Redis Enterprise(软件):更新到以下版本:
-
7.4.2-169 及以上
-
7.2.4-109 及以上
-
6.4.2-110 及以上
原文始发于微信公众号(Ots安全):Redis CVE-2024-31449:如何重现和缓解漏洞
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论