大家好,我是R哥。
今天一早收到了腾讯云给我的【主机安全】漏洞通知:
好家伙,大名鼎鼎的 Redis 爆高危漏洞了,R哥的题库「Java面试库」也用到了 Redis 来缓存面试题内容,所以这一下子就引起了我的警惕,赶紧看看什么鬼。
漏洞描述
下面是漏洞描述和修复说明:
https://github.com/redis/redis/security/advisories/GHSA-whxg-wx83-85p5
这次的漏洞是因为 Lua 库引起的,用户可能会使用特制的 Lua 脚本来触发堆栈缓冲区溢出,这可能会导致「远程代码执行」漏洞。
也就是说,所有带有 Lua 脚本的 Redis 版本(\>= 2.8.18)都存在该漏洞,赶紧使用下面命令查看下你的 Redis 版本号:
$ redis-cli --version
redis-cli 7.2.5
我使用的是 Redis 7.2.5,也是受影响的版本。
Lua 扫盲:
Lua 是一种轻量级的脚本语言,Redis 中内置了 Lua 功能,可以直接运行 Lua 脚本。因为 Redis 的基本操作都是单个命令,但在某些场景下,可能需要多个操作组合成事务或执行复杂的逻辑,这时候 Lua 脚本就派上用场了,使用 Lua 脚本可以大大减少网络开锁。
说到 Lua 就不得不提 OpenResty,它是一个基于 Nginx 的高性能 Web 组件,其支持用 Lua 编写复杂逻辑,并提了许多精心编写的 Lua 模块,这就是它最大的亮点。
解决方案
升级最新安全版本
Redis 官方发布了 3 个漏洞补丁及修复版本:6.2.16, 7.2.6, 7.4.1,请评估业务是否受影响后,再酌情升级至安全版本,如果是 5.x 及以下的版本就不受支持了。
版本升级前,建议大家做好数据备份操作,云服务升级版本前最好先制作镜像/快照,避免升级不当导致数据丢失情况。
临时解决方案
1、开放指定 IP 地址
如果使用的是云服务,可以使用云上的安全组对 Redis 端口(默认:6379)设置只对指定的 IP 地址开放,如示例所示:
注意,来源这一项不要再勾选全部 IP 地址。
2、设置密码访问
强制对 Redis 实例的所有访问使用凭据,这个可以通过配置 Redis 的 requirepass
参数来设置访问密码,修改 Redis.conf 配置文件:
requirepass XXX
配置密码后,就会强制所有访问 Redis 的客户端使用密码,相信现在没人还在使用 Redis 裸奔吧?
3、设置用户权限
设置用户权限,仅允许受信任的身份运行 Lua 脚本或任何其他潜在危险的命令。
在 Redis 中,可以通过 ACL(访问控制列表) 功能设置用户权限,从而限制特定用户只能运行受信任的命令,如:禁止运行 Lua 脚本或其他潜在危险的命令。
注意,ACL 功能在 Redis 6.0+ 版本中才支持,如果版本较低,请先升级 Redis。
最后,赶紧检查 Redis 版本并修复吧,确保系统安全稳定运行。
版权声明: 本文系公众号 "Java技术栈" 原创,转载、引用本文内容请注明出处,抄袭、洗稿一律投诉侵权,后果自负,并保留追究其法律责任的权利。
更多文章推荐:
2.2,000+ 道 Java面试题及答案整理(2024最新版)
3.免费获取 IDEA 激活码的 7 种方式(2024最新版)
觉得不错,别忘了随手点赞+转发哦!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。