脆弱性・CVE速報深刻度: 緊急

Laravel の TokenGuard で、細工した非文字列のトークンにより認証を回避できる(CVE-2026-114509): 12.68.0・13.29.0 で修正

目次(5)

CVE-2026-114509

PHP のフレームワーク Laravel の TokenGuard に、認証回避の勧告 CVE-2026-114509 が公開されました(GitHub Advisory は 10/23 公開)。GitHub Advisory の深刻度は Critical、CWE-287・CWE-1287 です。GitHub は CVSS の数値を付けていませんが、NVD には GitHub 提供の CVSS v4.0 9.2(Critical)が載っています。対象は 12.68.0 未満と、13.0.0 以上 13.29.0 未満で、修正版は 12.68.0 と 13.29.0 です。CISA の KEV には載っていません。EPSS は 0.78%(FIRST、10/30 時点)です。

何が起きるか

  • TokenGuard は、リクエストの API トークンでユーザーを引き当てる、Laravel 標準のトークン認証ガードです。
  • 勧告によると、このガードは、細工された「文字列ではない」認証情報(たとえば配列)を弾かずにそのままユーザー検索へ渡します。MySQL または MariaDB の構成では、この検索が意図しない既存ユーザーに一致し得ます。
  • その結果、認証されていない攻撃者が、相手の API トークンを知らなくても、そのユーザーとして認証され、TokenGuard で守られたルートでアカウントを乗っ取れる、とされています。
  • 修正コミットを確認しました。user() と validate() に「トークンが文字列であること」の確認(is_string)を加え、配列の api_token を渡してもユーザー検索へ進まないことを確かめるテストを足す内容です。

影響を受ける版と修正

  • 対象は 12.x 系の 12.68.0 未満と、13.x 系の 13.0.0 以上 13.29.0 未満です。修正版は 12.68.0 と 13.29.0 です。
  • Packagist の記録では、12.68.0 は 2026-08-25(UTC)、13.29.0 も 2026-08-25(UTC)に公開されています。勧告の公開(10/23)より前に修正版が出ていた形です。この間の経緯は確認できていません。

悪用の条件

  • TokenGuard(api ガードなどの標準のトークン方式)を使っている。Sanctum や Passport など別の仕組みを使うだけでは、勧告の対象に当たるかは確認していません。
  • データベースが MySQL または MariaDB である(勧告が挙げる条件)。
  • 認証されていない攻撃者が、TokenGuard で守られたルートにリクエストを送れる。

対応

  1. Laravel を 12.68.0 以上(12.x 系)または 13.29.0 以上(13.x 系)に更新します。
  2. config/auth.php の guards を見て、driver が token のガードがあるかを確かめます。該当するルートは優先して更新します。
  3. 更新できない間は、該当ルートで API トークンの入力が文字列であることを確かめる処理を、認証の前段(ミドルウェアなど)に入れることが考えられます。ただし、これは本記事の推定であり、勧告が示す回避策ではありません。
  4. 心当たりのないトークン認証のアクセスがないか、ログを確認します。

未確認の点

  • NVD は 10/21 に登録され、状態は Awaiting Analysis です。NVD 自身の評価は未確認で、上の CVSS v4.0 は GitHub 提供の値です。
  • 悪用の報告は見つかっていません(KEV 掲載なし)。EPSS は低めですが、今後変わり得ます。
  • 実際の環境での再現は確認していません。記載は勧告、修正コミット、公開情報に基づきます。

この記事について

出典

この記事を共有