SpringBoot:2.7.x至2.7.18及更舊的版本,漏洞說(shuō)明詳解
本文提供的修復(fù)指南將幫助開(kāi)發(fā)者有效規(guī)避 CVE-2024-38808 和 CVE-2024-38809 的風(fēng)險(xiǎn)。
如果你正在使用老版本的 Spring Boot,請(qǐng)盡快參考本文進(jìn)行修復(fù)與升級(jí)。
此漏洞來(lái)源于spring官網(wǎng):
漏洞地址:


Spring Framework 最新漏洞分析與修復(fù)方法
最近,Spring Framework 曝出了兩個(gè)嚴(yán)重的安全漏洞:CVE-2024-38808 和 CVE-2024-38809。
這兩個(gè)漏洞都可能導(dǎo)致拒絕服務(wù)(DoS)攻擊,嚴(yán)重影響系統(tǒng)的穩(wěn)定性和安全性。
本文將詳細(xì)介紹這兩個(gè)漏洞的影響范圍、修復(fù)方法,以及在 Spring Boot 2.x 項(xiàng)目中如何進(jìn)行版本升級(jí)
CVE-2024-38808 漏洞分析
1) 漏洞說(shuō)明
在 Spring Framework 版本 5.3.0 至 5.3.38 及更早的不受支持版本中,如果應(yīng)用程序評(píng)估了用戶提供的 SpEL(Spring Expression Language)表達(dá)式,攻擊者可以利用特制的表達(dá)式導(dǎo)致拒絕服務(wù)(DoS)攻擊。
2) 受影響的產(chǎn)品和版本
- Spring Framework: 5.3.0 至 5.3.38 及更早的版本
- Spring Boot: 2.7.x 至 2.7.18 及更早的版本
3) 緩解措施
建議受影響版本的用戶升級(jí)到以下修復(fù)版本:

對(duì)于 5.3.x 用戶,建議升級(jí)到 5.3.39+ 或直接遷移至 6.0+。在無(wú)法完全避免用戶提供 SpEL 表達(dá)式的情況下,應(yīng)使用 SimpleEvaluationContext.forReadOnlyDataBinding 進(jìn)行只讀模式下的表達(dá)式評(píng)估。
CVE-2024-38809 漏洞分析
1) 漏洞說(shuō)明
當(dāng)應(yīng)用程序解析 HTTP 請(qǐng)求頭中的 “If-Match” 或 “If-None-Match” ETag 時(shí),可能會(huì)遭受 DoS 攻擊。
2)受影響的產(chǎn)品和版本
- Spring Framework:
6.1.0 至 6.1.11 6.0.0 至 6.0.22 5.3.0 至 5.3.37 及更早版本
- Spring Boot:
3.1.0 至 3.1.12 3.0.0 至 3.0.13 2.7.x 至 2.7.18 及更早版本
3) 緩解措施
建議受影響版本的用戶升級(jí)到以下修復(fù)版本:

如果無(wú)法立即升級(jí),用戶可以通過(guò)配置 Filter 限制 “If-Match” 和 “If-None-Match” 頭的大小,以減少攻擊面。
如何在 Spring Boot 2.x 項(xiàng)目中修復(fù)漏洞
Spring Boot 2.7.x、3.0.x、3.1.x 等版本已經(jīng)停止更新,用戶需要手動(dòng)調(diào)整 Spring Framework 版本,以下是具體操作步驟:
1 在最外層的主pom 添加 spring-framework-bom 依賴
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.3.39</version> <!--最新5.0x的版本-->
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2 確認(rèn)依賴版本
刷新IDEA的 Maven 依賴,確保拉取到的 Spring Framework 版本為最新的 5.3.39+
3 檢查 Spring EL 的使用
對(duì)于涉及到 SpEL 表達(dá)式的地方,如自定義注解限流、權(quán)限校驗(yàn)、緩存等功能,需要確認(rèn)是否讀取了用戶提供的請(qǐng)求參數(shù)。
如果有此類情況,建議使用 SimpleEvaluationContext.forReadOnlyDataBinding 構(gòu)建只讀上下文,避免潛在風(fēng)險(xiǎn)。
建議
隨著 Spring Framework 的廣泛應(yīng)用,及時(shí)更新和修復(fù)漏洞對(duì)保證系統(tǒng)安全至關(guān)重要。
本文的修復(fù)將幫助更多的開(kāi)發(fā)者有效規(guī)避 CVE-2024-38808 和 CVE-2024-38809 的漏洞風(fēng)險(xiǎn)。
如果你正在使用舊版本的 Spring Boot 版本,請(qǐng)盡快參考本文進(jìn)行修復(fù)與升級(jí)喔。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 安全漏洞修復(fù)導(dǎo)致SpringBoot2.7與Springfox不兼容的偽命題解決
- SpringBoot?2.7.18?集成?Mybatis?Plus?+?Druid的實(shí)例詳解
- SpringBoot?注解?@AutoConfiguration?在?2.7?版本中被新增的使用方法詳解
- SpringBoot從2.7.x 升級(jí)到3.3注意事項(xiàng)
- SpringBoot升級(jí)到2.7.18后不兼容的地方及解決
- SpringBoot實(shí)現(xiàn)版本升級(jí)到2.7.18
- Springboot升級(jí)到2.7.2結(jié)合nacos遇到的坑及解決
相關(guān)文章
Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解
這篇文章主要為大家介紹了Elasticsearch?Analyzer?內(nèi)置分詞器使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
Java通過(guò)exchange協(xié)議發(fā)送郵件
這篇文章主要為大家詳細(xì)介紹了Java通過(guò)exchange協(xié)議發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
Spring底層機(jī)制環(huán)境搭建全過(guò)程
本文介紹了如何創(chuàng)建和使用Spring框架,包括模塊創(chuàng)建、依賴引入、環(huán)境搭建、Bean的生命周期管理、AOP編程以及代碼托管,通過(guò)實(shí)際操作和代碼示例,詳細(xì)講解了Spring的核心概念和功能2024-12-12
SpringMVC 數(shù)據(jù)校驗(yàn)方法(必看篇)
下面小編就為大家?guī)?lái)一篇SpringMVC 數(shù)據(jù)校驗(yàn)方法(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06
springboot中swagger快速啟動(dòng)流程
這篇文章主要介紹了springboot中的swagger快速啟動(dòng)流程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-09-09
JAVA開(kāi)發(fā)處理金額常用的數(shù)據(jù)類型及注意事項(xiàng)
在財(cái)務(wù)、金融等業(yè)務(wù)場(chǎng)景中,經(jīng)常需要將數(shù)字金額轉(zhuǎn)換為中文大寫形式以符合票據(jù)規(guī)范,這篇文章主要介紹了JAVA開(kāi)發(fā)處理金額常用的數(shù)據(jù)類型及注意事項(xiàng),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-02-02
使用Java 實(shí)現(xiàn)一個(gè)“你畫手機(jī)猜”的小游戲
這篇文章主要介紹了使用Java 實(shí)現(xiàn)一個(gè)“你畫手機(jī)猜”的小游戲,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Spring?Data?JPA映射自定義實(shí)體類操作
這篇文章主要介紹了Spring?Data?JPA映射自定義實(shí)體類操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

