CVE-2025-32023 是 Redis HyperLogLog 模块中的远程代码执行漏洞,其原理是攻击者通过构造恶意字符串触发堆栈或堆内存越界写入,最终可能导致服务器被完全控制;影响范围覆盖 Redis 2.8 至 8.0.2 的多个版本,需立即升级至修复版本或采取临时防护措施。
一、 漏洞原理
-
根本原因Redis 在处理 HyperLogLog(HLL)相关操作(如
PFADD
、PFCOUNT
、PFMERGE
)时,未对用户输入的字符串进行严格校验。攻击者可构造特制的恶意字符串,触发堆栈或堆内存的越界写入。 -
攻击路径
- 攻击者需拥有 Redis 用户权限(如通过默认配置或弱密码获取)。
- 通过发送恶意 HLL 命令,破坏内存结构,可能覆盖关键数据或代码指针。
- 内存破坏可能被进一步利用,实现远程代码执行(RCE),完全控制服务器。
-
技术细节
- 漏洞类型:堆栈/堆越界写入(CWE-122)。
- 触发条件:需身份验证,但无需管理员权限。
- 公开状态:漏洞的 POC(概念验证代码)已公开,存在被恶意利用的高风险。
二、漏洞影响
-
危害范围
-
受影响版本:
- Redis 2.8 ≤ 版本 < 6.2.19
- Redis 7.2.x ≤ 版本 < 7.2.10
- Redis 7.4.x ≤ 版本 < 7.4.5
- Redis 8.0.x ≤ 版本 < 8.0.3
- 影响系统:所有依赖 Redis 的业务系统,尤其是暴露在公网或内部网络中的 Redis 实例。
-
受影响版本:
-
攻击后果:
- 服务器沦陷:攻击者可执行任意系统命令,完全控制服务器。
- 数据泄露:窃取敏感数据(如用户信息、业务密钥)。
- 业务中断:篡改或删除数据,导致服务不可用。
- 横向渗透:以被攻陷的服务器为跳板,进一步攻击内网其他系统。
三、环境准备
1.启动Redis-server漏洞容器
docker run --name redis-container -p 6379:6379 -it redis:7.4.2-alpine3.21@sha256:02419de7eddf55aa5bcf49efb74e88fa8d931b4d77c07eff8a6b2144472b6952

2.下载POC
git clone https://github.com/example/CVE-2025-32023.git
cd CVE-2025-32023
3.提取 Redis 二进制文件(把容器里的redis-server复制出来)
docker cp redis-container:/usr/local/bin/redis-server .

4.Redis-server 二进制文件说明
- 这个 PoC 依赖从目标 Redis 服务提取
redis-server
二进制文件(用于计算内存偏移和 ROP 链构造)。 -
在 Docker 环境中可以通过
docker cp
轻松获取,但真实生产环境中:- 若 Redis 直接运行在主机上(非容器化),需要从服务器下载
redis-server
。 - 如果没有足够权限(如无法访问
/usr/local/bin/redis-server
),则无法获取文件 - 不同 Redis 版本/编译选项会导致二进制布局不同,必须使用与目标完全一致的二进制文件。
- 若 Redis 直接运行在主机上(非容器化),需要从服务器下载
5. 如果无法从目标服务器获取 redis-server
二进制文件,可以
-
根据目标的 Redis 版本号(如
7.4.2
),从源码编译相同版本:
wget https://download.redis.io/releases/redis-7.4.2.tar.gz
tar xzf redis-7.4.2.tar.gz
cd redis-7.4.2
make
使用编译生成的
src/redis-server
替换 PoC 目录中的文件。注意事项:
- 编译时需关闭调试选项(如
-g
),否则二进制布局可能与生产环境不同。 - 需确保编译环境(如 glibc 版本)与目标一致。
五、配置测试环境
1. 本地环境确认
Debian 12 #本地测试环境
python3.11 #实测python3.6版本过低,python3.11可运行
pip3 install redis pwntools # 安装依赖
2. 使用虚拟环境,这样不会影响系统 Python 环境
# 创建虚拟环境
python3.11 -m venv venv
# 激活虚拟环境
source venv/bin/activate
# 安装依赖
pip install redis pwntools

六、漏洞复现步骤
1. 修改 PoC 配置
编辑
solver-f0b22e429fa6c984f39a409744ff954d3a45d843edd29428ef3a68085d696a7d.py
# 修改连接配置(根据实际情况调整)
HOST, PORT = 'localhost', 6379 # 如果 Redis 在远程,改为相应 IP
2. 运行 PoC,执行漏洞利用
python3.11 solver-*.py
3. 预期结果
如果漏洞存在,PoC 执行后可能会观察到以下情况之一:
Redis 服务崩溃
内存错误信息
成功执行任意代码的迹象

5. 漏洞利用不成功
可能原因:
Redis 版本不匹配
内存布局不同
系统安全机制阻止
解决方案:
确认 Redis 版本准确
尝试调整 PoC 中的内存偏移量
在更简单的环境中测试(如关闭 ASLR)
说明:
- 该漏洞利用本身不稳定,容易触发 Redis 崩溃(段错误)而非获得稳定 RCE。
-
测试多个版本后发现 PoC 的兼容性差,可能因为:
- 内存布局差异导致偏移计算错误。
- 安全机制(如 ASLR、堆保护)干扰利用。
根本原因:
- 漏洞利用依赖精确的内存操作,任何偏差都会导致崩溃。
- 公开的 PoC 通常是研究性代码,未针对各种环境优化稳定性。
6. PoC 非常鸡肋
说明:
-
该漏洞的实际利用条件苛刻,攻击价值有限:
- 需要预先获得 Redis 的认证凭据(密码)。
- 需获取目标
redis-server
二进制文件(权限要求高)。 - 成功率和稳定性低。
对比其他 Redis 漏洞:
- 相比无需认证的漏洞(如 CVE-2022-0543),此漏洞利用门槛更高。
7 . 总结:该漏洞的实际利用限制
限制因素 | 导致的问题 | 解决方案(若有) |
---|---|---|
需要 redis-server 文件 |
无权限时无法利用 | 自行编译相同版本 |
依赖精确内存布局 | 不同环境易崩溃 | 调整 PoC 偏移量 |
需 Redis 认证 | 无密码时无法攻击 | 无 |
利用不稳定 | 可能触发服务崩溃而非 RCE | 优化堆喷射策略 |
七、修复建议
1 . 升级到已修复版本
Redis 8.0.3+
Redis 7.4.5+
Redis 7.2.10+
Redis 6.2.19+
2. 临时缓解措施
限制 Redis 的网络访问
启用 Redis 认证
监控异常的 HyperLogLog 操作