漏洞介绍
Redis 5.0.5 版本的 CVE-2025-32023 漏洞涉及 hyperloglog组件的越界写入问题,可导致远程代码执行(RCE)
漏洞危害
攻击方式:通过恶意构造的 hyperloglog 命令触发内存越界,攻击者可执行任意代码获取服务器控制权
影响范围:Redis 2.8.X ~ 6.2.18、7.2.X ~ 7.2.9、7.4.X ~ 7.4.4 及 8.0.X ~8.0.2均受影响
临时缓解措施
1 禁用高危命令
修改配置文件 redis.conf 重启Redis生效。
rename-command PFADD "" # 禁用hyperloglog相关命令
rename-command PFCOUNT ""
rename-command PFMERGE ""
2 网络隔离
限制 Redis 仅监听内网 IP:bind 192.168.1.XXX (Ps:此处修改完成后还需要修改application.yml)
配置防火墙规则:
firewall-cmd --permanent --remove-port=6379/tcp # 关闭默认端口
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="可信IP段" port port="自定义端口" accept'
firewall-cmd --reload
补丁修复步骤
1 获取官方补丁文件
#进入 Redis 源码目录
cd /path/to/redis-5.0.5
#下载补丁(Commit ID: 50188747cbfe)
wget https://github.com/redis/redis/commit/50188747cbfe43528d2719399a2a3c9599169445.patch
2 应用补丁并重新编译
#应用补丁
patch -p1 < 50188747cbfe43528d2719399a2a3c9599169445.patch
#清理旧编译文件
make clean
#重新编译(需安装 gcc、make、tcl-dev)
make
#安装到系统目录
sudo make install
3 重启 Redis 服务
sudo systemctl restart redis
4 加固措施(必选)
即使打补丁后仍需配置以下策略:
4.1 禁用 HyperLogLog 高危命令
修改redis.conf:
rename-command PFADD "" # 禁用 PFADD
rename-command PFCOUNT "" # 禁用 PFCOUNT
rename-command PFMERGE "" # 禁用 PFMERGE
4.2 启用 ACL 访问控制
acluser default on >YourStrongPassword ~* +@read -@all
acluser hyperloglog_block on >Password2 ~* -PFADD -PFCOUNT -PFMERGE
4.3 网络隔离
bind 127.0.0.1 # 仅监听本地
protected-mode yes # 启用保护模式
requirepass <密码> # 强制认证
升级到修复版本
在线升级(推荐)
下载并编译安全版本(以6.2.19为例)
wget https://github.com/redis/redis/archive/refs/tags/6.2.19.tar.gz
tar -xvf 6.2.19.tar.gz
cd redis-6.2.19
make BUILD_TLS=yes MALLOC=libc && sudo make install
离线升级指南
适用于无外网服务器(如银行内网):
外网机器编译:
#安装编译依赖
sudo yum install -y gcc openssl-devel tcl
wget https://github.com/redis/redis/archive/6.2.19.tar.gz
tar -xvf 6.2.19.tar.gz
cd redis-6.2.19
make BUILD_TLS=yes STATIC=yes MALLOC=libc # 静态编译避免依赖问题
打包迁移:
将编译生成的 src/redis-server、src/redis-cli 及配置文件拷贝至内网。
内网替换:
sudo systemctl stop redis
cp redis-server /usr/local/bin/ # 替换旧版二进制文件
sudo systemctl start redis
验证与监控
版本检查:
redis-server -v # 应输出 6.2.19 或更高
入侵痕迹排查:
#检查可疑文件
ls -al /root/.ssh/authorized_keys # 查看是否被写入攻击者公钥
grep -r "eval " /var/lib/redis/ # 搜索恶意Lua脚本