
Laravelで動的なインターフェースを開発するうえで不可欠なフレームワークであるLivewireに対する詳細なセキュリティ分析により、重大な脆弱性が明らかになりました。
Synacktivのセキュリティ専門家は、悪用された場合、世界中で13万を超えるアプリケーションをホストするサーバー上で攻撃者が任意のコードを実行できる可能性がある、致命的な欠陥と設計上の誤りを特定しました。
Livewireは広く利用されており、新規に作成されるLaravelプロジェクトのおよそ3分の1に組み込まれているとされています。これは、最小限のJavaScriptコードで対話的なフロントエンドを生成するためです。その動作は、コンポーネントの状態を「脱水」してシリアライズ形式に変換しクライアントへ送信し、戻ってきた際に「再水和」する仕組みに基づいています。
CVE-2025-54068として追跡されているこのバグは、サーバーとブラウザ間で状態を同期するために用いられるLivewire内部の「水和」メカニズムを悪用します。パッチはリリースされたものの、研究者らは、設計上の重要な特性が、認証情報が漏えいしたアプリケーションにとって時限爆弾のままであると警告しています。
主な問題は、Livewireが更新を処理する方法にありました。報告書は「デフォルトでは、開発者がコンポーネントのパラメータに強い型付けを適用しない場合、type juggling(型の取り違え)に対して脆弱になる」と説明しています。
攻撃者は、単純な整数カウンタを悪意ある配列へ変換するよう細工したリクエストを送信し、サーバーにコードを実行させる可能性があります。
Synacktivの研究者は、このプロセスを操作できることを発見しました。PHPのunserialize()の挙動を含むガジェットチェーンを特定することで、「リモートコマンドのステルス実行」を実現する方法を見つけました。
これらの欠陥の深刻さを示すため、SynacktivはLivepyreと呼ばれるproof-of-conceptツールを公開しました。このツールはエクスプロイトのプロセスを自動化し、脆弱性の検証とペイロードの配布を行えます。
「CVE-2025-54068の発見により、さらに重大な欠陥が浮き彫りになりました。APP_KEYの必要性を完全に回避して、更新メカニズムを破れる能力です」と研究者らは述べました。
通常、LivewireはアプリケーションのAPP_KEYで署名されたチェックサムによって自身の状態を保護します。しかし、脆弱性CVE-2025-54068により、攻撃者はこの要件を完全に回避できました。
これは、秘密鍵がなくても、攻撃者が悪意あるオブジェクトを注入できることを意味します。特に、GuzzleHttpPsr7FnStreamとマジックデストラクタメソッドを含む手法を用いて、リモートコード実行(RCE)を発動させることが可能です。
脆弱性CVE-2025-54068はバージョン3.6.4以降で修正されたものの、より深刻なリスクが残っています。研究では、攻撃者がAPP_KEY(漏えいやデフォルト値により一般的に起こり得る)を入手できた場合、アプリケーションは実質的にRCEに対して無防備であることが示されています。
「APP_KEYを必要とするエクスプロイトのバージョンは修正されていません。なぜなら、それはLivewireの設計方法を悪用しているからです… Livewireチームはそれをセキュリティ問題とは見なしていません」
Synacktivは、この立場はリスクを過小評価しているとし、「Livewire 3以降をベースにしたアプリケーションでAPP_KEYを所持しているということは、それを完全に侵害できることを意味する」と指摘しています。