Spring Framework Flaw Enables Remote File Disclosure via “Content‑Disposition” Header
2025/06/13 gbhackers — VMware Spring Framework に存在する、リフレクション・ファイル・ダウンロード (RFD) の脆弱性 CVE-2025-41234 (深刻度 Medium)が修正された。この脆弱性が影響を及ぼす範囲は、広く使用されている Java フレームワークの、複数バージョンにまたがる。この脆弱性の悪用に成功した攻撃者は、Web アプリケーション上で不適切にコンフィグされた Content-Disposition ヘッダーを介して、悪意のコードを実行できる。

技術的な詳細
Spring の org.springframework.http.ContentDisposition クラスを用いるアプリケーションが、サニタイズされていないユーザー入力から派生した、非 ASCII 文字を取り込んだファイル名を設定する際に、この脆弱性が発生する。
それを悪用する攻撃者は、悪意のコマンドを取り込んだ実行型の拡張子 (例:cmd/.bat) を持つファイルを、ユーザーにダウンロードさせる HTTP レスポンスを作成できる。
脆弱なコードパターン
java// UNSAFE: Uses non-ASCII charset with user-supplied input
ContentDisposition.builder("attachment")
.filename(userInput, StandardCharsets.UTF_8) // Non-ASCII charset
.build();
安全な代替方法
java// SAFE: Uses ASCII charset
ContentDisposition.builder("attachment")
.filename(userInput, StandardCharsets.US_ASCII) // ASCII restriction
.build();
// SAFE: Sanitizes input
String sanitized = FilenameUtils.sanitize(userInput);
ContentDisposition.builder("attachment")
.filename(sanitized, StandardCharsets.UTF_8)
.build();
リスク分析
| Risk Factor | Description | Impact Level |
|---|---|---|
| Attack Vector | Network (Remote) | Medium |
| Attack Complexity | High | Medium |
| Privileges Required | Low | Medium |
| User Interaction | Required | Medium |
| Confidentiality Impact | High | High |
| Integrity Impact | Low | Low |
| Availability Impact | None | None |
この脆弱性は、ユーザー・インタラクションとコンテキストによるスコープ変更が前提となるため、CVSS スコアは 6.8 (Medium) と評価されている。
悪用を成功させるためには、以下の条件を満たす必要がある:
- 悪意のリンクから、被害者がファイルをダウンロードする
- ファイル名に実行可能型の拡張子が含まれる
- レスポンス本文に攻撃者が制御するコマンドが含まれる
影響を受けるバージョンと緩和策
影響を受けるリリース
- Spring Framework 6.2.0~6.2.7
- Spring Framework 6.1.0~6.1.20
- Spring Framework 6.0.5~6.0.28 (Commercial)
パッチ適用済みバージョン
| Affected Branch | Fixed Version | Availability |
|---|---|---|
| 6.2.x | 6.2.8 | Open Source |
| 6.1.x | 6.1.21 | Open Source |
| 6.0.x | 6.0.29 | Commercial |
オープンソース・ユーザーに対して VMware が推奨するのは、速やかなアップグレードである。また、Spring Boot 3.1/3.2 を使用する商用ユーザーは、ホット・フィックス3.1.17.1/3.2.15.1 を適用してほしい。
以下の条件を満たしているアプリケーションは、この脆弱性の影響を受けない:
- Content-Disposition ヘッダーの設定を避ける
- 文字セット固有のメソッドではなく、filename(String) を使用する
- Apache Commons IO FilenameUtils などのライブラリを使用してファイル名をサニタイズする
業界からの対応
すでに Spring チームはパッチをリリースし、以下のバージョンによるアップデートを実施している:
- Spring Framework 6.1.21 (6.1.x の最終 OSS リリース)
- Spring Framework 6.2.8 (合計39件の修正)
- エンタープライズ向け商用バックポート
この脆弱性を発見した Dynatrace のセキュリティ研究者 Jakob Linskeseder は、ヘッダー操作攻撃のリスクが、依然として存在すると指摘している。
つい先日には、Microsoft Outlook の CVE-2025-47176 および、Windows Secure Boot の CVE-2025-3052 が公表されている。今回の脆弱性も、それらに続くものであり、厳格な入力検証の必要性が浮き彫りにされている。
結論
脆弱性 CVE-2025-41234 は、一般的なフレームワークにおける API の微妙な誤用が、エンタープライズ全体にリスクをもたらす可能性があることを実証している。
Spring の ContentDisposition ビルダーを使用している開発者は、以下の対策を速やかに講じる必要がある:
- パッチ適用済みバージョンへのアップグレード
- ファイル名処理ワークフローの監査
- 許可される文字セットのホワイトリスト実装
この脆弱性を悪用する攻撃においては、特定の前提条件を満たす必要がある。ただし、クライアント側でコードが実行される可能性があるため、Web アプリケーション・セキュリティ・プロトコルにおいて、優先度の高い対策が必要となる。
Spring Framework の脆弱性 CVE-2025-41234 が FIX しました。ファイル名における非 ASCII 文字の取り扱いから、攻撃の経路が生まれてしまうという、ちょっと珍しい話ですね。ご利用のチームは、十分に ご注意ください。よろしければ、Spring で検索も、ご参照ください。
You must be logged in to post a comment.