SpringBoot:2.7.x至2.7.18及更旧的版本,漏洞说明详解

 更新时间:2025年10月31日 09:04:35   作者:❀͜͡傀儡师  
文章介绍了两个严重的安全漏洞(CVE-2024-38808和CVE-2024-38809)及其修复方法,适用于SpringBoot2.x项目,建议升级到最新的SpringFramework版本以避免这些漏洞带来的风险

本文提供的修复指南将帮助开发者有效规避 CVE-2024-38808 和 CVE-2024-38809 的风险。

如果你正在使用老版本的 Spring Boot,请尽快参考本文进行修复与升级。

此漏洞来源于spring官网:

漏洞地址:

Spring Framework 最新漏洞分析与修复方法

最近,Spring Framework 曝出了两个严重的安全漏洞:CVE-2024-38808 和 CVE-2024-38809。

这两个漏洞都可能导致拒绝服务(DoS)攻击,严重影响系统的稳定性和安全性。

本文将详细介绍这两个漏洞的影响范围、修复方法,以及在 Spring Boot 2.x 项目中如何进行版本升级

CVE-2024-38808 漏洞分析

1) 漏洞说明

在 Spring Framework 版本 5.3.0 至 5.3.38 及更早的不受支持版本中,如果应用程序评估了用户提供的 SpEL(Spring Expression Language)表达式,攻击者可以利用特制的表达式导致拒绝服务(DoS)攻击。

2) 受影响的产品和版本

  • Spring Framework: 5.3.0 至 5.3.38 及更早的版本
  • Spring Boot: 2.7.x 至 2.7.18 及更早的版本

3) 缓解措施

建议受影响版本的用户升级到以下修复版本:

对于 5.3.x 用户,建议升级到 5.3.39+ 或直接迁移至 6.0+。在无法完全避免用户提供 SpEL 表达式的情况下,应使用 SimpleEvaluationContext.forReadOnlyDataBinding 进行只读模式下的表达式评估。

CVE-2024-38809 漏洞分析

1) 漏洞说明

当应用程序解析 HTTP 请求头中的 “If-Match” 或 “If-None-Match” ETag 时,可能会遭受 DoS 攻击。

2)受影响的产品和版本

  • 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) 缓解措施

建议受影响版本的用户升级到以下修复版本:

如果无法立即升级,用户可以通过配置 Filter 限制 “If-Match” 和 “If-None-Match” 头的大小,以减少攻击面。

如何在 Spring Boot 2.x 项目中修复漏洞

Spring Boot 2.7.x、3.0.x、3.1.x 等版本已经停止更新,用户需要手动调整 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 确认依赖版本

刷新IDEA的 Maven 依赖,确保拉取到的 Spring Framework 版本为最新的 5.3.39+

3 检查 Spring EL 的使用

对于涉及到 SpEL 表达式的地方,如自定义注解限流、权限校验、缓存等功能,需要确认是否读取了用户提供的请求参数。

如果有此类情况,建议使用 SimpleEvaluationContext.forReadOnlyDataBinding 构建只读上下文,避免潜在风险。

建议

随着 Spring Framework 的广泛应用,及时更新和修复漏洞对保证系统安全至关重要。

本文的修复将帮助更多的开发者有效规避 CVE-2024-38808 和 CVE-2024-38809 的漏洞风险。

如果你正在使用旧版本的 Spring Boot 版本,请尽快参考本文进行修复与升级喔。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Elasticsearch Analyzer 内置分词器使用示例详解

    Elasticsearch Analyzer 内置分词器使用示例详解

    这篇文章主要为大家介绍了Elasticsearch Analyzer 内置分词器使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Java通过exchange协议发送邮件

    Java通过exchange协议发送邮件

    这篇文章主要为大家详细介绍了Java通过exchange协议发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • Spring底层机制环境搭建全过程

    Spring底层机制环境搭建全过程

    本文介绍了如何创建和使用Spring框架,包括模块创建、依赖引入、环境搭建、Bean的生命周期管理、AOP编程以及代码托管,通过实际操作和代码示例,详细讲解了Spring的核心概念和功能
    2024-12-12
  • SpringMVC 数据校验方法(必看篇)

    SpringMVC 数据校验方法(必看篇)

    下面小编就为大家带来一篇SpringMVC 数据校验方法(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • springboot中swagger快速启动流程

    springboot中swagger快速启动流程

    这篇文章主要介绍了springboot中的swagger快速启动流程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • JAVA开发处理金额常用的数据类型及注意事项

    JAVA开发处理金额常用的数据类型及注意事项

    在财务、金融等业务场景中,经常需要将数字金额转换为中文大写形式以符合票据规范,这篇文章主要介绍了JAVA开发处理金额常用的数据类型及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-02-02
  • logback-spring.xml配置解析(最新整理)

    logback-spring.xml配置解析(最新整理)

    logback-spring.xml用于配置Spring Boot项目日志,定义输出格式、路径、级别,支持动态参数读取(如SpringProperty),实现日志隔离与滚动策略(按天+大小),并通过logger继承机制控制日志输出目的地,对logback-spring.xml配置相关知识感兴趣的朋友一起看看吧
    2025-07-07
  • Java if-else 多重嵌套的优化方式

    Java if-else 多重嵌套的优化方式

    这篇文章主要介绍了Java if-else 多重嵌套的优化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • 使用Java 实现一个“你画手机猜”的小游戏

    使用Java 实现一个“你画手机猜”的小游戏

    这篇文章主要介绍了使用Java 实现一个“你画手机猜”的小游戏,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Spring Data JPA映射自定义实体类操作

    Spring Data JPA映射自定义实体类操作

    这篇文章主要介绍了Spring Data JPA映射自定义实体类操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论