Laravel Passportに、machine-to-machine向けの client_credentials トークンが、本来は紐づかない実在ユーザーとして解釈されるおそれのある認証回避 脆弱性 CVE-2026-39976 が見つかりました。GitHubのセキュリティアドバイザリでは深刻度はHigh、CVSS v3.1は7.1で、影響を受けるのは13.0.0以上13.7.1未満、修正版は13.7.1です。NVDでも同じ影響範囲と修正版が案内されています。
概要
今回の問題は、client_credentials トークンが本来ユーザーを持たないはずなのに、Laravel Passportの TokenGuard がそのトークン内の値をユーザーIDのように扱ってしまう点にあります。GitHubアドバイザリでは、league/oauth2-server が client_credentials トークンの JWT sub クレームにクライアント識別子を設定し、Passport 側の TokenGuard がそれを十分に検証せず retrieveById() に渡すことで、無関係の実在ユーザーへ解決される可能性があると説明しています。結果として、machine-to-machine用トークンが実ユーザーとして認証されるおそれがあります。
影響/対策バージョン
影響を受けるのは laravel/passport 13.0.0以上13.7.1未満です。修正版は13.7.1です。








