Laravel v11.x の脆弱性 CVE-2024-40075 が FIX:XXE の恐れ

CVE-2024-40075: XXE Vulnerability Found in Laravel v11.x

2024/07/23 SecurityOnline — 人気の OSS PHP Web フレームワークの Laravel v11.x に、深刻な脆弱性 CVE-2024-40075 が発見された。この XXE (XML External Entity) の脆弱性の悪用に成功した攻撃者は、機密情報にアクセス/任意のコマンド実行の可能性を得る。


この脆弱性の詳細まで分析したセキュリティ研究者の Q16G が、Laravel のコードベース内で悪用される重要なポイントを概説している。この脆弱性は、Laravel のロギング・メカニズムのコア・コンポーネントである、”MonologHandler” クラスの “__destruct” 関数の処理にさかのぼる。悪用プロセスの詳細は以下の通りである:

  • “destruct” 関数のトレース: 抽象クラス “MonologHandler” にある “__destruct” 関数が、サブクラスでオーバーライドされていない場合に呼び出されることが特定された。この関数は、最終的に “close” メソッドを呼び出す。
Monolog\Handler\Handler

サブクラスの分析: “close” メソッドをオーバーライドし、”__destruct” メソッドをオーバーライドしないサブクラス (groupHandler など) が見つかったことで、実行フローの詳細がトレースができた。

Monolog\Handler\GroupHandler
  • ハンドラーのイテレーション: “groupHandlerのclose” メソッドで、コードはハンドラーを繰り返し実行し、それらの “close” メソッドを実行することで、”getStreamName” メソッド呼び出しの発見につながっていった。
Psy\Readline\Hoa\Stream
  • トリガーの識別: “getStreamName” メソッドは、次に “md5″ 関数を呼び出すものであり、”__tostring” トリガーを検索する必要がある。この研究者は、重要なコンポーネントとして、実装クラス “PsyReadline\Hoa FileRead” を特定した。
Termwind\Components\Element
  • 関数の実行: 最後に、”__tostring” 関数は “tostring” 関数を呼び出し、”tostring” 関数は “$this->stypes->format” 関数を呼び出すので、この脆弱性を悪用する任意のコマンド実行が可能になる。

脆弱性 CVE-2024-40075 の悪用に成功した攻撃者は、XML 入力を操作することで、未認証でのデータ侵害やシステム侵害を引き起こし、深刻なリスクを発生させる可能性を得る。Web 開発に Laravel が広く使用されているため、その影響は広範囲に及ぶと想定され、世界中の数多くの Web アプリケーションへの影響が懸念される。ユーザーに対して強く推奨されるのは、最新バージョンへのアップデートにより、自身のアプリケーションを保護することである。