CVE-2025-65346 – laravel-file-manager v3.3.1 の UnZip 関数による認証済みパストラバーサルから任意のファイル書き込みへ
🧭 概要
影響を受けるアプリケーションのunzip/extract機能におけるパストラバーサルの脆弱性により、攻撃者はアーカイブ展開中に任意のファイルシステム上の場所にファイルを書き込むことができます。抽出ルーチンがZIPエントリ内の宛先パスをサニタイズしないため、攻撃者はトラバーサルシーケンス(例:../../routes)や絶対パスを含むZIPアーカイブを作成できます。アプリケーションで処理されると、これらのファイルは実行中のプロセスの権限で指定された場所に直接展開されます。
この欠陥は、既存のファイルの上書き、実行可能ペイロードの埋め込み、アプリケーションの動作の変更に悪用される可能性があり、リモートコード実行につながる可能性があります。
🧱 影響を受けるコンポーネント
- プロジェクト:
laravel-file-manager
- コンポーネント: zip/archiving Functionf
- 影響を受けるバージョン: v3.3.1 以下
🎯 攻撃ベクトル
- 攻撃者はZIPアーカイブをアプリケーションのunzipエンドポイントにアップロードまたは提供します(認証は設定に応じて必要かどうか異なります)。
- UNZIPリクエストペイロードを操作して、../../routes などのディレクトリトラバーサルシーケンスを含めます。
- バックエンドの抽出ロジックはこれらのパスを検証せずに解決し、ファイルをそれらの場所に直接書き込みます。
- ファイル名が衝突した場合、既存のファイルが警告なしで上書きされる可能性があります。
- 攻撃者はアプリケーションファイルの置換、Webシェルの書き込み、重要な設定ファイルの変更が可能になります。
💥 影響
- 任意のファイル書き込み: アプリケーションユーザー(例:www-data)が書き込み可能な任意の場所にファイルを書き込むことができます。
- ファイルの上書き: 攻撃者はルート、コントローラ、設定などの正当なアプリケーションファイルを上書きできます。
- リモートコード実行: PHP、JSP、またはその他のWeb実行可能ペイロードをWebルートに書き込むことで、攻撃者は完全なコード実行を達成できます。
- アプリケーションの侵害: index.phpなどのエントリポイントの変更により、サイトロジックが改変されたり、永続的なバックドアが導入される可能性があります。
- 権限昇格(間接的): config/envファイルの上書きにより、さらなる横移動を可能にする秘密情報が露出する可能性があります。
重要度: Critical
基本スコア: 9.1
ベクター: CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
🛡️ 推奨される対策
- 正規パス検証の実装: 要求されたファイルパスを正規化し、プロジェクトの指定されたストレージルートへの厳格な制限を強制します。
- ../、%2e%2e/、ネストされたトラバーサルなど、トラバーサルシーケンスを含むパスを拒否します。
- サーバーサイドの許可リストロジックを適用します
- ベンダーがこのパストラバーサルの弱点に対処する修正をリリースしたら、パッチ適用済みのバージョンに更新します。
🙏 クレジット
発見および報告者: Theethat Thamwasin