最近漏洞扫描服务器发现,Redis 缓冲区溢出漏洞(CVE-2024-31449),解决办法redis更新到6.2.16、7.2.6或7.4.1及以上版本。
漏洞描述:经过身份验证的用户可能会使用特制的 Lua 脚本来触发位库中的堆栈缓冲区溢出,这可能会导致远程代码执行。所有带有 Lua 脚本的 Redis 版本都存在该问题。
目前受影响的Redis版本:
2.6 ≤ Redis < 6.2.16
7.0.0 ≤ Redis < 7.2.6
7.4.0 ≤ Redis < 7.4.1
1 2 3 4 5 6 7 8 |
# 登录redis客户端 redis-cli
# 输入密码 auth password
# 查看redis版本 info |
1 |
dbsize |
从下图可知,目前redis中所有的key值只有4条数据
1 2 3 4 5 6 7 |
# 登录redis客户端 redis-cli
# 备份命令 SAVE 或 BGSAVE |
1 2 3 4 5 |
# 登录redis客户端
# 通过命令找到备份的数据文件 config get dir config get dbfilename |
例如:旧redis安装目录在/usr/local/redis7
备份旧目录
1 |
mv /usr/local/redis7 /usr/local/redis7_20241024.bak |
下载地址:Index of /releases/
大家可以自行选择redis的版本,笔者选择redis是不在漏洞范围内的7.2.6版本
1 2 3 4 5 6 |
# 1.解压redis tar -zxvf redis-7.2.6.tar.gz # 2.切换到加压后redis目录 cd redis-7.2.6 # 3.执行安装 make install |
注意:新redis目录名和旧redis目录名保持一致,这里涉及到redis的启动和环境变量,保持一致可以解决这些问题。我们前面已经修改过旧redis目录不会出现覆盖的问题。
1 |
mv redis-7.2.6 /usr/local/redis7 |
1 2 3 4 5 6 7 8 |
# 切换目录 cd /usr/local/redis7/src
# 将新的redis配置文件备份 mv redis.conf redis.conf_20241024.bak
# 复制旧配置文件到新redis目录的src下 cp -ar /usr/local/redis7_20241024.bak/redis.conf ./ |
1 |
cp /usr/local/redis7_20241024.bak/src/dump.rdb /usr/local/redis7/src |
1 2 3 4 5 |
# 查看redis进程 ps -ef|grep redis
# 杀死进程 kill -9 redis进程号 |
说明:如果自行配置过redis的启动文件,如通过systemctl start redis启动的命令,需要注意修改redis启动的系统配置文件。这里都是手动启动redis的,没有注册到系统服务中。
1 2 3 4 5 |
# 切换到新redis目录 cd /usr/local/redis7/src
# 启动redis并指定配置文件 ./redis-server /usr/local/redis7/redis.conf |
1 |
redis-server -v |
从图可知数据和旧数据一致,说明数据恢复了,或者通过redis可视化工具连接查看数据。
到此redis升级完成。