大家好,我是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
解密失敗異常:
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
在 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 掉了,等正式版本釋出後我再測試吧。
更多文章推薦:
1.Spring Boot 3.x 教程,太全了!
2.2,000+ 道 Java面試題及答案整理(2024最新版)
3.免費獲取 IDEA 啟用碼的 7 種方式(2024最新版)
覺得不錯,別忘了隨手點贊+轉發哦!