大家好,我是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 控制台二次编辑加密配置时,数据库中配置内容就变成明文了。。。
此时,因为数据库是明文,所以使用了该配置加解密的应用启动时,就会抛出 DecoderException
解密失败异常:
也正是因为看到了这个异常日志,我才排查到 Nacos 这个 bug。
不过好的一点是,此异常只是记录错误日志并返回原明文内容,并不会向上抛出异常,所以,它虽然不会影响系统正常使用,但这个配置加解密功能就形同虚设了,对数据安全造成严重影响。
我本想在 Nacos Issues 中提出这个 bug 的,事前查了下,没想到这个 bug 居然在 2023 年 9 月份就已经有人提出来了,Issue 地址如下:
在 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 更新列表:
这 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 掉了,等正式版本发布后我再测试吧。