Skip to main content

📋 漏洞概述

Spring官方最新发布了一个重要安全漏洞警告,影响Spring Framework多个版本。该漏洞可能导致反射文件下载(RFD)攻击,攻击者可以通过精心构造的请求诱使用户下载恶意文件。

🔍 漏洞详情

漏洞原理

在Spring Framework中,当应用程序满足以下所有条件时,会存在RFD攻击漏洞:
  1. 🎯 使用 org.springframework.http.ContentDisposition 设置 Content-Disposition 响应头
  2. 📝 通过 ContentDisposition.Builder#filename(String, Charset) 设置文件名
  3. 🔄 文件名值来源于用户输入
  4. ⚠️ 应用程序未对用户输入进行清理/校验
  5. 💥 攻击者能够在响应内容中注入恶意命令

不受影响的情况

如果满足以下任一条件,则应用程序不受此漏洞影响:
  • ✅ 应用程序不设置 Content-Disposition 响应头
  • ✅ 响应头不是通过 org.springframework.http.ContentDisposition 设置
  • ✅ 文件名通过以下方式设置:
    • ContentDisposition.Builder#filename(String)
    • ContentDisposition.Builder#filename(String, ASCII)
  • ✅ 文件名不来源于用户输入
  • ✅ 应用程序对用户输入进行了适当的清理
  • ✅ 攻击者无法在响应内容中注入恶意内容

🎯 影响范围

受影响的Spring Framework版本

版本系列受影响版本范围状态
6.2.x6.2.0 - 6.2.7开源支持
6.1.x6.1.0 - 6.1.20开源支持
6.0.x6.0.5 - 6.0.28商业支持
⚠️ 注意: 更早的不受支持版本不受此漏洞影响

对应的Spring Boot版本

根据Spring Boot与Spring Framework的版本对应关系:
Spring Framework 修复版本对应 Spring Boot 版本可用性
6.2.8Spring Boot 3.4.7, 3.5.1 (未发布)开源版本
6.1.21Spring Boot 3.3.13 (未发布)开源版本
6.0.29Spring Boot 3.0、3.1、3.2 (商业版本)商业支持

🛠️ 修复方案

⚠️ 重要说明: 由于Spring Boot 3.4.7和3.3.13版本尚未发布,建议先通过引入spring-framework-bom的方式进行兼容性升级,确保Spring Framework版本得到及时修复。
<!-- Spring Framework -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-framework-bom</artifactId>
    <version>6.2.8</version> <!-- 或 6.1.21 -->
    <type>pom</type>
    <scope>import</scope>
</dependency>