LaravelのTokenGuardに認証回避の脆弱性、MySQL・MariaDBの一部の構成で他人として認証されるおそれ。Sanctumとの見分け方と11系以前の扱い

公開 2026-11-01公表 2026-10-19更新 2026-11-01資料確認 2026-11-01PHPの脆弱性 28件のまとめ
対象製品Laravel
識別番号CVE-2026-114509
影響範囲13.29.0未満・12.68.0未満(TokenGuardを使う場合)
修正情報13.29.0・12.68.0(上げるなら13.30.0・12.69.0以上)

PHPのWebフレームワークLaravelの標準のトークン認証(TokenGuard)で、文字列でない形に細工した値を送ると、MySQL・MariaDBの一部の構成で、APIトークンを知らないまま既存の利用者として認証されるおそれがある脆弱性(CVE-2026-114509)が、2026年10月19日にLaravelから公表されました。修正版は13.29.0と12.68.0です。対象はTokenGuardを使うアプリで、Sanctumで認証しているアプリとは見分けて確かめます。

2026-11-01更新:重点記事と同じ作りに書き直しました。上げる先(13.30.0・12.69.0以上)、TokenGuardとSanctumの見分け方、11系以前の扱いを加えました。

この記事の要点
  • 対象は、config/auth.phpでガードのドライバーをtokenにしている(TokenGuardを使う)アプリで、データベースがMySQL・MariaDBの一部の構成の場合です。
  • 深刻度はLaravelの評価でCVSS 4.0の9.2(緊急)です。11月1日時点でKEVには載っておらず、公開された攻撃のコード(PoC)も確認できませんでした。
  • 上げる先は13系が13.30.0以上、12系が12.69.0以上です。11系以前はアドバイザリに修正版が無く、サポートも終わっているため、12系以上へ移ります。

01LaravelのTokenGuardで起きることと仕組み

TokenGuardは、要求に含まれるAPIトークンを取り出し、そのトークンを持つ利用者をデータベースから探す仕組みです。トークンは、URLのクエリや送信された値のapi_token、Authorization: Bearerヘッダーなどから読み取ります。[1][6]

Laravelのアドバイザリによると、MySQL・MariaDBの一部の構成で、文字列でない形に細工した値を送ると、認証の検索の処理で正しく扱われず、本来は失敗するはずの問い合わせが別の利用者の行に一致します。攻撃者は、相手のAPIトークンを知らないまま、既存の利用者として認証されるおそれがあります。そのガードで守ったルートでは、認証の回避とアカウントの乗っ取りにつながります。どの構成が対象かは、アドバイザリに記載がありません。[1]

修正は、TokenGuardが受け取ったトークンが文字列かを確かめ、文字列でなければ検索しないようにしたものです。修正のコミットのテストでは、配列の値を送る例が使われています。[5]

細工した値で、トークンを知らないまま他人として認証される

攻撃の入口文字列でない形に細工した値api_tokenのクエリや送信値、Bearerヘッダーで送る
TokenGuardが受け取る

Laravelのトークン認証

TokenGuard13.29.0未満・12.68.0未満は、値が文字列かを確かめずに検索する
MySQL・MariaDB一部の構成で、失敗するはずの問い合わせが別の利用者の行に一致する
起きること
既存の利用者として認証相手のAPIトークンを知らないまま
アカウントの乗っ取りそのガードで守ったルートで認証を回避

出典 Laravel「GHSA-f9x3-7vq9-cph6」(2026-10-19公表、10-22更新)、Laravel「TokenGuard.php(13.x)」(2026-11-01確認)

02Laravelの脆弱性の影響を受ける条件

次の条件がそろう環境が対象です。[1]

  • 標準のトークン方式のAPIガード(TokenGuard)でルートを守っている。config/auth.phpのguardsに'driver' => 'token'がある
  • データベースがMySQLまたはMariaDBで、影響を受ける構成になっている(具体的な構成はアドバイザリに記載なし)
  • laravel/frameworkが13.29.0未満、または12.68.0未満

03Laravelの脆弱性の悪用の状況

11月1日に確かめた時点で、米CISAの悪用が確認された脆弱性の一覧(KEV、10月30日版)には載っていません。CVEの記録に米CISAが付けた評価(SSVC、10月28日)も、悪用は「なし」です。[2][3]

攻撃のコード(PoC)として公開されたものは確認できませんでした。ただし、修正のコミットのテストに、問題を起こす入力の形が載っています。今後30日に悪用される見込みの推定(EPSS)は0.78%です(10月31日時点)。深刻度は、LaravelとCVEの採番機関のGitHubの評価でCVSS 4.0の9.2(緊急)です。NVDは11月1日時点で分析待ちで、独自の値を付けていません。[4][5][7]

修正版の公開から約2か月後の10月19日に公表

2026年8月25日・26日

12.68.0と13.29.0をPackagistで公開TokenGuardが値を文字列か確かめるようにした

9月1日

13.30.0と12.69.0を公開エラー画面のXSS(CVE-2026-102279)も直った

10月19日

Laravelが脆弱性を公表CVE-2026-114509
9.2CVSS 4.0(Laravel)

10月27日

10系の10.50.4を公開TokenGuardに同じ文字列の確認が入った

10月28日

CISAのSSVCで悪用は「なし」CVEの記録に付いた評価

11月1日

KEVには載っていない10月30日版の一覧で確認。公開されたPoCも確認できなかった
0.78%EPSS(10月31日)

出典 Laravel「GHSA-f9x3-7vq9-cph6」(2026-10-19公表、10-22更新)、Packagist「laravel/framework」(2026-11-01確認)、CVE Program「CVE-2026-114509」(2026-10-22公開)、米CISA「Known Exploited Vulnerabilities Catalog」(2026-10-30版)、FIRST「EPSS(CVE-2026-114509)」(2026-10-31)

04Laravelの対象の版と推奨する版

今回の修正版は13.29.0と12.68.0で、12.68.0は8月25日、13.29.0は8月26日(いずれも日本時間)にPackagistで公開されています。公表が修正版の公開から約2か月後だったため、すでに上げている環境もあります。同じ時期のLaravelのアドバイザリも直る版は、13系が13.30.0、12系が12.69.0です。13.30.0・12.69.0では、APP_DEBUG=trueのときのエラー画面のXSS(CVE-2026-102279、低)が直っています。[1][8][9]

系列影響を受ける版今回の修正版推奨する版最新版(11月1日)
13系13.29.0未満13.29.013.30.0以上13.39.0
12系12.68.0未満12.68.012.69.0以上12.70.2
11系以前12.68.0未満に含まれる記載なし(出典で確認)12系以上へ移る―

推奨する版は、Laravelのリポジトリで公表されたアドバイザリと、Packagistで公開済みの版から出しました(11月1日確認)。13系はPHP 8.3以上、12系はPHP 8.2以上が必要です。更新の前に、Laravelのリリースノートで変更点を確かめてください。[1][8][10]

13系は13.30.0以上、12系は12.69.0以上へ上げ、11系以前は12系以上へ移る

13系
影響を受ける版13.29.0未満
今回の修正版13.29.0
推奨する版13.30.0以上
補足PHP 8.3以上。13.30.0でエラー画面のXSSも直る
12系
影響を受ける版12.68.0未満
今回の修正版12.68.0
推奨する版12.69.0以上
補足PHP 8.2以上。12.69.0でエラー画面のXSSも直る
11系以前
影響を受ける版12.68.0未満に含まれる
今回の修正版記載なし
推奨する版12系以上へ移る
補足セキュリティの修正は11系が2026年3月12日に終了
だから 8月に13.29.0へ上げた環境も、13.30.0未満なら上げ直す。

出典 Laravel「GHSA-f9x3-7vq9-cph6」(2026-10-19公表、10-22更新)、Packagist「laravel/framework」(2026-11-01確認)、Laravel「Release Notes(Support Policy)」(2026-11-01確認)

05Laravelの版とガードを確かめて上げる手順

  1. composer.lockに記録されたlaravel/frameworkの版を確認します。

    ターミナル
    composer show --locked laravel/framework
  2. TokenGuard(ドライバーtoken)のガードがあるか、どのルートがそのガードを使っているかを確認します。

    ターミナル
    grep -n "'driver'" config/auth.php
    grep -rn "auth:api\|guard('api')" routes app
  3. 推奨する版へ上げます。13系なら13.30.0以上、12系なら12.69.0以上になるよう、composer.jsonの指定を確かめてから実行します。

    ターミナル
    composer update laravel/framework --with-dependencies
    composer show --locked laravel/framework
  4. Packagistに登録された脆弱性の情報で、他に残っているものがないかを確かめます。

    ターミナル
    composer audit --locked
  5. 本番に反映したあと、実際に動いているLaravelの版を確かめます。コンテナイメージやデプロイ先でも同じ確認をします。

    ターミナル
    php artisan --version

06すぐ上げられないとき

Laravelのアドバイザリには、回避策の記載がありません。対応は修正版への更新です。[1]

TokenGuardを使っていないアプリ('driver' => 'token'のガードが無いアプリ)は、この脆弱性の条件に当てはまりません。その場合も、同じ版で直る他の脆弱性のために、上の表の版へ上げることを勧めます。

07TokenGuardかSanctumかの見分け方

LaravelのAPI認証には、標準のTokenGuard(ドライバーtoken)のほかに、Sanctum(ドライバーsanctum)やPassportがあります。アドバイザリが対象として挙げるのはTokenGuardだけです。SanctumはLaravel\Sanctum\Guardという別のクラスで、personal_access_tokensの表からトークンを探します。[1][6][11]

Sanctumを使っていても、古いガードの設定がconfig/auth.phpに残っていて、一部のルートだけがそちらで守られていることがあります。auth:apiなどのミドルウェアの指定が、どのガードを指しているかを手順で確かめます。

0811系以前を使っている場合

アドバイザリは影響範囲を「12.68.0未満」としており、11系以前も対象に含まれますが、11系以前の修正版は記載していません。Laravelのサポートの方針では、セキュリティの修正の提供は11系が2026年3月12日、10系が2025年2月4日に終わっています。[1][12]

なお、Laravelのリポジトリでは、11系の11.56.1(8月25日公開)と10系の10.50.4(10月27日公開)のTokenGuardに、同じ文字列の確認が入っています。これはアドバイザリが示す修正版ではなく、他の脆弱性の修正も保証されないため、12系以上へ移るまでのつなぎとして扱います。[8][13]

脆弱性の公表・更新一覧で、PHPの関連情報を調べることもできます。

緊急の場合AI攻撃リスク即点検サービス公開情報と、契約後すぐに用意できるアクセスの記録から先に調べ、被害や狙われやすい構成がないかを早く確かめます。

よくある質問

Sanctumで認証しています。対象ですか?

アドバイザリが対象とするのはTokenGuard(ドライバーtoken)です。Sanctumは別のクラスで認証します。ただし、config/auth.phpにtokenのガードが残り、一部のルートで使われていれば対象になりえます。[1][11]

データベースがPostgreSQLやSQLiteなら、対象外ですか?

アドバイザリはMySQL・MariaDBの一部の構成で起きると説明しており、他のデータベースについての記載はありません。対象外と言い切れないため、TokenGuardを使っているなら修正版へ上げます。[1]

8月に13.29.0以上へ上げていました。追加の対応は要りますか?

この脆弱性は直っています。13.30.0未満なら、エラー画面のXSS(CVE-2026-102279)が残るため、13.30.0以上へ上げることを勧めます。[9]

composer updateを実行したのに版が変わりません。

composer.jsonの版の指定(例:^12.0)や、他のパッケージの制約で止まっていることがあります。composer why-not laravel/framework 12.69.0で、上げられない理由を確かめます。

出典・参考資料

  1. Laravel公式:GHSA-f9x3-7vq9-cph62026-10-19公表・10-22更新(日本時間) / 仕組み、対象のガードとデータベース、影響、影響範囲と修正版、CVSS 4.0 9.2、回避策の記載なし
  2. 米CISA:Known Exploited Vulnerabilities Catalog(JSON版 2026.10.30)2026-11-01確認 / KEVに載っていないこと
  3. CVE Program:CVE-2026-114509の記録2026-10-22公開(日本時間) / 採番機関(GitHub)、CISAのSSVC(Exploitation: none、10月28日)
  4. FIRST:EPSS(CVE-2026-114509)2026-10-31 / 今後30日に悪用される見込みの推定 0.78%
  5. Laravel公式:修正のコミット(12系)2026-08-25 / 文字列の確認の追加、配列の値を使うテスト
  6. Laravel公式:TokenGuard.php・AuthManager.php(13.x)2026-11-01確認 / トークンの読み取り元(クエリ・送信値・Bearer)、ドライバーtokenでTokenGuardが作られること(AuthManager::createTokenDriver)
  7. NVD:CVE-2026-1145092026-10-22登録(日本時間) / 分析待ちで、GitHubの評価だけが載っていること
  8. Packagist:laravel/framework2026-11-01確認 / 12.68.0・11.56.1(8月25日)、13.29.0(8月26日)、13.30.0・12.69.0(9月1日)、10.50.4(10月27日)の公開日(日本時間)、最新版、PHPの要件
  9. Laravel公式:GHSA-jh5r-qr3c-85q8(CVE-2026-102279)2026-09-10公表 / エラー画面のXSS、12.69.0・13.30.0での修正
  10. Laravel公式:リリースノート2026-11-01確認 / 版ごとの変更点
  11. Laravel Sanctum:Guard.php(4.x)2026-11-01確認 / SanctumがTokenGuardとは別のクラスでトークンを探すこと
  12. Laravel公式:Release Notes(Support Policy)2026-11-01確認 / 各系列のセキュリティの修正の提供期限
  13. Laravel公式:TokenGuard.php(v11.56.1)2026-08-25 / 11系に同じ確認が入っていること(10系はv10.50.4で同じ)
  14. 修正のコミット:github.com/laravel/framework/commit/9b21ce0a9bb2b2599978bc0b0df4abea952ad31cGitHub Advisoryの参考リンク / 修正の内容・経緯
  15. リリースノート:github.com/laravel/framework/releases/tag/v12.68.0GitHub Advisoryの参考リンク / 修正の内容・経緯
  16. リリースノート:github.com/laravel/framework/releases/tag/v13.29.0GitHub Advisoryの参考リンク / 修正の内容・経緯

あわせて読みたい記事

PHP公表 2026-10-26

PHPのWindows版のBrotliの脆弱性、8.5.12-1などへの入れ替えとcURL・Guzzleの確かめ方(CVE-2026-111497)

PHPのWindows版に同梱のBrotliの脆弱性CVE-2026-111497は、米CISAが悪用を確認しています。10月21日の版も対象のままである理由、GuzzleやWordPressで自動展開が有効になる条件、8.5.12-1などへの入れ替えと確かめ方を説明します。

Python公表 2026-10-22

Brotliの脆弱性の確認方法、PythonとNode.jsで対象かを確かめて直す(CVE-2026-111497、コード実行のおそれ)

圧縮形式Brotliの展開処理の脆弱性CVE-2026-111497(HTTP2Shell)は、米CISAが悪用を確認しています。Pythonのbrotli・brotlicffi、Node.jsの同梱版などで、自分の版と構成が対象かを確かめる方法と修正版を、言語ごとに説明します。

Python公表 2026-05-22

Starletteの脆弱性BadHost、Hostヘッダーでパスによる認証の確認を回避されるおそれ。FastAPIを上げても古い版が残る場合の確かめ方

Starletteの脆弱性CVE-2026-48710(BadHost)は、細工したHostヘッダーでrequest.url.pathを偽り、パスで判定するアクセスの確認を回避されるおそれがあります。9月2日にKEVに追加されました。FastAPI・vLLM・LiteLLMの下で古いStarletteが残る例と、間接依存の確かめ方を説明します。