CVE 回帰マトリクス
別の OIDC / OAuth / JOSE 実装に対して CVE が公表されたとき、本ライブラリにとっての問いは 「同じ欠陥が本ライブラリにも届きうるか、届かないとすれば構造的に何が防いでいるか」 です。コードレビューだけでは正直な答えは出せず、将来のリファクタで回避経路が再び開いてしまったときにビルドが落ちるテストが必要です。
本ページはそのテスト群の公開リストです。カバー済みの節に載っている advisory には、少なくとも 1 本のユニット / fuzz テストが対応し、対象の経路を実際に呼び出して拒否動作を固定化しています。クラス単位でしか扱えないものと OP のスコープ外のものは、下の別の節に分けてあり、固定済みには数えていません。各項目に挙げたファイル名・テスト名はリポジトリに実在します。
項目の読み方
- 開示 — 他の実装に対して公表された元の advisory と、影響を受けたプロジェクト名です。本ライブラリに対する CVE 記録ではありません。テストが防ごうとしている 欠陥クラス を示すためのものです。各 ID は公開レコードにリンクしています。
- 欠陥クラス・仕様 — 根本的な欠陥の種類(algorithm confusion、redirect_uri マッチング、PKCE ダウングレード等)と、テストが固定対象としている仕様セクション。
- 回帰テスト — 該当箇所が退行したらビルドを落とすテストを
package.TestNameの形で示します。テストの下の注記は、そのテストのカバー範囲が advisory より狭いことを示します。
JOSE / JWT 検証
51 件回帰テストで固定
GHSA-pxh4-856f-4h89PyJWT
空の k を持つ対称 oct JWK でトークンを検証
RFC 7518 §6.4 / RFC 8725 §3.1
internal/jose.TestParseJWKSet_受信した JWK Set は、RejectsSymmetricKey kが空でも空でなくても対称鍵を返さない
GHSA-mgcc-cww5-fp2qgo-jose
過大な RSA 鍵を持つ JWK のパースによる CPU 枯渇
CWE-400
internal/dpop.TestVerify_8 KiB を超える DPoP proof は、埋め込まれたRejectsOversizedProof jwkを解析する前に拒否
GHSA-vvm8-gf78-28g4go-jose
JSON パース時の panic
CWE-248
internal/jose.FuzzJOSEParseJWS の入口が panic しないという契約internal/jose.FuzzDecodeJWKSetJWK Set の入口が panic しないという契約
GHSA-4w3g-jfj2-cw2qgo-jose
AES-CBC-HMAC の JWE 処理中の panic
RFC 7518 §5.2
internal/jose.TestDecrypt_CBC-HMAC のEncAllowList encはすべて、JOSE 層が何かを解析する前に拒否
GHSA-c67m-wr4h-2ccggo-jose
多数の署名または受信者を持つ JSON シリアライズの JWS / JWE による二乗の CPU 消費
RFC 7515 §7.2 / RFC 7516 §7.2
internal/jose.TestParseSigned_JWS のパースは compact 形式のみRejectsJSONSerialisationShapes internal/jose.TestDecrypt_64 受信者の general 形式 JWE を拒否RejectsJSONSerialisation
GHSA-p9j4-2j95-j4rvgo-jose
保護されていない JWE ヘッダが、値が空または null の保護済みフィールドを上書き
RFC 7516 §7.2.1
internal/jose.TestDecrypt_compact 形式には保護されていないヘッダがなく、それを持つ JSON JWE は不正RejectsJSONSerialisation
GHSA-v6h2-qj3f-2h6vgo-jose
巨大な RSA 鍵を持つ x5c チェーンに対する Header.Certificates() の CPU 枯渇
RFC 7515 §4.1.6
internal/jose.TestNoForbiddenJOSECallsx5cは信頼の根拠にならず、テスト以外のコードがCertificates()を呼ぶとビルドが失敗
GHSA-27pc-rm86-68pqgo-jose
JSON fork が、非公開型を埋め込んだ構造体への claim のデコードで panic
CWE-248
internal/jose.TestNoForbiddenJOSECalls受信した payload はencoding/jsonでデコードし、テスト以外のコードがjwt.ParseSigned、ParseSignedAndEncrypted、UnsafeClaimsWithoutVerification経由でこの fork に触れるとビルドが失敗
CVE-2015-9235jsonwebtoken
alg=none 受理
RFC 8725 §3.1
internal/jose.FuzzJOSEParsealg=none seedinternal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret internal/jose.TestParseAlgorithm_CaseVariantsRejected
CVE-2016-10555jwt-simple
alg=HS256 受理、公開鍵を HMAC secret として使用
RFC 8725 §2.1
internal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret internal/jose.FuzzJOSEParse
CVE-2015-2951jose4j
alg=none 受理
RFC 8725 §3.1
internal/jose.FuzzJOSEParseinternal/jose.TestParseAlgorithm_CaseVariantsRejected
CVE-2024-54150cjwt
algorithm confusion
RFC 8725 §2.1
internal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret
CVE-2026-22817CVE-2026-27804CVE-2026-23552Hono JWT 2026 cluster
大文字小文字違いの alg=NONE で deny-list を回避
RFC 8725 §3.1
internal/jose.TestParseAlgorithm_CaseVariantsRejected internal/jose.FuzzJOSEParsecase-variant seedsinternal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret
CVE-2026-33322MinIO OIDC
algorithm confusion
RFC 8725 §2.1
internal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret
CVE-2026-48526PyJWT
非対称公開 JWK を HMAC 検証 secret として受理
RFC 8725 §2.1
internal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret
CVE-2018-0114Cisco / node-jose
jwk ヘッダの盲信 — JWS 自身が運ぶ鍵で検証してしまう
RFC 7515 §4.1.3 / RFC 8725 §3.10
internal/jose.TestParseSigned_HeaderInjection_ NeverFetches internal/jose.FuzzJOSEParsejku seed
CVE-2018-1000531inversoft prime-jwt
alg ヘッダのダウングレード + jwk ヘッダの盲信
RFC 7515 §4.1.3 / RFC 8725 §3.1
internal/jose.TestParseSigned_HeaderInjection_ NeverFetches
CVE-2017-11424python-jose 系
ヘッダ内の jku URL を辿って鍵を取得
RFC 8725 §3.10
internal/jose.TestParseSigned_HeaderInjection_ NeverFetches
CVE-2019-7644Auth0 jsonwebtoken-koa
jwk ヘッダの盲信
RFC 7515 §4.1.3
internal/jose.TestParseSigned_HeaderInjection_ NeverFetches
CVE-2026-34240GHSA-vm9r-h74p-hg97Dart jose
jwk ヘッダの盲信 — 検証側が攻撃者提供の鍵素材を検証候補鍵として扱ってしまう
RFC 7515 §4.1.3 / RFC 8725 §3.10
internal/jose.TestParseSigned_HeaderInjection_ NeverFetches
CVE-2025-59420Authlib
crit 拡張リストを無視
RFC 7515 §4.1.11
internal/jose.TestParseSigned_CritHeaderRejectedAtVerify
CVE-2026-32597PyJWT
同じ crit 無視欠陥
RFC 7515 §4.1.11
internal/jose.TestParseSigned_CritHeaderRejectedAtVerify
CVE-2026-28498Authlib
未知 / 未対応の alg を渡された hash-binding verifier が fail-open
RFC 8725 §3.1
internal/jose.TestParseSigned_RejectsUnsupportedRegisteredAlg_ NoFailOpen
GHSA-jc38-x7x8-2xc8JOSE library
unprotected JWS ヘッダでアルゴリズムをダウングレード
RFC 8725 §3.1
internal/jose.TestParseSigned_RejectsMultiSignatureForm internal/jose.TestParseSigned_compact 限定とアルゴリズム allowlist を別々に検証RejectsUnsupportedRegisteredAlg_ NoFailOpen
CVE-2026-29000pac4j-jwt
JWE 復号を認証と取り違え、復号後の unsigned / plain inner JWT を受理
RFC 8725 §2.3 / RFC 9101 §6.1
internal/jar.TestVerify_RejectsJWEWrappedUnsignedJWT
CVE-2024-29371CVE-2025-62706jose4j / Authlib の JWE 解凍 bomb
細工された圧縮 JWE(zip)によるリソース枯渇。復号経路で展開後 plaintext の上限を適用
CWE-409
internal/jose.TestDecrypt_ZipBombResistance internal/jose.TestDecrypt_PlaintextSizeCap_ OverLimit
CVE-2026-27962Authlib
攻撃者提供の jwk ヘッダを検証鍵として信頼
RFC 7515 §4.1.3 / RFC 8725 §3.10
internal/jose.TestParseSigned_HeaderInjection_ NeverFetches internal/clientauth.TestPrivateKeyJWTVerifier_KeySelectionIgnoresTheAssertionsOwnHeader
CVE-2026-48525CVE-2025-61920PyJWT / Authlib
oversized JOSE segment を拒否前に処理し、リソース枯渇
CWE-400
test/scenarios.TestEndpoints_OversizedJWSIsRefusedBeforeItIsDecoded
CVE-2026-49852GHSA-gg9x-qcx2-xmrh
degenerate な HMAC 鍵で HS256 の偽造を許す。HS256 はアルゴリズム境界で拒否
RFC 8725 §2.2 / §3.5
internal/jar.TestParse_RejectsHMAC internal/tokens.TestVerify_HS256 の拒否だけを検証し、HMAC 鍵長の下限は検証しませんRejectsHS256AsMalformed
CVE-2026-27932GHSA-w5r5-m38g-f9f9
PBES2 p2c の無制限反復による JWE 鍵導出 DoS。PBES2 は KDF 前に拒否
RFC 7518 §4.8.1.2 / §8.6
internal/jose.TestDecrypt_AlgAllowList
空白を変えた PEM、DER 公開鍵、公開 JWK コンテナを HMAC secret として解釈
RFC 8725 §2.1
internal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret HS*は鍵を扱う前の parse 段階で拒否
CVE-2026-107722CVE-2026-107724fast-jwt
GHSA-7vr2-2fgp-9w7pAuthlib
同じ「鍵の再解釈」クラス。接頭辞付き PEM、生の公開 JWK JSON、PEM ガードを破る先頭バイト
RFC 8725 §2.1
internal/tokens.TestVerify_AlgConfusion_ HSUsingECPublicKeyBytesAsSecret
CVE-2026-102266PyJWK
GHSA-8m4g-j4wp-wgcgAuthlib
空の HMAC 鍵を受理
RFC 8725 §2.2 / §3.5
internal/tokens.TestVerify_RejectsHS256AsMalformed internal/jose.TestAlgorithm_許可リストに対称 alg がないので鍵に関係なく拒否IsAllowed
CVE-2026-107720fast-jwt
鍵が空または null のとき、署名なし JWT を受理
RFC 8725 §3.1
internal/jose.TestParseSigned_CaseVariantNoneRejected ParseSignedは鍵を取らず、常にnoneを拒否internal/tokens.TestVerify_鍵の検索に失敗したら拒否UnknownKidReturnsSignatureError
CVE-2026-96760Authlib
署名のない JSON JWS を、検証済みとして返した
RFC 7515 §7.2
internal/jose.TestParseSigned_RejectsJSONSerialisationShapes ParseSignedは compact 形式のみ
CVE-2026-107723fast-jwt
JSON 配列のペイロードで claim 検証を省略
RFC 7519 §7.2
internal/tokens.TestVerify_RejectsNonObjectPayloads internal/jar.TestVerify_RejectsNonObjectPayloads internal/dpop.TestVerify_RejectsNonObjectPayloads internal/clientauth.TestPrivateKeyJWTVerifier_RejectsNonObjectPayloads
CVE-2026-107721fast-jwt
clockTolerance: Infinity で exp / nbf の検査が無効化
RFC 7519 §4.1.4
internal/tokens.TestVerify_LeewayIsBoundedConstant internal/clientauth.TestPrivateKeyJWTVerifier_skew はパッケージ定数で、公開オプションがないExpLeewayIsBoundedConstant
CVE-2026-107719fast-jwt
検証結果のキャッシュが、期限切れの JWT を受理し続けた
RFC 7519 §4.1.4
internal/tokens.TestVerify_検証結果のキャッシュ自体がないExpiryTracksClockAcrossCalls
CVE-2026-103001PyJWT
呼び出し側が渡した options が書き換えられ、再利用時に claim 検査が無効化
CWE-374
internal/jar.TestNewVerifier_構築後に config を編集しても verifier の方針は変わらないIsolatedFromCallerConfig
CVE-2026-102269PyJWT
正規でない署名セグメントが、生トークンをキーにした失効リストをすり抜けた
RFC 7515 §5.2 / RFC 7519 §4.1.7
internal/clientauth.TestPrivateKeyJWTVerifier_ReplayKeysOnJTINotRawAssertion internal/dpop.TestVerify_同じReplayKeysOnJTINotRawProof jtiで署名し直したトークンは replay
GHSA-r39w-98wm-9pp6go-jose
指数 0 の RSA JWK がエラーなくデコードされ、その thumbprint の計算で panic した
RFC 7638 §3 / RFC 7518 §6.3.1
internal/jose.TestDecodeJWKSet退化した鍵は JWKS のデコード時に取り除かれるinternal/mtls.TestVerifySelfSigned_この鍵を含む登録済み client JWKS でも、使える鍵で認証が通るZeroExponentRSAKeyIgnored
Authorize / redirect_uri
18 件回帰テストで固定
CVE-2026-9086別の OP
大文字小文字を変えた javascript: / data: の redirect URI が検証を通過
RFC 3986 §3.1
internal/registrationendpoint.TestValidateRedirectURIs_scheme は allow-list の前にパースして小文字化する。redirect URI と post-logout URI、web と native の両クライアントが対象CaseVariantDangerousSchemes
GHSA-jj7h-c3hg-m23xAuthlib
loopback の例外を前方一致で判定し、http://localhost:[email protected]/cb が通過
RFC 8252 §7.3
internal/registrationendpoint.TestValidateRedirectURIs_登録時LoopbackUserinfoSmuggling internal/authorize.TestRequest_Validate_ LoopbackWildcardRejectsUserinfoSmuggling /auth側
GHSA-86wh-7qgj-4px7Doorkeeper
拒否の経路が、未検証の redirect_uri へリダイレクト
RFC 6749 §10.15
internal/authorizeendpoint.TestInteractionDelete_キャンセルはサーバに保存したリクエスト状態だけで応答し、拒否リクエストのDenyIgnoresRequestRedirectParams redirect_uri、client_id、response_typeは無視
CVE-2024-10318NGINX OIDC リファレンスモジュール
フロントチャネル id_token が nonce バインディングなしに発行 → セッションフィクセーション
OIDC Core §15.5.2 / RFC 9700 §2.1.2
internal/authorize.TestRequest_response_type=code 限定Validate_ RejectsImplicitAndHybridResponseTypes internal/backchannel.TestSignLogoutToken_logout token はEmitsRequiredClaims nonceを持たずtypも別なので、ID Token として通用しない
CVE-2024-8883Keycloak
旧 redirect_uri パッチをワイルドカード / suffix で迂回
RFC 6749 §3.1.2.3 / RFC 9700 §4.1
internal/authorize.TestRequest_Validate_ RedirectURIAttackVariants
CVE-2020-15234ory/fosite
大文字小文字違いの redirect_uri が登録値にマッチ
RFC 6749 §3.1.2.3
internal/authorize.TestRequest_Validate_ RedirectURIAttackVariants
GHSA-rfq3-w54c-f9q5ory/fosite
loopback redirect ルールでホスト / クエリの差し替えを許してしまった欠陥(修正後はポートのみが実行時に変動可)。本ライブラリは登録値との完全一致のみ許容するためさらに厳格
RFC 6749 §3.1.2.3 / RFC 9700 §4.1
internal/authorize.TestRequest_Validate_ RedirectURIAttackVariants
CVE-2026-7571Keycloak
無効化したはずの implicit フロー制御を迂回。偽装したクライアント状態経由でフロントチャネルに access token が露出
RFC 9700 §2.1.2
internal/authorize.TestRequest_Validate_ RejectsImplicitAndHybridResponseTypes
CVE-2026-3872Keycloak
ワイルドカード redirect_uri を ..;/ でパストラバーサル
RFC 6749 §3.1.2.3 / RFC 9700 §4.1
internal/authorize.TestRequest_Validate_ RedirectURIAttackVariants
CVE-2026-7504Keycloak
ワイルドカード redirect_uri の authority / userinfo 部に複数の @ byte を混ぜてパーサを混乱させる
RFC 6749 §3.1.2.3 / RFC 9700 §4.1
internal/authorize.TestRequest_Validate_ RedirectURIAttackVariants
CVE-2026-9689Keycloak
HTTP parameter pollution: 重複した OIDC 認可リクエストパラメータが、認可レスポンス側の重複パラメータとして反射される
RFC 6749 §3.1 / RFC 9700 §4.1
internal/authorize.TestParseValues_DuplicateParameter
CVE-2026-44681Authlib
malformed な認可リクエストで、検証済みでない攻撃者指定 redirect_uri にリダイレクトしてしまう。正しくは first-party error を返すべき
RFC 6749 §4.1.2.1 / RFC 9700 §4.11.2
internal/authorizeendpoint.TestAuthorize_RejectsBadRedirectURIWithJSON internal/authorize.TestIsRedirectSafe_ParseTimeErrorsAreNeverRedirectSafe
CVE-2026-32235Backstage auth-backend
DCR の redirect-URI allowlist を迂回
RFC 6749 §3.1.2.3 / RFC 9700 §4.1
internal/registrationendpoint.TestDCR_RegisteredRedirectURIIsMatchedByteExactly internal/registrationendpoint.TestDCR_RejectsRedirectURIShapesThatBlurTheMatch
CVE-2026-12985dynamic client registration
動的登録で曖昧な redirect URI 形状を受理
RFC 6749 §3.1.2.3 / RFC 9700 §4.1
internal/registrationendpoint.TestDCR_登録時の形状拒否だけを検証RejectsRedirectURIShapesThatBlurTheMatch
pushed authorization request の request_uri を同時に再利用
RFC 9126 §2.2 / §4
op/store/contract.concurrentPARConsumestore 契約の勝者は 1 件。prompt=none の handler 固有経路は未検証
CVE-2026-41479Authlib
パース時の authorize エラーを未検証 redirect_uri にリダイレクト
RFC 6749 §4.1.2.1 / RFC 9700 §4.11.2
internal/authorize.TestIsRedirectSafe_redirect 安全性 predicate。ブラウザ全体のフローは未検証ParseTimeErrorsAreNeverRedirectSafe
GHSA-mxv6-xwqj-ww2pDuende
PAR で登録した request を、push したクライアントに束縛していなかった
RFC 9126 §2.2 / §4
internal/parendpoint.TestHandler_ClientIDMismatch_ Rejected internal/parendpoint.TestEndToEnd_PAR_ RequestURIBoundToPushingClient /authは別 client のrequest_uriを拒否し、レコードを消費しない
GHSA-q686-2qmg-hqc7Authlib
ID token の発行を、client 登録による絞り込みの外にある、要求そのままの scope で判断
OIDC Core 1.0 §3.1.2.1
internal/authorize.TestValidate_OpenIDScopeIsClampedToClientRegistration openidに例外はない
PKCE / コード交換
5 件回帰テストで固定
CVE-2024-23647authentik ≤2023.10.6, CVSS 6.1
/token が code_challenge 無し で発行された code に対しても code_verifier を受理 — PKCE ダウングレード。本ライブラリは public / native client への非 PKCE 認可コード発行も /auth で拒否し、token 側ガードは defense in depth として残す
RFC 9700 §4.8 / RFC 7636 §4.6
internal/authorize.TestRequest_Validate_ PublicClientAlwaysRequiresPKCE test/scenarios.TestScenario_PKCE_ 007_ PublicClientCodeRequiresPKCE internal/grants/authcode.TestExchange_NoPKCE_ RejectsSmuggledVerifier
CVE-2025-4144Cloudflare workers-oauth-provider <0.0.5, CVSS 8.1
同じダウングレードを別エコシステムで再現。public / native client は非 PKCE code が発行される前に拒否される
RFC 9700 §4.8
internal/authorize.TestRequest_Validate_ PublicClientAlwaysRequiresPKCE test/scenarios.TestScenario_PKCE_ 007_ PublicClientCodeRequiresPKCE internal/grants/authcode.TestExchange_NoPKCE_ RejectsSmuggledVerifier
CVE-2026-26247GHSA-m5ch-ppfx-xv3v
PKCE S256 を plain または challenge 無しへダウングレード
RFC 7636 §4.6 / RFC 9700 §4.8
internal/pkce.TestVerify_RejectsPlainMethod internal/tokenendpoint.TestAuthCode_PublicClient_ NoPKCE_ Rejected
CVE-2026-49265oauthlib
plain の verifier を文字列の等値比較で照合
RFC 7636 §4.6
internal/pkce.TestVerify_RejectsPlainMethod plainを拒否するので生の verifier は比較されず、S256 のダイジェスト比較は定数時間
CVE-2026-105119OpenAM
PKCE を response_type=code にしか強制していなかった
RFC 7636 §4.4 / RFC 9700 §4.8
internal/authorize.TestRequest_受理するのはValidate_ RejectsImplicitAndHybridResponseTypes codeだけなので、発行されるすべてのコードが PKCE 検査を通る
認可コード横取り(クロスクライアント取得)
5 件回帰テストで固定
GHSA-vh7g-p26c-j2cwdexidp/dex, 2024
フロントチャネルで横取りした認可コードを 別の client_id で交換して、被害者向けに発行されたトークンを取得できた欠陥。構造的緩和は (code, client_id, redirect_uri[, code_verifier]) のタプル一致を交換時に強制すること
RFC 6749 §4.1.3 / RFC 9700 §4.5 / OIDC Core §3.1.3.2
internal/grants/authcode.TestExchange_RejectsClientMismatch
CVE-2026-4282Keycloak
shared single-use-object namespace 経由の認可コード偽造
RFC 6749 §4.1.3
op/store/contract.namespaceDisjointop/store/contract.namespaceConsumeIsScoped
CVE-2026-53518GHSA-7w99-5wm4-3g79
認可コードの同時交換で複数リクエストが成功
RFC 6749 §4.1.3
op/store/contract.concurrentAuthCodeConsumestore 契約の勝者は 1 件
CVE-2026-16089認可コードと refresh token
認可コードと refresh token を別 client が交換可能
RFC 6749 §4.1.3 / RFC 6749 §6
internal/grants/authcode.TestExchange_RejectsClientMismatch test/scenarios.TestScenario_両方の grant type を検証REF_ 004_ RefreshClientMismatchRejected
CVE-2026-73179Apache CXF
コードの単回使用を、アトミックでない find してから delete の手順で強制
RFC 6749 §4.1.2
op/store/contract.concurrentAuthCodeConsumestore 契約: 勝者は 1 つ
クライアント認証 / private_key_jwt
17 件回帰テストで固定
GHSA-7984-qgvg-3j9coauthlib
あるクライアントを認証しながら、body の別の client_id に対して grant を認可
RFC 6749 §3.2.1
test/scenarios.TestScenario_CA_ COMMON_ 05_ BodyClientIDMismatchRejected test/scenarios.TestScenario_CA_ BASIC_ 05_ BasicHeaderBodyClientIDMismatch test/scenarios.TestAdvisory_body のBodyClientIDMismatchAcrossGrantsAndEndpoints client_idが不一致なら、refresh_token、client_credentials、PAR、introspection、revocation のいずれでもinvalid_client
CVE-2025-27370OIDF 連携、OIDC 系統
private_key_jwt aud confusion: 鍵を複数 AS で使い回したクライアントを、敵対 AS が中継してなりすまし
draft-ietf-oauth-rfc7523bis (Internet-Draft) / FAPI 2.0 Security Profile §5.3.2.1 item 8
internal/clientauth.TestPrivateKeyJWTVerifier_AudIssuer_ AcceptedViaAuxAudiences internal/clientauth.TestPrivateKeyJWTVerifier_AudOtherAS_ Rejected
CVE-2025-27371IETF 連携、OAuth 2.0 系統
同じ欠陥、OAuth プロファイル系統
draft-ietf-oauth-rfc7523bis (Internet-Draft)
internal/clientauth.TestPrivateKeyJWTVerifier_AudIssuer_ AcceptedViaAuxAudiences internal/clientauth.TestPrivateKeyJWTVerifier_AudOtherAS_ Rejected
CVE-2020-15222GHSA-mh3m-8c74-74xhory/fosite < 0.31.0
private_key_jwt の jti の一意性が強制されない — assertion replay
RFC 7523 §3 / CWE-345
internal/clientauth.TestPrivateKeyJWTVerifier_JTIReplay_ Rejected
GHSA-v3q9-2p3m-7g43ory/fosite, 2020 cluster
同じ jti リプレイ欠陥クラスが別 GHSA として再開示されたもの。構造的緩和は同一(assertion の exp 期間中、jti ごとに 1 回限りの使用)
RFC 7523 §3 / CWE-345
internal/clientauth.TestPrivateKeyJWTVerifier_JTIReplay_ Rejected
CVE-2026-1180Keycloak
動的クライアントの private_key_jwt 鍵解決時に jwks_uri 経由で SSRF
RFC 7591 §2 / RFC 7523 §3
internal/securefetch.TestPolicy_SSRFContract
CVE-2024-53861PyJWT
issuer の prefix を完全一致として受理
RFC 7523 §3
internal/clientauth.TestPrivateKeyJWTVerifier_IssuerMustMatchWholly
CVE-2026-11800Keycloak
client assertion の鍵選択またはアルゴリズム方針を JOSE ヘッダで誘導
RFC 8725 §3.1 / §3.10
internal/clientauth.TestPrivateKeyJWTVerifier_KeySelectionIgnoresTheAssertionsOwnHeader internal/clientauth.TestPrivateKeyJWTVerifier_RejectsAlgOutsideClientPin
CVE-2026-16093client assertion
署名なしの none assertion が、署名付き client 認証を要求する方針を満たす
RFC 8725 §3.1
internal/jose.TestParseSigned_CaseVariantNoneRejected internal/clientauth.TestVerifyClient_AllowedMethodsRejectsOutOfPolicy
CVE-2026-47426GHSA-f2cx-463q-7m2c
JWKS cache の kid 衝突が client 境界を越える
RFC 8725 §3.10
internal/clientauth.TestPrivateKeyJWTVerifier_client 単位の鍵選択を検証。cache 固有のテストはありませんKeySelectionIgnoresTheAssertionsOwnHeader
CVE-2026-48523PyJWT
登録済み JWK が verifier のアルゴリズム方針を拡張
RFC 8725 §3.1
internal/clientauth.TestPrivateKeyJWTVerifier_RegisteredKeyCannotWidenTheAlgorithmPolicy
CVE-2026-22746Spring Security
存在しない client_id の応答時間差によるアカウント列挙
CWE-208
internal/clientauth.TestVerifyClient_PrivateKeyJWT_ UnknownClient_ DummyVerifyShim internal/clientauth.TestPrivateKeyJWTVerifier_NoKeysRunsTimingShim
CVE-2026-53431client assertion
期限切れ client assertion を認証に受理
RFC 7523 §3
internal/clientauth.TestPrivateKeyJWTVerifier_期限切れ claim だけを固定RejectsExpired
GHSA-fch4-3c6x-j4gcAuthlib
JWT bearer grant が aud の有無しか確認しなかった(本 OP に jwt-bearer grant はなく、同じ束縛が client_assertion に効く)
RFC 7523 §3
internal/clientauth.TestPrivateKeyJWTVerifier_AudOtherAS_ Rejected
GHSA-c8r6-23w7-5q9pDoorkeeper
1 つのリクエストで複数のクライアント認証方式を受理
RFC 6749 §2.3
internal/clientauth.TestParse_AmbiguousBasicAndForm ErrAmbiguousCredentials
client_credentials で、Bearer のアクセストークンをクライアント認証として受理
RFC 6749 §2.3
internal/tokenendpoint.TestClientCredentials_BearerAccessTokenIsNotClientAuthentication 401 invalid_client、トークンは発行しない
Remote JWKS と fetch の安全性
3 件回帰テストで固定
CVE-2026-48522PyJWKClient
制限のない jwks_uri scheme でローカルまたは非 HTTP リソースを取得
RFC 7591 §2
internal/registrationendpoint.TestDCR_ClientMetadataIsTreatedAsAttackerInput internal/jar.TestFetcher_JWKSURISchemeIsConstrainedToTheNetwork
CVE-2026-48524PyJWKClient
未知の kid により JWKS の再取得を無制限に強制
CWE-400
internal/jar.TestFetchFresh_BypassesFreshCacheThenThrottles internal/jar.TestJWKSCache_SingleflightCollapsesConcurrentFetches
GHSA-x4rv-c3wx-4cr8Authlib
JAR の request_uri を、client が登録した request_uris と照合せずに fetch
RFC 9101 §5.2
internal/authorizeendpoint.TestFetchJARRequestURI_事前登録の検査がネットワーク fetch より前に働き、fetch はRejectsUnregisteredURI securefetchを通る
トークン introspection
3 件回帰テストで固定
Introspection を呼び出せるのは confidential caller だけです。public client または token_endpoint_auth_method=none の client は、トークン解決前に 401 invalid_client になります。confidential caller は自分が発行した access token / refresh token を introspect できます。別 client に発行された access token は、対象リソースが caller を ProtectedResource.IntrospectionClients に登録している場合だけ参照できます。refresh token を client 間で委譲することはなく、認可されていない別 client 向け access token は、他の inactive token と同じレスポンス形状になります。
CVE-2026-37979Keycloak
introspection の audience バイパス — confidential クライアントが audience 単位の委譲なしに別のリソースサーバ向けトークンの claim を取得できた
RFC 7662 §2.2
internal/introspectendpoint.TestHandler_JWTAccessToken_ DifferentClient internal/introspectendpoint.TestHandler_OpaqueAccessToken_ DifferentClient
CVE-2026-8922Keycloak
失効条件の一方が他方を覆い隠し、失効済みトークンを active と判定
RFC 7662 §2.2
internal/introspectendpoint.TestEndToEnd_ActiveHonoursEveryRevocationInput
CVE-2026-18208introspection
introspection が別 client のトークンまたは失効済みトークンを漏えい
RFC 7662 §2.2
internal/introspectendpoint.TestHandler_JWTAccessToken_ DifferentClient internal/introspectendpoint.TestHandler_2 ケースを別々に検証OpaqueAccessToken_ Revoked
アクセストークンの提示
4 件回帰テストで固定
GHSA-rvq5-wwqv-78pqGHSA-w4fh-qvv9-3v23MCP TypeScript SDK / MCP Python SDK
bearer の検証が、別のリソースサーバ向けに発行されたトークンを受理
RFC 9068 §4
op/rs.TestVerifier_AudienceShapes op/rsは構築時に audience を必須とし、JWT 経路ではそれを含まないaudをすべて拒否op/rs.TestVerifier_introspection 経路にも同じ規則を適用IntrospectedTokenObeysClaimRules
GHSA-c62j-746x-gfcrDoorkeeper
複数の方法で同時に提示されたトークンを認可
RFC 6750 §2
internal/userinfo.TestHandler_header と body の併用はPOST_ BothChannelsRejected invalid_request。query string は読まない
CVE-2025-7043ForgeRock
リフレッシュトークンをアクセストークンとして受理
RFC 6749 §7 / RFC 7662 §2.2
internal/userinfo.TestHandler_RefreshTokenAsBearerRefused internal/introspectendpoint.TestHandler_RefreshToken_ CarriesNoAccessTokenType
リフレッシュトークンのローテーション
9 件回帰テストで固定
CVE-2026-1035Keycloak
ローテーション強制の TOCTOU レースによるリフレッシュトークン再利用バイパス
RFC 9700 §4.14.2 / RFC 6749 §6
op/storeadapter/inmem.TestConsumeRefresh_Race
CVE-2026-9802Keycloak
再起動でプロセス内の stale-token 判定が初期化され、ローテーション済み refresh token をリプレイ
RFC 9700 §4.14.2 / RFC 6749 §6
internal/grants/refresh.TestExchange_RotationVerdictSurvivesAProcessThatNeverSawTheRotation
CVE-2026-53517GHSA-392p-2q2v-4372
refresh token の同時ローテーションで生きた後続トークンが 2 つに分岐
RFC 6749 §6 / RFC 9700 §4.14.2
op/store/contract.concurrentRefreshConsumeop/store/contract.concurrentRefreshRotationstore 契約で consume と rotation を検証
CVE-2026-86073GHSA-cw9w-vv67-hf73
refresh request の resource indicator が token audience を拡張
RFC 8707 §2.2 / RFC 6749 §6
test/scenarios.TestRefreshTokenIgnoresRequestSuppliedResourcerefresh 時は request parameter を無視
CVE-2026-53512GHSA-pw9m-5jxm-xr6h
refresh-token grant が confidential client 認証を要求しない
RFC 6749 §6
test/scenarios.TestRefreshTokenGrantRejectsMissingClientAuthenticationcredential 欠落ケース。誤った値とnoneの sibling test もあります
CVE-2026-16103deprovisioned subject
deprovision 済み subject が stale refresh / access token を交換可能
RFC 6749 §6
internal/tokenendpoint.TestDeprovisionedSubject_RefreshRefusedAndGrantTornDown test/scenarios.TestSubjectDeprovisioning_refresh と access token を検証。code と CIBA は sibling test で検証RefreshRefusedAndAccessTokenDead
CVE-2026-90997MySQL CLIENT_FOUND_ROWS
CLIENT_FOUND_ROWS が SQL store の single-use 消費を壊す
RFC 6749 §6 / store contract
op/storeadapter/sql.TestMySQL_MySQL 環境が必要ClientFoundRows_ FullContract
CVE-2026-101023Gitea
refresh grant がアクセストークンを受理
RFC 6749 §6
internal/tokenendpoint.TestRefreshGrant_JWT と opaque のアクセストークンAccessTokenPresentedAsRefreshTokenRefused
CVE-2026-107162Express Gateway
refresh grant がトークンを secret にも client にも束縛していなかった
RFC 6749 §6
test/scenarios.TestScenario_REF_ 004_ RefreshClientMismatchRejected
セッションライフサイクル(フィクセーション / ローテーション)
10 件回帰テストで固定
GHSA-84fg-x5h4-w8xv別の OP
step 完了の証跡を、クライアントが知り得る値から導いた cookie に保持
CWE-565
internal/authorizeendpoint.TestInteraction_平文やクライアントが計算できる値、別の interaction の cookie は拒否ProofCookieNotDerivableFromClientKnownValues
GHSA-mchc-246r-6m76別の OP
メールで送るリンクを、クライアントが指定した転送ヘッダから組み立て
OIDC Discovery 1.0 §3
test/scenarios.TestAdvisory_悪意あるEmittedURLsIgnoreHostHeaders Host、X-Forwarded-*、Forwardedヘッダは、OP が出力する絶対 URL を変えない
GHSA-q735-3ffp-vv6jDoorkeeper
所有者のいない grant すべてが、nil の resource owner を通じて一致
OIDC RP-Initiated Logout 1.0
internal/endsession.TestHandler_ログアウトの失効は空の subject を飛ばし、grant management はLogoutLeavesSubjectlessGrantUntouched grant_idとクライアントで引く
GHSA-xhpr-465j-7p9qKeycloak, 2024
メール検証経由の初回ログインフィッシング(CWE-384 セッションフィクセーション)。信頼境界をまたぐ前から存在していたセッションが検証後も有効なまま使われ、cookie を仕込んだ攻撃者が検証後の信頼に乗ってしまう欠陥。構造的緩和は信頼境界でセッション ID をローテーションし、CreatedAt は維持して攻撃者がローテーションを誘発しても寿命を延ばせないようにすること
CWE-384 / OIDC Core §3.1.2.3
internal/sessions.TestManager_Rotate_ IssuesFreshIDPreservingChooserGroup internal/sessions.TestManager_Rotate_ PreservesCreatedAt
CVE-2026-7507Keycloak
OIDC ログインのセッションフィクセーション → アカウント乗っ取り。事前に植えられた session ID が fresh authentication 後も生き残る欠陥。構造的緩和は、authorize / interaction 境界で fresh authn factor が完了した時点で cookie-bound session ID をローテーションし、古い session record を削除すること
CWE-384 / OIDC Core §3.1.2.3
internal/authorizeendpoint.TestInteractionPost_RotatesSessionIDAfterFreshAuthn
CVE-2025-68158Authlib
URL 上の interaction state を開始元とは別のブラウザが解決
CWE-384 / OIDC Core §3.1.2.3
internal/authorizeendpoint.TestInteraction_ResolvesOnlyForTheBrowserThatStartedIt
CVE-2026-97176Keycloak
ACR step-up が弱い認証レベルの再利用 session を受理
OIDC Core §3.1.2.3 / RFC 9470 §4
internal/authorizeendpoint.TestEndToEnd_ACRStepUp internal/authorizeendpoint.TestEndToEnd_step-up と報告 ACR を別々に検証SessionReuseReportsTheLevelReached
CVE-2026-105118OpenAM
end_session が署名未検証の id_token_hint を受理
OIDC RP-Initiated Logout 1.0 §2
internal/endsession.TestHandler_改ざんされた hint は、そのBadIDTokenSignature audが post-logout URI を採用する client を選ぶより前に 400 で拒否
CVE-2026-71575Apache CXF
max_age の検査で単位が合わず、比較が逆
OIDC Core 1.0 §3.1.2.1
internal/authorizeendpoint.TestEndToEnd_MaxAgeIsMonotoneAtEveryAcceptedValue internal/authorizeendpoint.TestEndToEnd_MaxAgeZeroAlwaysReauthenticates
CVE-2026-92227Joomla
MFA の完了前に remember-me のセッションを発行
OIDC Core 1.0 §2 (acr semantics)
internal/authorizeendpoint.TestEndToEnd_パスワードと TOTP の間には session cookie も record も存在しないMFAWithholdsSessionUntilSecondFactorCompletes
Token exchange と custom grant
4 件回帰テストで固定
CVE-2026-1486Keycloak
custom grant の事前条件失敗後にもトークンを発行
RFC 6749 §4.5
internal/tokenendpoint.TestCustomGrant_NoTokenEscapesAFailedPrecondition
CVE-2026-9704Keycloak
token exchange が delegation parameter を黙って落として続行
RFC 8693 §2.1
test/scenarios.TestTokenExchange_DelegationParametersAreNeverSilentlyDropped
CVE-2026-97846token exchange
token exchange が mTLS binding を落とし、scope を拡張
RFC 8693 §2.1
test/scenarios.TestScenario_TX_ 020_ MTLSBoundSubjectRequiresMatchingCert test/scenarios.TestScenario_binding と scope を別々に検証TX_ 009_ ScopeInflationRejected
CVE-2026-109374ZITADEL
token exchange が impersonation の検査を省略
RFC 8693 §2.1
test/scenarios.TestScenario_組み込み側の exchange policy は必須で、常に参照されるTX_ 011_ PolicyErrorPreservedVerbatim test/scenarios.TestScenario_TX_ 009_ ScopeInflationRejected
バックチャネル認証(CIBA)
1 件回帰テストで固定
CVE-2026-109082Keycloak
CIBA の利用を許可されていない client でも、バックチャネル認証リクエストを開始できた
CIBA Core 1.0 §13
internal/cibaendpoint.TestServe_RejectsClientWithoutCIBAGrant unauthorized_client
多要素認証(TOTP / step-up)
28 件回帰テストで固定
GHSA-9r3w-4j8q-pw98cal.com
TOTP コードを送るだけでパスワード検証を完全に飛ばせた欠陥 — primary factor の証明なしで TOTP ステップが進む
RFC 6238 / OIDC Core §2 (acr 意味論)
internal/authn.TestLoginFlowTOTPRequiresPrimaryオーケストレータ層internal/authn/totp.TestAuthenticator_BeginRequiresSubject internal/authn/totp.TestAuthenticator_アダプタ層ContinueRequiresSubject
GHSA-5jfq-x6xp-7rw2Keycloak
二要素バイパス — 同じ構造クラス。同じ二層緩和(オーケストレータのステップ順序 + アダプタ側の Subject 必須ゲート)で対応
RFC 6238 / OIDC Core §2
internal/authn.TestLoginFlowTOTPRequiresPrimaryinternal/authn/totp.TestAuthenticator_BeginRequiresSubject internal/authn/totp.TestAuthenticator_ContinueRequiresSubject
CVE-2026-37982Keycloak
required-action email link の one-time-use 意味論が壊れており、傍受された WebAuthn / TOTP enrollment link をリプレイして攻撃者の authenticator を登録できた
one-time credential invariant / OIDC Core §2 (amr 意味論)
internal/authn/emailotp.TestContinueVerifyReplayRejected
CVE-2026-9798Keycloak
CIBA 認証フローが interactive login 側の brute-force lockout を迂回し、別の credential-attempt budget を得ていた
CWE-307 / cross-factor lockout invariant
internal/authn/lockout.TestCrossFactorPivotTriggersLockout
CVE-2026-33473CVE-2025-43798CVE-2021-43177Vikunja / Liferay / devise-two-factor
TOTP コードを当該または前の time step でリプレイ
RFC 6238 §5.2
internal/authn/totp.TestVerify_ReplaysSameStepRejected
CVE-2026-20779GHSA-gx3v-q759-g323
TOTP のリプレイまたは失敗処理が lockout / replay gate を迂回
RFC 6238 / cross-factor lockout invariant
internal/authn/totp.TestVerify_LocksAtThirtyFailures internal/authn/totp.TestVerify_ReplaysSameStepRejected op/store/contract.totpAcceptReplayop/store/contract.totpConcurrentAcceptlockout、replay、store TOCTOU を検証
CVE-2026-96445MFA / proxy trust
信頼されていない forwarded header が client IP の識別を変え、または stale MFA enrollment を受理
MFA enrollment invariant / proxy trust boundary
internal/proxy.TestResolve_UntrustedRemote_ IgnoresForwardedHeaders op/store/contract.totpAcceptStaleEnrollmentproxy trust と stale enrollment を別々に検証
CVE-2026-28787OneUptime
WebAuthn ceremony challenge のリプレイ
WebAuthn Level 3 §13.4.3
internal/authn.TestTickFactorScratchRoundtripinternal/authn/passkey.TestAuthenticator_ChallengeComesOnlyFromServerHeldState
CVE-2026-6856Keycloak
vouch されていない direct attestation の AAGUID allowlist を受理
WebAuthn Level 3 §6.5 / §7.1
internal/authn/passkey.TestAAGUIDAllowlistOnlyDecidesOnAVouchedAAGUIDinternal/authn/passkey.TestAAGUIDAllowlistRequiresATrustedAttestationChain
CVE-2026-73313passkey
passkey assertion が未登録 credential を使用
WebAuthn Level 3 §7.2
internal/authn/passkey.TestCeremony_UnregisteredCredentialIsRefused
CVE-2026-72780GHSA-wg23-69c2-gjc8
passkey の sign counter と user-verification state が更新をまたいで失われる
WebAuthn Level 3 §7.2
internal/authn/passkey.TestAuthenticator_UVBitTravelsOnResult internal/authn/passkey.TestPersistCredentialReverseCompletionDoesNotRewindUV と counter を別々に検証
GHSA-6hxq-p678-4hr2passkey attestation
信頼されていない attestation の AAGUID が allowlist を満たす
WebAuthn Level 3 §6.5 / §7.1
internal/authn/passkey.TestAAGUIDAllowlistRequiresATrustedAttestationChain
CVE-2026-22751Spring Security
one-time email code の同時使用で複数認証が成功
one-time credential invariant
internal/authn/emailotp.TestContinueVerify_ConcurrentSubmissionsOfOneCodeYieldOneSuccess
CVE-2026-48505GHSA-mc5j-f6wx-h9qh
recovery code の同時交換で複数回成功
one-time credential invariant
op/storeadapter/inmem.TestRecoveryStore_ConsumeRaceSingleWinner op/store/contract.recoveryConcurrentConsume
CVE-2026-100679stoatchat
MFA チケットが最初の factor のユーザに束縛されていなかった
OIDC Core 1.0 §2
internal/authn.TestTick_chain をLaterFactorCannotRebindSubject ErrSubjectMismatchで終了。対照:TestTick_FirstFactorMayReplaceInheritedSubject
CVE-2026-73278Gitea
既存セッションを再利用するサインイン経路が、第二要素の要件を省略
OIDC Core §3.1.2.3
internal/authorizeendpoint.TestEndToEnd_SessionReuseStillEvaluatesLoginFlowRules LoginFlowのルールとDeciderを発行前に評価し、prompt=noneではinteraction_requiredを返す
CVE-2026-61630nginx-ignition
1 つの TOTP コードを、有効な時間幅の中で複数回受理
RFC 6238 §5.2
internal/authn/totp.TestVerify_ReplaysSameStepRejected op/store/contract.totpAcceptEarlierstore 契約: 過去の step は拒否
試行回数の制限がない経路を通る、TOTP やリカバリコードへの総当たり
CWE-307
op.TestProjectBuiltinStep_パスワードを含む組み込みの資格情報ステップはすべて subject ごとの 1 つのカウンタを共有。AttachesLockoutCounter WithAuthnLockoutStoreか、WithStoreの値が持つAuthnLockouts()で組み込まれるinternal/authorizeendpoint.TestEndToEnd_PasswordLockout_ LockedMatchesWrongPassword internal/authn/totp.TestVerify_LocksAtThirtyFailures internal/authn/recovery.TestAuthenticator_AttemptBudgetTracksRecordedFailures
CVE-2026-91982Vikunja
登録後に TOTP の secret が参照できる状態だった
CWE-200
op/totpkit.TestNewEnrolment_store には暗号文だけを保持し、封じた seed は該当 subject にしか開けないAADBindsSubject
CVE-2026-111911phpMyFAQ
WebAuthn の登録が challenge を検証せず、subject にも束縛しなかった
WebAuthn Level 3 §7.1
op/passkeykit.TestFinish_RejectsForeignChallenge op/passkeykit.TestFinish_登録前のユーザ認証は組み込み側の役割RejectsSubjectMismatch
処理後も WebAuthn の challenge が有効なまま
WebAuthn Level 3 §13.4.3
internal/authn.TestPasskeyChallengeIsSingleUseAfterSoftFailureinternal/authn.TestPasskeyChallengeRetiredAfterHardFailure
CVE-2026-107276MISP
CVE-2026-82761AshAuthentication
競合により、1 つのメールコードやマジックリンクで 2 回ログインが完了した(本 OP にマジックリンクはなく、単回使用の資格情報は同じ「勝者は 1 つ」の契約に従う)
one-time credential invariant
internal/authn/emailotp.TestContinueVerify_ConcurrentSubmissionsOfOneCodeYieldOneSuccess op/store/contract.emailOTPConcurrentConsumeop/store/contract.recoveryConcurrentConsume
CVE-2026-110862Better Auth
OAuth の state を、マジックリンクのトークンとして受理
one-time credential invariant
internal/authn.TestSingleUseSecretNamespacesAreDisjointリカバリコード、メール OTP、StateRefは互いに引き換えられない
DPoP / sender-constrained token
2 件回帰テストで固定
CVE-2026-54431liboauth2
DPoP proof が、公開鍵だけであるべき jwk ヘッダに private EC key material を含んでいても受理していた
RFC 9449 §4.3 step 7
internal/dpop.TestVerify_RejectsPrivateKeyInJWKHeader
CVE-2026-41707DPoP replay marker
DPoP replay marker が有効期限前に eviction される
RFC 9449 §11.1 / store contract
internal/dpop.TestVerify_verifier の期間を検証。Redis の noeviction 配置は引き続き必要ReplayAcrossFullIatWindow
mTLS クライアント ID
3 件回帰テストで固定
転送された scheme ヘッダを、どの接続元からでも信頼
RFC 7239 §8
op.TestWrapWithTrustedProxy_IgnoresUntrustedHeaders internal/proxy.TestResolve_転送ヘッダは、設定した trusted proxy からのものだけを受け付けるUntrustedRemote_ IgnoresForwardedHeaders
CVE-2026-22747CVE-2026-47838Spring Security
X.509 subject DN の文字列表現をパースして、細工された属性が別 ID と衝突
RFC 8705 §2.1
internal/mtls.TestVerifyTLSClientAuth_SubjectDN_ CraftedNameDoesNotCollideOnceRendered internal/mtls.TestVerifyTLSClientAuth_SubjectDN_ MultiValuedMatcherDoesNotFlatten
Dynamic Client Registration
7 件回帰テストで固定
CVE-2026-9705別の OP
registration access token が、管理者が無効にしたクライアントを再び有効化
RFC 7592
internal/registrationendpoint.TestManage_本 OP に無効状態はなく、運用者はクライアントを削除して取り除く。古い token は 401 になり、再作成できないOperatorDeletedClientRATCannotRecreate
CVE-2026-22752Spring Authorization Server
未検証の client metadata による stored XSS、権限拡張、SSRF
RFC 7591 §2
internal/registrationendpoint.TestDCR_ClientMetadataIsTreatedAsAttackerInput op/interaction.TestHTMLDriver_ClientDisplayNameCannotBecomeMarkup
CVE-2026-61466dynamic client registration
DCR が未知の scope を受理
RFC 7591 §2
internal/registrationendpoint.TestRegister_advisory の public-client 形状のケースはこのテストの対象外RejectsScopeNotInRegistry
GHSA-xwmw-prc4-v3crdynamic client registration
DCR metadata がエスケープされず HTML に到達し、未信頼の software statement を受理
RFC 7591 §2 / §3.1.1
internal/registrationendpoint.TestRegister_MetadataValidation_ 4xx op/interaction.TestHTMLDriver_XSS と software-statement 検証。広い trust-chain の主張はしないConsentClientNameEscaped
GHSA-c73q-w75p-j82vAuthlib
RFC 7592 の registration access token を対象 client と照合していなかった
RFC 7592 §2
internal/registrationendpoint.TestManage_GET、PUT、DELETE のいずれも、path のRead_ 4xx client_idでトークンを引く
CVE-2026-105306Keycloak
DCR が、呼び出し側の指定した、セキュリティ上重要な client 属性をそのまま保存
RFC 7591 §2
internal/registrationendpoint.TestRegister_メタデータは明示的な許可リストInternalClientAttributesNotWritable
CVE-2026-107623Keycloak
DCR の応答が設定を 1 つ欠いており、read-modify-write で失われた
RFC 7592 §2.2
internal/registrationendpoint.TestManage_GET して本文をそのまま PUT し、再度 GET しても応答は同一で、保存済み client も変わらないReadModifyWriteIsLossless
JARM / レスポンス署名
2 件回帰テストで固定
CVE-2023-6927Keycloak
response_mode=form_post.jwt による open redirect。CVE-2023-6134 の修正を迂回した。JARM 応答は固定の単一アルゴリズムで署名し、エスケープ付きの form_post writer で出力する
FAPI 2.0 Message Signing §5.4.1
internal/jarm.TestSigner_AlgIsES256_ Structural
CVE-2023-6134Keycloak、親 CVE
redirect_uri 検証の迂回。後に form_post.jwt 版で再び回避された(6927 経由で追跡)
RFC 6749 §3.1.2.3
internal/jarm.TestSigner_AlgIsES256_ Structural
エラーレスポンスの出力面(redirect / form_post)
2 件回帰テストで固定
authorize エンドポイントは、クエリ付きリダイレクトと自動送信される form_post HTML の 2 つの出力面でエラーを返します。どちらの面でも、敵対的な redirect_uri や error_description が HTML 注入や open-redirect 連鎖を起こさないよう、RP 由来の byte 列をエスケープしなければなりません。
GHSA-27gc-wj6x-9w55Keycloak, 2024
error_description をエスケープせず HTML エラーページに反射してしまう欠陥(CWE-79 / CWE-601) — フィッシング / open-redirect 連鎖。二層の緩和: (1) error_description の値はハードコードされた sentinel 文字列のクローズドカタログで、RP の byte 列が直接届かない(2)通信路上では url.Values.Encode がリダイレクト面を percent-encode し、html.EscapeString が form_post 面の action= と value= を共にエスケープ
RFC 6749 §4.1.2.1 / RFC 9700 §4.11.2 / CWE-79
internal/jarm.TestWriteFormPost_EscapesRedirectAndJWT internal/authorizeendpoint.TestEmitPlainResponse_EncodesHostileBytes_ NoXSS internal/authorizeendpoint.TestEmitPlainResponse_StripsControlBytes internal/jarm.TestWriteParamsFormPost_EscapesValues
CVE-2026-44203GHSA-fq9h-c788-fx73
form_post 出力が反射値をエスケープしない
RFC 6749 §4.1.2.1 / RFC 9700 §4.11.2 / CWE-79
internal/jarm.TestWriteFormPost_EscapesRedirectAndJWT internal/jarm.TestWriteParamsFormPost_両方の writer で HTML escaping を検証EscapesValues
運用の可観測性(失効の失敗が見えない問題)
2 件回帰テストで固定
GHSA-7mqr-2v3q-v2wmory/fosite
/revoke がストレージエラーを黙って握りつぶしていた欠陥。RFC 7009 §2.2 は通信路上の 200 応答を維持することを要求し続けるため、失効処理が実際に失敗しても運用側に観測可能な信号がない状態でした。本ライブラリは通信路上の 200 を維持しつつ、NotFound 以外のストア障害では token.revoke_failed 監査イベントを発火し、SOC ツール側で「気付かれにくい失敗」クラスを検知できるようにしています
RFC 7009 §2.2
internal/revokeendpoint.TestHandler_RefreshToken_ StoreFault_ EmitsAudit
CVE-2026-55221audit logging
交換可能な生の認可コードが audit log に漏れる
audit redaction invariant
internal/authorizeendpoint.TestEndToEnd_AuditNeverCarriesRawAuthorizationCode internal/audit.TestSlog_code digest と extra field の redactionRedactsExtrasWithoutWrapper
デバイス認可 grant
1 件回帰テストで固定
GHSA-3jp2-3mrg-2vxcoauthlib
device_code を検証せずに device_code の token を発行
RFC 8628 §3.4
test/scenarios.TestScenario_DEV_ 024_ TokenRequestMissingDeviceCode test/scenarios.TestAdvisory_発行されたことのない code では何も発行せず、設計どおりUnknownDeviceCodeMintsNoToken expired_tokenを返すtest/scenarios.TestScenario_別のクライアントに発行した code では何も発行しないDEV_ 027_ TokenRequestClientMismatch
DoS / パース安全性
JOSE と各エンドポイントの fuzz ハーネスが、細工された入力でも panic を起こさないことを保証します。下記の endpoint ハーネスは未認証の form envelope だけを検証し、認証後の token 処理や JWE 復号には到達しません。
| 対象 | fuzzer またはテスト | 防いでいる CVE リスク |
|---|---|---|
| JOSE パース | internal/jose.FuzzJOSEParse | CWE-400 / oversized compact JWS とアルゴリズム解析。ParseSigned だけを検証し、JWE 復号は含みません |
| JWE 復号 | internal/jose.TestDecrypt_ZipBombResistanceinternal/jose.TestDecrypt_PlaintextSizeCap_OverLimit | CVE-2024-29371、CVE-2025-62706(展開後 plaintext の上限) |
| PAR エンドポイント body | internal/parendpoint.FuzzPARFormBody | 未認証 form envelope のサイズ・パース制限。JWE は対象外 |
| Introspection エンドポイント body | internal/introspectendpoint.FuzzIntrospectFormBody | 未認証 form envelope のサイズ・パース制限。JWE は対象外 |
| Revocation エンドポイント body | internal/revokeendpoint.FuzzRevokeFormBody | 未認証 form envelope の panic 防止。JWE は対象外 |
FuzzJOSEParse は compact JWS を解析する jose.ParseSigned だけを対象とし、JWE 復号には入りません。WithEncryptionKeyset を設定しない provider は JWE 形の request object を拒否しますが、設定した provider はネストした compact JWE を復号してから内側の JWS を検証します。TestDecrypt_ZipBombResistance と TestDecrypt_PlaintextSizeCap_OverLimit が JWE 復号の plaintext 上限を直接固定します。入力形だけを根拠に依存ライブラリの advisory をカバーしたとは扱いません。
依存ライブラリ側の advisory(クラス単位のみ)
7 件クラス単位でのみ掲載
advisory registry は、これらを FuzzJOSEParse に紐づけています。この fuzzer は compact JWS のパースだけを行い、JWE 復号には入りません。いずれも依存ライブラリ自体の挙動を検証するテストは本リポジトリになく、限界が見えるようにここへ載せています。依存ライブラリの修正は govulncheck とバージョン更新で取り込みます。
GHSA-78h2-9frx-2jm8go-jose
細工された入力による JWE 復号時の panic
internal/jose.FuzzJOSEParse が ParseSigned の panic-free を保ちます。JWE 復号は検証しませんGHSA-c5q2-7r4c-mv6ggo-jose
圧縮による増幅。CVE-2024-29371 と同じクラスタ
ParseSigned に圧縮経路はありません。復号側の上限は前掲の CVE-2024-29371 行が担いますJSON 形式パースでの panic
internal/jose.TestParseSigned_RejectsJSONSerialisationShapes が compact-only 境界での拒否を固定します。依存ライブラリの JSON パーサーは対象外ですJWE の圧縮 DoS と悪意ある JWE パラメータ
ParseSigned は JWE パラメータに到達しません。直接のテストはありませんスコープ外 — 組み込み側の責務
36 件OP のスコープ外
下記の advisory は検討のうえ除外したものです。該当する面が OP に存在しないか、本ライブラリを組み込むアプリケーション側の責務です。テストでは固定しておらず、カバー済みとしても数えません。
GHSA-q84f-53jg-9ppmbetter-auth
デバイス承認ページが、要求元のクライアントとその scope を表示しなかった
op/devicecodekit の上に作ります。ApproveUserCode の godoc は、FindByUserCode で得たクライアントと scope をプロンプトに表示することを求めています。TLS 1.0 / 1.1 での応答、TLS 再ネゴシエーション DoS、SNI routing による mTLS 要件の迂回
token endpoint の URL、CIBA の通知 endpoint、AWS-ALB の JWKS resolver 経由の SSRF
jwks_uri の SSRF クラスは CVE-2026-1180 でカバーしています。RP が ID Token の nonce を保存・検証しなかった、またはブラウザのセッションに紐づけなかった
nonce を ID Token に載せます。GHSA-wxw3-q3m9-c3jrBetter Auth
CVE-2026-61687Hatchet
CVE-2026-62322python-social-auth
CVE-2026-84178Apache Camel
CVE-2026-84312Nginx-UI
CVE-2026-108738Traccar
ログイン CSRF。RP が OAuth の state を省略・誤った束縛・既定値のまま運用した
state の生成と callback での検証は RP の責務です。OP は state をそのまま返します(RFC 6749)。CVE-2026-79650Apache CXF
RP が攻撃者の制御する state をログイン後のリダイレクト先に使った
redirect_uri と post_logout_redirect_uri にしかリダイレクトしません。CVE-2026-62367Vikunja
CVE-2026-106460Backstage
CVE-2026-63472Vendure
CVE-2026-92161FriendsOfFlarum OAuth
RP が email_verified を無視し、メールアドレスだけで外部ログインを既存ローカルアカウントに紐づけた
email_verified を返します。CVE-2026-94276Apache APISIX
リソースサーバが、別の issuer で active な introspection 結果を受け入れた
未認証または無関係な subject への passkey / TOTP 登録、もしくは再認証なしでの登録
passkeykit と totpkit は subject を組み込み側から受け取るため、先にユーザを認証するのは組み込み側です(subject の束縛は op/passkeykit.TestFinish_RejectsSubjectMismatch が固定しています)。CVE-2026-100709Froxlor
ユーザ ID しか保持しない remembered-2FA トークン
RiskAssessor が供給します。ユーザ入力や同意なしでの device code 承認、取得済み確認リンクの再利用、最低認証レベルを無視した device grant
/device の確認ページは組み込み側が持ちます。OP は verification_uri_complete を発行するだけで、承認は devicecodekit.ApproveUserCode の明示的な呼び出しです。subject と auth_time は組み込み側が渡します。CVE-2026-49264oauthlib
revocation 応答に JSONP callback が反射された
CVE-2026-102275PyJWT
x と d が食い違う OKP JWK
CVE-2026-9800CVE-2026-9799Keycloak
Policy Enforcer の access-denied パス経由の認可バイパスと、UMA の permission ticket バイパス
GHSA-68wq-phq7-p2vgSilverStripe MFA
パスワードリセットのフローが MFA の完了前にセッションを発行した
このリストに 意図的に 含めないもの
- 本ライブラリ自身に対する CVE。 このマトリクスは advisory の最新台帳ではありません。CVE が発生した場合は
SECURITY.mdと 脆弱性報告 のフローで扱い、本ページで特定時点の件数を管理しません。 - 依存ライブラリ・ランタイム側の欠陥。 CI の
govulncheckで追跡し、バージョン更新で解決します。上の節に載せるのは、対象となるライブラリ契約を専用テストで示せる場合だけです。入力形や任意機能を無効にしていることはカバレッジとして扱いません。registry 上でクラス単位の扱いになっているものは、上の「依存ライブラリ側の advisory」にまとめています。Go 標準ライブラリの修正(例: Encrypted Client Hello の漏えいを扱うGO-2026-5856)は、core module が宣言する Go baseline と toolchain で取り込みます。この境界を確認するときは core のgo.modを参照してください。 - 追跡中だが未カバーの advisory。 ソースリポジトリの registry で
tracking状態にある advisory は、具体的なテストで契約を固定するまで本ページに載せません。固定した時点でカバー済みの節に加えます。 - CVE 番号が無い理論的攻撃。 仕様セクション(例: RFC 8725 §3.x)だけを動機としたテストはコードベースに存在しますが、欠陥クラスを既知の特定 CVE と紐づけられない限り本ページには載せません。
全体像
CVE 起点のテストは、他の 3 種の回帰素材と並んで存在します:
- 仕様シナリオ — リポジトリの
test/scenarios/が、CVE の有無に関わらず OIDC / OAuth / FAPI の仕様文言を直接カタログ化しています。 - OFCS 適合ハーネス — OFCS 適合状況 を参照してください。OpenID Foundation 認定テストスイートが、FAPI 2.0 プランに沿って公開エンドポイントを end-to-end で実行します。
- Fuzz ハーネス — 上で列挙したものです。seed corpus は PR ごとに通常のテストとして実行され、
make fuzzは seed を超えて探索します。
本ライブラリが回帰テストで固定化すべき CVE リスクがここに載っていない場合は Issue を起票してください。公開で議論すること自体が脆弱性に該当する内容であれば、脆弱性報告 のフローに従ってください。