大家好,我是R哥。

最近我把我的《Spring Cloud Alibaba 微服务实战课》适配了 Spring Cloud Alibaba 2023.0.1.0 官方最新版本适配:

  • Spring Cloud Alibaba => 2023.0.1.0
  • Spring Cloud => 2023.0.1
  • Spring Boot => 3.2.4

以下官方组件依赖需要升级:

  • Nacos 2.2.1 => 2.3.2
  • RocketMQ 4.9.4 => 5.1.4
  • Sentinel => 1.8.6(和上一版没有变化)
  • Seata 1.7.0 => 2.0.0

在完成适配后进行功能测试时,我发现了一个 Nacos 的重大 bug!!!

大概的问题是这样的:

使用 Nacos 配置加解密插件后,在 Nacos 控制台首次添加加密配置时,数据中能正常保存加密后的配置内容:

Nacos 爆重大 Bug!!不要升级,不要升级,不要升级_Cloud

但在 Nacos 控制台二次编辑加密配置时,数据库中配置内容就变成明文了。。。

此时,因为数据库是明文,所以使用了该配置加解密的应用启动时,就会抛出 DecoderException 解密失败异常:

org.apache.commons.codec.DecoderException: Odd number of characters.
	at org.apache.commons.codec.binary.Hex.decodeHex(Hex.java:97) ~[commons-codec-1.16.1.jar:1.16.1]
	at org.apache.commons.codec.binary.Hex.decodeHex(Hex.java:77) ~[commons-codec-1.16.1.jar:1.16.1]

也正是因为看到了这个异常日志,我才排查到 Nacos 这个 bug。

不过好的一点是,此异常只是记录错误日志并返回原明文内容,并不会向上抛出异常,所以,它虽然不会影响系统正常使用,但这个配置加解密功能就形同虚设了,对数据安全造成严重影响。


我本想在 Nacos Issues 中提出这个 bug 的,事前查了下,没想到这个 bug 居然在 2023 年 9 月份就已经有人提出来了,Issue 地址如下:

https://github.com/alibaba/nacos/issues/11141

Nacos 爆重大 Bug!!不要升级,不要升级,不要升级_apache_02

在 bug 提出 5 天后,有个 Nacos 项目的兄弟说他会解决这个问题,没想到这个 bug 在过去将近 10 个月后还处于 Open 状态,难以置信啊。。

难道已经修复了状态没更新?

虽然在最新的 Spring Cloud Alibaba 2023.0.1.0 对应的 Nacos 2.3.2 版本中依然存在,但我抱着一查到底的态度,去查看了最新的 Nacos 2.4.0-BETA 版本,这个 bug 依然没有在解决说明中。。

以下是最新 Nacos 2.4.0-BETA 的 BugFix 更新列表:

Nacos 爆重大 Bug!!不要升级,不要升级,不要升级_加解密_03

这 bug 可大可小,事关配置数据的安全性,所以问题严重性可大可小,是官方忘了这个 bug,还是这个 bug 真的遇到棘手问题了,有这么难解决?

不管怎么样,虽然是开源项目,但解决问题的效率真的令人堪忧,毕竟这个问题都快接近一年了,这是置若罔闻啊,后续我也会继续跟进这个 bug 的修复进度,在我的《Spring Cloud Alibaba 微服务实战课》中我也会及时更新。

对配置加解密敏感的同学尽量不要升级到 Spring Cloud Alibaba 2023.0.1.0,如果是独立使用 Nacos 的,Nacos 建议使用之前正常的 2.2.1 版本,超过这个版本的可能都会出现这个问题。

我在公众号「Java技术栈」首发后,官方澄清了,问题已经在 Nacos 2.4.0-BETA 版本中修复,相关问题也已经 Close 掉了,等正式版本发布后我再测试吧。