📋 漏洞概述
Spring官方最新发布了一个重要安全漏洞警告,影响Spring Framework多个版本。该漏洞可能导致反射文件下载(RFD)攻击,攻击者可以通过精心构造的请求诱使用户下载恶意文件。🔍 漏洞详情
漏洞原理
在Spring Framework中,当应用程序满足以下所有条件时,会存在RFD攻击漏洞:- 🎯 使用
org.springframework.http.ContentDisposition设置Content-Disposition响应头 - 📝 通过
ContentDisposition.Builder#filename(String, Charset)设置文件名 - 🔄 文件名值来源于用户输入
- ⚠️ 应用程序未对用户输入进行清理/校验
- 💥 攻击者能够在响应内容中注入恶意命令
不受影响的情况
如果满足以下任一条件,则应用程序不受此漏洞影响:- ✅ 应用程序不设置
Content-Disposition响应头 - ✅ 响应头不是通过
org.springframework.http.ContentDisposition设置 - ✅ 文件名通过以下方式设置:
ContentDisposition.Builder#filename(String)ContentDisposition.Builder#filename(String, ASCII)
- ✅ 文件名不来源于用户输入
- ✅ 应用程序对用户输入进行了适当的清理
- ✅ 攻击者无法在响应内容中注入恶意内容
🎯 影响范围
受影响的Spring Framework版本
| 版本系列 | 受影响版本范围 | 状态 |
|---|---|---|
| 6.2.x | 6.2.0 - 6.2.7 | 开源支持 |
| 6.1.x | 6.1.0 - 6.1.20 | 开源支持 |
| 6.0.x | 6.0.5 - 6.0.28 | 商业支持 |
对应的Spring Boot版本
根据Spring Boot与Spring Framework的版本对应关系:| Spring Framework 修复版本 | 对应 Spring Boot 版本 | 可用性 |
|---|---|---|
| 6.2.8 | Spring Boot 3.4.7, 3.5.1 (未发布) | 开源版本 |
| 6.1.21 | Spring Boot 3.3.13 (未发布) | 开源版本 |
| 6.0.29 | Spring Boot 3.0、3.1、3.2 (商业版本) | 商业支持 |
🛠️ 修复方案
⚠️ 重要说明: 由于Spring Boot 3.4.7和3.3.13版本尚未发布,建议先通过引入spring-framework-bom的方式进行兼容性升级,确保Spring Framework版本得到及时修复。