LaravelのTokenGuardに認証回避の脆弱性、MySQL・MariaDBの一部の構成で他人として認証されるおそれ。Sanctumとの見分け方と11系以前の扱い
CVE-2026-114509PHPの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]
細工した値で、トークンを知らないまま他人として認証される
Laravelのトークン認証
出典 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日
9月1日
10月19日
10月27日
10月28日
11月1日
出典 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.0 | 13.30.0以上 | 13.39.0 |
| 12系 | 12.68.0未満 | 12.68.0 | 12.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系以上へ移る
出典 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の版とガードを確かめて上げる手順
composer.lockに記録された
laravel/frameworkの版を確認します。ターミナルcomposer show --locked laravel/frameworkTokenGuard(ドライバー
token)のガードがあるか、どのルートがそのガードを使っているかを確認します。ターミナルgrep -n "'driver'" config/auth.php grep -rn "auth:api\|guard('api')" routes app推奨する版へ上げます。13系なら13.30.0以上、12系なら12.69.0以上になるよう、composer.jsonの指定を確かめてから実行します。
ターミナルcomposer update laravel/framework --with-dependencies composer show --locked laravel/frameworkPackagistに登録された脆弱性の情報で、他に残っているものがないかを確かめます。
ターミナルcomposer audit --locked本番に反映したあと、実際に動いている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の関連情報を調べることもできます。

よくある質問
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で、上げられない理由を確かめます。
出典・参考資料
- Laravel公式:GHSA-f9x3-7vq9-cph62026-10-19公表・10-22更新(日本時間) / 仕組み、対象のガードとデータベース、影響、影響範囲と修正版、CVSS 4.0 9.2、回避策の記載なし
- 米CISA:Known Exploited Vulnerabilities Catalog(JSON版 2026.10.30)2026-11-01確認 / KEVに載っていないこと
- CVE Program:CVE-2026-114509の記録2026-10-22公開(日本時間) / 採番機関(GitHub)、CISAのSSVC(Exploitation: none、10月28日)
- FIRST:EPSS(CVE-2026-114509)2026-10-31 / 今後30日に悪用される見込みの推定 0.78%
- Laravel公式:修正のコミット(12系)2026-08-25 / 文字列の確認の追加、配列の値を使うテスト
- Laravel公式:TokenGuard.php・AuthManager.php(13.x)2026-11-01確認 / トークンの読み取り元(クエリ・送信値・Bearer)、ドライバーtokenでTokenGuardが作られること(AuthManager::createTokenDriver)
- NVD:CVE-2026-1145092026-10-22登録(日本時間) / 分析待ちで、GitHubの評価だけが載っていること
- 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の要件
- Laravel公式:GHSA-jh5r-qr3c-85q8(CVE-2026-102279)2026-09-10公表 / エラー画面のXSS、12.69.0・13.30.0での修正
- Laravel公式:リリースノート2026-11-01確認 / 版ごとの変更点
- Laravel Sanctum:Guard.php(4.x)2026-11-01確認 / SanctumがTokenGuardとは別のクラスでトークンを探すこと
- Laravel公式:Release Notes(Support Policy)2026-11-01確認 / 各系列のセキュリティの修正の提供期限
- Laravel公式:TokenGuard.php(v11.56.1)2026-08-25 / 11系に同じ確認が入っていること(10系はv10.50.4で同じ)
- 修正のコミット:github.com/laravel/framework/commit/9b21ce0a9bb2b2599978bc0b0df4abea952ad31cGitHub Advisoryの参考リンク / 修正の内容・経緯
- リリースノート:github.com/laravel/framework/releases/tag/v12.68.0GitHub Advisoryの参考リンク / 修正の内容・経緯
- リリースノート:github.com/laravel/framework/releases/tag/v13.29.0GitHub Advisoryの参考リンク / 修正の内容・経緯
あわせて読みたい記事
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などへの入れ替えと確かめ方を説明します。
Brotliの脆弱性の確認方法、PythonとNode.jsで対象かを確かめて直す(CVE-2026-111497、コード実行のおそれ)
圧縮形式Brotliの展開処理の脆弱性CVE-2026-111497(HTTP2Shell)は、米CISAが悪用を確認しています。Pythonのbrotli・brotlicffi、Node.jsの同梱版などで、自分の版と構成が対象かを確かめる方法と修正版を、言語ごとに説明します。
Starletteの脆弱性BadHost、Hostヘッダーでパスによる認証の確認を回避されるおそれ。FastAPIを上げても古い版が残る場合の確かめ方
Starletteの脆弱性CVE-2026-48710(BadHost)は、細工したHostヘッダーでrequest.url.pathを偽り、パスで判定するアクセスの確認を回避されるおそれがあります。9月2日にKEVに追加されました。FastAPI・vLLM・LiteLLMの下で古いStarletteが残る例と、間接依存の確かめ方を説明します。