CVE-2025-63307 – laravel-file-manager v3.3.1 における認証済み保存型クロスサイトスクリプティング(XSS)
🧭 概要
laravel-file-manager v3.3.1 以下の認証済みユーザーによる保存型クロスサイトスクリプティング(XSS)の脆弱性により、ファイルマネージャーインターフェースにアクセスできる攻撃者が、アップロードまたは作成したファイルに任意の JavaScript コードを注入して永続化させることが可能です。
悪意のある JavaScript を含む特別に細工された .html または .svg ファイルをアップロードするか、ファイルマネージャー内でそのようなファイルを直接作成・編集することにより、攻撃者は保存型 XSS を引き起こせ、他の認証済みユーザーまたは管理者が Web インターフェースを通じてそのファイルを表示した際に実行されます。
🧱 影響を受けるコンポーネント
- プロジェクト:
laravel-file-manager
- コンポーネント: ファイルのアップロード、作成、表示機能(例:FileManagerController.php)
- 影響を受けるバージョン: v3.3.1 以下
🎯 攻撃ベクトル
- ファイルマネージャーインターフェースを介してファイルのアップロード、作成、または名前変更の権限を持つアカウントで認証する。
- 悪意のある JavaScript を含む .svg または .html 拡張子のファイルをアップロードまたは作成する
- アプリケーションはこのファイルを、その内容を検証したり埋め込まれたスクリプトをサニタイズしたりせずに保存する。
- 別のユーザー(管理者やリポジトリメンテナーなど)がブラウザでそのファイルを表示またはプレビューすると、悪意のある JavaScript がアプリケーションのドメインのコンテキストで実行される。
- スクリプトはその後、セッションハイジャック、CSRF、被害者のブラウザからの機密データの盗用などのアクションを実行できる。
💥 影響
- 保存型 XSS:アプリケーションのオリジン内での永続的な JavaScript の実行。
- セッションハイジャックとアカウント乗っ取り:攻撃者はクッキーを盗んだり、被害者としてアクションを実行したりできる。
- フィッシング / UI リドレッシング:注入されたスクリプトは UI 要素を偽装したり、ユーザーを悪意のあるサイトにリダイレクトしたりできる。
- 機密データの漏洩:被害者のセッションからアクセス可能なアプリケーション内の情報へのアクセス。
CVSS v3
基本スコア: 8.1
Vector: CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:H/I:H/A:N
重要度: 高
🛡️ 推奨される対策
- アップロードされるファイルに対して、厳格なサーバーサイドのコンテンツタイプ検証とフィルタリングを実施する。
- .html、.svg、またはアクティブコンテンツを含む可能性のあるその他の形式のアップロードを禁止するか、サニタイズする。
- ユーザーがアップロードしたファイルを Content-Disposition: attachment ヘッダー付きで提供するか、別の実行不可能なドメイン/サブドメインから提供する。
- ブラウザでユーザー制御のコンテンツをレンダリングする前に、出力エンコーディングとサニタイズを適用する。
🙏 クレジット
発見および報告者:Chayawat Jeamprasertboon, Thanakorn Boontem, Sahapon Kanajanothai, Theethat Thamwasin