Laravel の深刻な XSS の脆弱性 CVE-2024-13918 が FIX:PoC も公開

Laravel Framework Flaw Allows Attackers to Execute Malicious JavaScript

2025/03/10 gbhackers — Laravel フレームワークで発見された深刻な脆弱性 CVE-2024-13918 は、バージョン 11.9.0 〜11.35.1 に影響を及ぼすものだ。アプリケーションがデバッグ・モードで実行されているときに、エラー・ページでリクエスト・パラメータが適切にエンコードされないことに起因する問題であり、反射型クロスサイト・スクリプティング (XSS) を引き起こす可能性があるという。Github のレポートによると、この脆弱性 CVE-2024-13918 の CVSS スコアは 8.0 であり、高深刻度だと評価されている。

この脆弱性の悪用により、URL パラメータやリクエスト本文などの、詳細なリクエスト情報を表示する、Laravel のデバッグ・モード・エラー・ページの操作が可能となる。

つまり、これらのデータが表示される際に、適切なエンコードが行われないため、ユーザーのブラウザ内で、攻撃者による悪意の JavaScript コードの挿入/実行が可能となる。

この問題が発生するのは、アプリケーションのデバッグ・モードがアクティブ (APP_DEBUG=true) の場合であり、攻撃者が提供する悪意のリンクに、ユーザーがアクセスするときとなる。

脆弱性の説明

Laravel がデバッグ・モード (APP_DEBUG=true) であり、Web アプリケーションがエラー (HTTP ステータス 5XX) を返す場合には、リクエストの詳細を取り込んだエラー・ページが表示される。

Laravel のエラー・ページのコード・スニペットは、適切なエンコードが欠如した状態で、リクエスト・ボディ・データがエンベッドされる様子を示している。

<div class="mt-1 rounded border dark:border-gray-800">
    <div class="flex items-center">
        <span
            class="min-w-0 flex-grow"
            style="[…]"
        >

            <pre class="scrollbar-hidden mx-5 my-3 overflow-y-hidden text-xs lg:text-sm">
                <code class="overflow-y-hidden scrollbar-hidden overflow-x-scroll scrollbar-hidden-x">
                    {!! $exception->requestBody() ?: 'No body data' !!}
                </code>
            </pre>
        </span>
    </div>
</div>

{!! !!} を使用すると HTML エンコードが無効化され、挿入された JavaScript を、コードとして実行できるようになる。

PoC エクスプロイト

この脆弱性を実証する場合には、以下の手順に従ってほしい。

  • デバッグ・モードを有効化する:“.env” ファイルで “APP_DEBUG=true” が設定されていることを確認する。
  • POCTest ルートを作成する:エラーをトリガーするエンドポイントを、以下のように追加する。
use Illuminate\Support\Facades\Route;

Route::get('/poc-url', function () {
    return 0/0; // This will throw a division by zero error.
});
  • 悪用の方法:http://localhost:8000/poc-url?payload= のような、細工された URL にアクセスする。この URL へのアクセスによりエラーが発生すると、エラー・ページが表示され、挿入された JavaScript が実行される。

この脆弱性の影響は甚大である。攻撃者が作成する URL により、ユーザーがアクセスするときに、Web アプリケーションのコンテキストで任意の JavaScript が実行される。それにより、データ窃取やセッション奪取などの、さまざまな悪意のアクションが可能になる。

幸いなことに、すでに Laravel は、バージョン 11.36.0 をリリースし、このフレームワークの問題を解決している。ユーザーに対して強く推奨されるのは、最新バージョンへと速やかにアップデートし、この脆弱性から保護をすることだ。

Web アプリケーションのセキュリティは、最も重要なものである。この Laravel の脆弱性が強調するのは、定期的な更新と堅牢なセキュリティ対策の重要性である。ユーザー・データを保護し、悪意のあるアクティビティを防止するには、Laravel などのツールの整合性の確保が重要となる。

Laravel の XSS の脆弱性が FIX しました。悪用されると、データ窃取やセッション奪取などに至る可能性がある、深刻な脆弱性です。PoC エクスプロイトが提供されたことで、悪用の可能性も高まります。ご利用のチームは、お気をつけください。よろしければ、Laravel で検索も、ご参照ください。