Spring 和 Nacos 雙雙爆出安全漏洞!!

Java技术栈發表於2024-08-16

大家好,我是R哥。

這兩天看到 Spring 和 Nacos 官方雙雙釋出了安全漏洞,Spring 爆出的是 DoS 拒絕服務漏洞,Nacos 爆出的是會造成任意檔案讀寫漏洞,下面我會具體說明問題並提供解決辦法。

Spring 釋出的安全漏洞

Spring 釋出的安全漏洞包括兩個:

1、CVE-2024-38809

Spring 框架在處理 HTTP 請求時,當從 “If-Match” 或 “If-None-Match” 條件請求請求頭解析 ETag 請求頭時,很容易會受到 DoS 的攻擊。

If-Match 和 If-None-Match 是 HTTP 協議中的條件請求頭,用於在傳送請求時對資源的狀態進行控制,以避免資料不必要的更新,這兩個請求頭一般與 ETag 一起使用。

影響的 Spring 版本:

  • 6.1.0 - 6.1.11;
  • 6.0.0 - 6.0.22;
  • 5.3.0 - 5.3.37;
  • 其他老版本都受影響

解決辦法就是升級到最新安全版本:

漏洞版本 安全版本
6.1.x 6.1.12
6.0.x 6.0.23
5.3.x 5.3.38

如果不想升級版本,也可以加一個 Filter 過濾器,透過過濾器來限制每個 HTTP 請求解析 “If-Match” 或 “If-None-Match” 條件請求請求頭的大小。

2、CVE-2024-38808

使用者可以透過特製的 Spring 表示式語言(SpEL)表示式,造成 DoS 拒絕服務漏洞。

影響的 Spring 版本:

  • 5.3.0 - 5.3.38;
  • 其他老版本都受影響

所以,修復上面那個 DoS 漏洞的 5.3.38 版本也已經不安全了,這個漏洞的解決辦法就是升級到最新安全版本:Spring 5.3.9 或者 6.0+

另外,儘量避免對使用者提供的 SpEL 表示式進行求值運算,如果一定要求值,就需要在只讀模式下使用 SimpleEvaluationContext 類進行處理。


所以,最終解決以上兩個漏洞的 Spring 安全版本是:

漏洞版本 安全版本
6.1.x 6.1.12
6.0.x 6.0.23
5.3.x 5.3.39

現在都是 Spring Boot 框架了,建議檢查 Spring 依賴並升級到安全的 Spring Boot 版本,基於 3.1.x 以下的版本都停止維護了,最好的辦法是升級到 3.2.x 及以上的版本:

但是,R哥檢查了下最新的 3.3.2 和 3.2.8 版本,它們還是上個月釋出的,並未釋出適配這兩天釋出的 Spring 6.1.12 安全版本,所以需要等待下一個版本。

有必要的自行替換 Spring Boot 中的 Spring 依賴吧,但需要注意相容性問題。

Spring Boot 基礎就不介紹了,推薦看這個實戰專案:

https://github.com/javastacks/spring-boot-best-practice

Nacos 釋出的安全漏洞

上一篇:Nacos 2.4.0 正式釋出,帶來重磅更新!

Nacos 2.4.0 才釋出不久,Nacos 2.4.1 又來了,這個版本主要是為了修復一個安全漏洞,另外也還增強了幾個功能以及修復一些 bug。

這個漏洞主要是由於 Jraft 請求造成的,受影響的僅為 7848 埠,它一般是 Nacos 叢集間使用 Raft 協議通訊的埠,不會用於處理客戶端的請求,該埠如果被外部請求,會導致任意檔案被讀寫的安全漏洞

解決辦法:

  • 無腦升級 Nacos 到最新版本:2.4.1;
  • 老版本可以透過防火牆限制外部請求訪問 7848 埠;

此外,最新發布的 2.4.1 版本還最佳化了 derby ops 介面,預設限制了 derby 資料庫可執行的 SQL 範圍,降低了使用者開啟 derby ops 介面時的風險。


技術更新太快,咱們學習的速度永遠跟不上更新的速度,但話又說回來,開源不易,既然用開源,就得接受開源的弊端和後果,至少開源技術的漏洞很快能被爆出來並被解決。

如今,Spring 和 Nacos 成為了 Java 技術棧的中堅力量,不管是工作需要,或者是跳槽面試,Spring 和 Nacos 都是必學的,它已成為了 Java 程式設計師必備的技術之一。

所以,大家有時間還是要多更新一些技能儲備,不要沉迷在 CRUD 中,久而久之就會被淘汰了。

最後,如果你想系統學習 Spring Cloud + Nacos 如何構建微服務,建議報名R哥最新出品的《Spring Cloud Alibaba 微服務課程》,一次付費,後續都提供免費更新,永久學習。

好了,今天的分享就到這裡了,後續R哥也會繼續關注並分享更多的 Java 技術乾貨,關注公眾號Java技術棧第一時間推送。

版權宣告: 本文系公眾號 "Java技術棧" 原創,轉載、引用本文內容請註明出處,抄襲、洗稿一律投訴侵權,後果自負,並保留追究其法律責任的權利。

更多文章推薦:

1.Spring Boot 3.x 教程,太全了!

2.2,000+ 道 Java面試題及答案整理(2024最新版)

3.免費獲取 IDEA 啟用碼的 7 種方式(2024最新版)

覺得不錯,別忘了隨手點贊+轉發哦!

相關文章