资讯 Redis 8.2.10:集群总线默认无认证,未启用 tls-cluster 的节点启动时会告警

2026-09-24 21:14:58

Redis 8.2.10:集群总线默认无认证,未启用 tls-cluster 的节点启动时会告警

Redis 8.2.10 于 2026 年 9 月 17 日发布,更新紧急度标记为 SECURITY。这一版最值得运维关注的是 #15722:集群总线(cluster bus)协议自身不提供认证,除非启用 tls-cluster。发布说明见 Redis 8.2 release notes

问题出在哪

集群节点之间通过 bus 端口通信,端口号默认是客户端端口 + 10000,也就是客户端端口 6379 时 bus 端口为 16379。节点在这个端口上用二进制 gossip 协议交换集群状态。

这个协议没有自己的认证机制。只要一台机器能网络可达某个节点的 bus 端口,它就能参与集群通信,进而加入集群、对集群造成威胁。除非启用 tls-cluster,让 TLS 层来做认证,否则 bus 端口上的通信既不校验来源身份。

8.2.10 的处理方式分两步:

  • 集群节点启动时,如果 bus 端口处于未认证状态,会打印告警;
  • 新增 cluster-bus-port-protected-mode 选项,默认值为 no。把它设为 yes,节点就只在 tls-cluster 能够认证 bus 的情况下才启动,也就是说拒绝在未认证状态下运行从「默认行为」变成了需要显式选择。

默认值仍是 no,所以升级本身不会阻止节点启动,只是多了告警。

怎么判断自己是否暴露

先确认集群是否启用、bus 端口是否被 TLS 覆盖:

redis-cli -p 6379 CONFIG GET cluster-enabled
redis-cli -p 6379 CONFIG GET tls-cluster
redis-cli -p 6379 CONFIG GET port
redis-cli -p 6379 CONFIG GET cluster-bus-port-protected-mode

cluster-enabledyestls-cluster 不是 yes 时,bus 端口就是未认证的。bus 端口号按 port + 10000 计算。

接着从集群外的一台机器上探测该端口是否可达:

nc -vz  16379

能建立 TCP 连接就说明 bus 端口对外可达。注意这只证明端口开放,是否真的能被外部节点加入集群,需要结合网络位置和集群状态自行验证。

也可以直接看集群成员列表,检查有没有不认识的节点:

redis-cli -p 6379 CLUSTER NODES
redis-cli -p 6379 CLUSTER INFO

升级到 8.2.10 后,留意启动日志里 bus 端口未认证的告警,它会直接告诉你哪些节点的状态需要处理。

加固方式

启用 tls-cluster。 这是从协议层面解决认证问题的办法:

tls-cluster yes

完整的 TLS 集群还需要配置证书、私钥、CA 以及客户端证书校验等相关参数,具体参数名和组合方式请对照对应版本的 redis.conf 文档自行验证。

把 protected-mode 打开并配合防火墙。 cluster-bus-port-protected-mode yes 的作用是让节点在 bus 未认证时直接拒绝启动,而不是只告警:

cluster-bus-port-protected-mode yes

需要注意,Redis 的 protected-mode 主要作用于客户端连接,它是否覆盖 cluster bus 端口、覆盖到什么程度,原文没有说明,需要自行验证后确认。因此不要把 protected-mode 当作 bus 端口的唯一防线。

网络层限制。 在 iptables、安全组或网络策略上,只允许集群内其他节点的 IP 访问 bus 端口,其余来源一律拒绝。bus 端口的访问面本就应该限制在集群内部。

对暂时无法上 TLS 的集群,cluster-bus-port-protected-mode yes 加防火墙白名单是可以先落地的组合;但设成 yes 后节点在未认证状态下不会启动,滚动升级前要先确认不会把集群卡住。

同批发布的其他安全修复

8.2.10 还修了两处:

  • TimeSeries:从一个畸形 RDB payload 恢复出来的压缩 Time Series key,在添加样本时不再导致 Redis 崩溃;
  • Vector Sets:Vector Set 查询中使用深度嵌套的 JSON 可能导致服务器崩溃。

8.2.9(2026 年 8 月 17 日发布)的修复清单较长,包括 CVE-2026-62356(CMSketch RDB 加载中缓冲区大小计算错误,may lead to heap)、TopK heap 清理路径的越界访问(#15410)、TLS pending-data 链表在命令关闭另一个 pending 连接时的 use-after-free、#15478(SORT、GEORADIUS/GEORADIUSBYMEMBER 和 XREAD/XREADGROUP 的 ACL key 权限绕过)、#14847(KEYNUM keyspec 命令如 EVAL 在 arity 错误时权限检查中的 argv 越界访问)、含越界 SLOT_INFO slot id 的 RDB payload 在加载时造成内存损坏并可能导致 RCE、若干 Vector Sets 问题,以及 #15594(重新处理命令驱逐同 key 阻塞客户端时 blocked-client 链表的 use-after-free)。

8.2.8(2026 年 7 月 23 日发布)修的是:通过 RESTORE 加载 stream consumer group 时的 use-after-free,可能 RCE;以及 #P1041,RedisBloom 和 TDigest 中构造的 RESTORE payload 可能触发越界写,可能 RCE。

复制全文 生成海报 Redis 安全 集群 运维

推荐文章

程序员茄子在线接单