Skip to content

CVE 回帰マトリクス

別の OIDC / OAuth / JOSE 実装に対して CVE が公表されたとき、本ライブラリにとっての問いは 「同じ欠陥が本ライブラリにも届きうるか、届かないとすれば構造的に何が防いでいるか」 です。コードレビューだけでは正直な答えは出せず、将来のリファクタで回避経路が再び開いてしまったときにビルドが落ちるテストが必要です。

本ページはそのテスト群の公開リストです。ここに載っている CVE には、少なくとも 1 本のユニット / fuzz テストが対応し、対象の経路を実際に呼び出して拒否動作を固定化しています。表の各行に挙げたファイル名・テスト名はリポジトリに実在します。

1 行がマトリクスに載るまで
他実装に対して報告された CVE を、まず欠陥クラスに還元します。そのクラスが本コードベースで到達可能かを調べ、到達するなら拒否テストで挙動を固定し、到達しないなら構造上そもそも成立しないことを示します。外部の CVEまったく別の実装に対して報告されたものその欠陥クラスalg confusion、kid traversal など個別事例ではなく形として捉える本ライブラリで到達可能かバージョン番号ではなく、このコードベースの構造に対して問うはい拒否テスト固定しておき、拒否が退行しないようにするいいえ構造上そもそも成立しない退行しうるものが存在しない
「影響を受けません」で終わる行はありません。欠陥が再び入り込んだら落ちるテストがあるか、そのコードに入り込む余地が無い理由が書かれているかのどちらかで、後者は該当コードを変更するたびに確認し直します。

表の読み方

  • CVE — 他実装に対する元の脆弱性開示です。本ライブラリに対する CVE 記録ではありません。テストが防ごうとしている 欠陥クラス を示すためのフィールドです。
  • クラス — 根本的な欠陥の種類(algorithm confusion、redirect_uri マッチング、PKCE ダウングレード等)。
  • RFC アンカ — テストが固定対象としている仕様セクション。
  • テスト — 該当箇所が退行したらビルドを落とすテスト。

JOSE / JWT 検証

CVEクラスRFC アンカテスト
CVE-2015-9235 (jsonwebtoken)alg=none 受理RFC 8725 §3.1internal/jose.FuzzJOSEParse (alg=none seed)
internal/tokens.TestVerify_AlgConfusion_HSUsingECPublicKeyBytesAsSecret
CVE-2016-10555 (jwt-simple)alg=HS256 受理、公開鍵を HMAC secret として使用RFC 8725 §2.1internal/tokens.TestVerify_AlgConfusion_HSUsingECPublicKeyBytesAsSecret
CVE-2015-2951 (jose4j)alg=none 受理RFC 8725 §3.1internal/jose.FuzzJOSEParse
CVE-2024-54150 (cjwt)algorithm confusionRFC 8725 §2.1internal/tokens.TestVerify_AlgConfusion_HSUsingECPublicKeyBytesAsSecret
CVE-2026-22817 / CVE-2026-27804 / CVE-2026-23552 (Hono JWT 2026 cluster)大文字小文字違いの alg=NONE で deny-list を回避RFC 8725 §3.1internal/jose.TestParseAlgorithm_CaseVariantsRejected
internal/jose.FuzzJOSEParse (case-variant seeds)
CVE-2026-33322 (MinIO OIDC)algorithm confusionRFC 8725 §2.1internal/tokens.TestVerify_AlgConfusion_HSUsingECPublicKeyBytesAsSecret
CVE-2026-48526 (PyJWT)非対称公開 JWK を HMAC 検証 secret として受理RFC 8725 §2.1internal/tokens.TestVerify_AlgConfusion_HSUsingECPublicKeyBytesAsSecret
CVE-2018-0114 (Cisco / node-jose)jwk ヘッダの盲信 — JWS 自身が運ぶ鍵で検証してしまうRFC 8725 §3.1–3.5internal/jose.TestParseSigned_HeaderInjection_NeverFetches
internal/jose.FuzzJOSEParse (jku seed)
CVE-2018-1000531 (inversoft prime-jwt)alg ヘッダのダウングレード + jwk ヘッダの盲信RFC 8725 §3.1internal/jose.TestParseSigned_HeaderInjection_NeverFetches
CVE-2017-11424 (python-jose 系)ヘッダ内の jku URL を辿って鍵を取得RFC 8725 §3.1internal/jose.TestParseSigned_HeaderInjection_NeverFetches
CVE-2019-7644 (Auth0 jsonwebtoken-koa)jwk ヘッダの盲信RFC 8725 §3.1internal/jose.TestParseSigned_HeaderInjection_NeverFetches
CVE-2026-34240 / GHSA-vm9r-h74p-hg97 (Dart jose)jwk ヘッダの盲信 — 検証側が攻撃者提供の鍵素材を検証候補鍵として扱ってしまうRFC 8725 §3.1–3.5internal/jose.TestParseSigned_HeaderInjection_NeverFetches
CVE-2025-59420 (Authlib)crit 拡張リストを無視RFC 7515 §4.1.11 / RFC 8725 §3.5internal/jose.TestParseSigned_CritHeaderRejectedAtVerify
CVE-2026-32597 (PyJWT)同じ crit 無視欠陥RFC 8725 §3.5internal/jose.TestParseSigned_CritHeaderRejectedAtVerify
CVE-2026-28498 (Authlib)未知 / 未対応の alg を渡された hash-binding verifier が fail-openRFC 8725 §3.1internal/jose.TestParseSigned_RejectsUnsupportedRegisteredAlg_NoFailOpen
CVE-2026-29000 (pac4j-jwt)JWE 復号を認証と取り違え、復号後の unsigned / plain inner JWT を受理RFC 8725 §3.1 / RFC 9101 §5.2internal/jar.TestVerify_RejectsJWEWrappedUnsignedJWT
CVE-2024-29371 (jose4j JWE 解凍 bomb)細工された JWE によるリソース枯渇RFC 8725 §3.11internal/jose.FuzzJOSEParse (oversize seed)
internal/parendpoint.FuzzPARFormBody
internal/introspectendpoint.FuzzIntrospectFormBody
internal/revokeendpoint.FuzzRevokeFormBody
CVE-2026-27962 (Authlib)攻撃者提供の jwk ヘッダを検証鍵として信頼RFC 7515 §4.1.3 / RFC 8725 §3.1internal/jose.TestParseSigned_HeaderInjection_NeverFetches
internal/clientauth.TestPrivateKeyJWTVerifier_KeySelectionIgnoresTheAssertionsOwnHeader
CVE-2026-48525 / CVE-2025-61920 (PyJWT / Authlib)oversized JOSE segment を拒否前に処理し、リソース枯渇RFC 8725 §3.11test/scenarios.TestEndpoints_OversizedJWSIsRefusedBeforeItIsDecoded

Authorize / redirect_uri

CVEクラスRFC アンカテスト
CVE-2024-10318 (NGINX OIDC リファレンスモジュール)フロントチャネル id_token が nonce バインディングなしに発行 → セッションフィクセーションOIDC Core §15.5.2 / RFC 9700 §2.1.2internal/authorize.TestRequest_Validate_RejectsImplicitAndHybridResponseTypes (response_type=code 限定)
internal/backchannel.TestSignLogoutToken_EmitsRequiredClaims (logout_token の typ 区別)
CVE-2024-8883 (Keycloak)redirect_uri パッチをワイルドカード / suffix で迂回RFC 6749 §3.1.2.3 / RFC 9700 §4.1internal/authorize.TestRequest_Validate_RedirectURIAttackVariants
CVE-2020-15234 (ory/fosite)大文字小文字違いの redirect_uri が登録値にマッチRFC 6749 §3.1.2.3internal/authorize.TestRequest_Validate_RedirectURIAttackVariants
GHSA-rfq3-w54c-f9q5 (ory/fosite)loopback redirect ルールでホスト / クエリの差し替えを許してしまった欠陥(修正後はポートのみが実行時に変動可)。本ライブラリは登録値との完全一致のみ許容するためさらに厳格RFC 6749 §3.1.2.3 / RFC 9700 §4.1internal/authorize.TestRequest_Validate_RedirectURIAttackVariants
CVE-2026-7571 (Keycloak)無効化したはずの implicit フロー制御を迂回。偽装したクライアント状態経由でフロントチャネルに access token が露出RFC 9700 §2.1.2internal/authorize.TestRequest_Validate_RejectsImplicitAndHybridResponseTypes
CVE-2026-3872 (Keycloak)ワイルドカード redirect_uri..;/ でパストラバーサルRFC 6749 §3.1.2.3 / RFC 9700 §4.1internal/authorize.TestRequest_Validate_RedirectURIAttackVariants
CVE-2026-7504 (Keycloak)ワイルドカード redirect_uri の authority / userinfo 部に複数の @ byte を混ぜてパーサを混乱させるRFC 6749 §3.1.2.3 / RFC 9700 §4.1internal/authorize.TestRequest_Validate_RedirectURIAttackVariants
CVE-2026-9689 (Keycloak)HTTP parameter pollution: 重複した OIDC 認可リクエストパラメータが、認可レスポンス側の重複パラメータとして反射されるRFC 6749 §3.1 / RFC 9700 §4.1internal/authorize.TestParseValues_DuplicateParameter
CVE-2026-44681 (Authlib)malformed な認可リクエストで、検証済みでない攻撃者指定 redirect_uri にリダイレクトしてしまう。正しくは first-party error を返すべきRFC 6749 §3.1.2.3 / RFC 9700 §4.1internal/authorizeendpoint.TestAuthorize_RejectsBadRedirectURIWithJSON
CVE-2026-32235 (Backstage auth-backend)DCR の redirect-URI allowlist を迂回RFC 6749 §3.1.2.3 / RFC 9700 §4.1internal/registrationendpoint.TestDCR_RegisteredRedirectURIIsMatchedByteExactly
internal/registrationendpoint.TestDCR_RejectsRedirectURIShapesThatBlurTheMatch

PKCE / コード交換

CVEクラスRFC アンカテスト
CVE-2024-23647 (authentik ≤2023.10.6, CVSS 6.1)/tokencode_challenge 無し で発行された code に対しても code_verifier を受理 — PKCE ダウングレード。本ライブラリは public / native client への非 PKCE 認可コード発行も /authorize で拒否し、token 側ガードは defense in depth として残すRFC 9700 §4.8 / RFC 7636 §4.6internal/authorize.TestRequest_Validate_PublicClientAlwaysRequiresPKCE
test/scenarios.TestScenario_PKCE_007_PublicClientCodeRequiresPKCE
internal/grants/authcode.TestExchange_NoPKCE_RejectsSmuggledVerifier
CVE-2025-4144 (Cloudflare workers-oauth-provider <0.0.5, CVSS 8.1)同じダウングレードを別エコシステムで再現。public / native client は非 PKCE code が発行される前に拒否されるRFC 9700 §4.8internal/authorize.TestRequest_Validate_PublicClientAlwaysRequiresPKCE
test/scenarios.TestScenario_PKCE_007_PublicClientCodeRequiresPKCE
internal/grants/authcode.TestExchange_NoPKCE_RejectsSmuggledVerifier

認可コード横取り(クロスクライアント取得)

CVEクラスRFC アンカテスト
GHSA-vh7g-p26c-j2cw (dexidp/dex, 2024)フロントチャネルで横取りした認可コードを 別の client_id で交換して、被害者向けに発行されたトークンを取得できた欠陥。構造的緩和は (code, client_id, redirect_uri[, code_verifier]) のタプル一致を交換時に強制することRFC 6749 §4.1.3 / OIDC Core §3.1.3.4internal/grants/authcode.TestExchange_RejectsClientMismatch
CVE-2026-4282 (Keycloak)shared single-use-object namespace 経由の認可コード偽造RFC 6749 §4.1.3op/store/contract.namespaceDisjoint
op/store/contract.namespaceConsumeIsScoped

クライアント認証 / private_key_jwt

CVEクラスRFC アンカテスト
CVE-2025-27370 (OIDF 連携、OIDC 系統)private_key_jwt aud confusion: 鍵を複数 AS で使い回したクライアントを、敵対 AS が中継してなりすましRFC 7523bis / FAPI 2.0 §5.2.2internal/clientauth.TestPrivateKeyJWTVerifier_AudIssuer_AcceptedViaAuxAudiences
CVE-2025-27371 (IETF 連携、OAuth 2.0 系統)同じ欠陥、OAuth プロファイル系統RFC 7523bisinternal/clientauth.TestPrivateKeyJWTVerifier_AudIssuer_AcceptedViaAuxAudiences
CVE-2020-15222 (ory/fosite < 0.31.0, GHSA-mh3m-8c74-74xh)private_key_jwtjti の一意性が強制されない — assertion replayRFC 7523 §3 / CWE-345internal/clientauth.TestPrivateKeyJWTVerifier_JTIReplay_Rejected
GHSA-v3q9-2p3m-7g43 (ory/fosite, 2020 cluster)同じ jti リプレイ欠陥クラスが別 GHSA として再開示されたもの。構造的緩和は同一(assertion の exp 期間中、jti ごとに 1 回限りの使用)RFC 7523 §3 / CWE-345internal/clientauth.TestPrivateKeyJWTVerifier_JTIReplay_Rejected
CVE-2026-1180 (Keycloak)動的クライアントの private_key_jwt 鍵解決時に jwks_uri 経由で SSRFRFC 7591 §2 / RFC 7523 §3internal/securefetch.TestPolicy_SSRFContract
CVE-2024-53861 (PyJWT)issuer の prefix を完全一致として受理RFC 7523 §3internal/clientauth.TestPrivateKeyJWTVerifier_IssuerMustMatchWholly
CVE-2026-11800 (Keycloak)client assertion の鍵選択またはアルゴリズム方針を JOSE ヘッダで誘導RFC 8725 §3.1internal/clientauth.TestPrivateKeyJWTVerifier_KeySelectionIgnoresTheAssertionsOwnHeader
internal/clientauth.TestPrivateKeyJWTVerifier_RejectsAlgOutsideClientPin
CVE-2026-48523 (PyJWT)登録済み JWK が verifier のアルゴリズム方針を拡張RFC 8725 §3.1internal/clientauth.TestPrivateKeyJWTVerifier_RegisteredKeyCannotWidenTheAlgorithmPolicy
CVE-2026-22746 (Spring Security)存在しない client_id の応答時間差によるアカウント列挙CWE-208internal/clientauth.TestVerifyClient_PrivateKeyJWT_UnknownClient_DummyVerifyShim
internal/clientauth.TestPrivateKeyJWTVerifier_NoKeysRunsTimingShim

Remote JWKS と fetch の安全性

CVEクラスRFC アンカテスト
CVE-2026-48522 (PyJWKClient)制限のない jwks_uri scheme でローカルまたは非 HTTP リソースを取得RFC 7591 §2internal/registrationendpoint.TestDCR_ClientMetadataIsTreatedAsAttackerInput
internal/jar.TestFetcher_JWKSURISchemeIsConstrainedToTheNetwork
CVE-2026-48524 (PyJWKClient)未知の kid により JWKS の再取得を無制限に強制RFC 8725 §3.10internal/jar.TestFetchFresh_BypassesFreshCacheThenThrottles
internal/jar.TestJWKSCache_SingleflightCollapsesConcurrentFetches

トークン introspection

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クラスRFC アンカテスト
CVE-2026-37979 (Keycloak)introspection の audience バイパス — confidential クライアントが audience 単位の委譲なしに別のリソースサーバ向けトークンの claim を取得できたRFC 7662 §2.2internal/introspectendpoint.TestHandler_JWTAccessToken_DifferentClient
internal/introspectendpoint.TestHandler_OpaqueAccessToken_DifferentClient
CVE-2026-8922 (Keycloak)失効条件の一方が他方を覆い隠し、失効済みトークンを active と判定RFC 7662 §2.2internal/introspectendpoint.TestEndToEnd_ActiveHonoursEveryRevocationInput

リフレッシュトークンのローテーション

CVEクラスRFC アンカテスト
CVE-2026-1035 (Keycloak)ローテーション強制の TOCTOU レースによるリフレッシュトークン再利用バイパスRFC 9700 §2.2.2 / RFC 6749 §6op/storeadapter/inmem.TestConsumeRefresh_Race
CVE-2026-9802 (Keycloak)再起動でプロセス内の stale-token 判定が初期化され、ローテーション済み refresh token をリプレイRFC 9700 §2.2.2 / RFC 6749 §6internal/grants/refresh.TestExchange_RotationVerdictSurvivesAProcessThatNeverSawTheRotation

セッションライフサイクル(フィクセーション / ローテーション)

CVEクラスRFC アンカテスト
GHSA-xhpr-465j-7p9q (Keycloak, 2024)メール検証経由の初回ログインフィッシング(CWE-384 セッションフィクセーション)。信頼境界をまたぐ前から存在していたセッションが検証後も有効なまま使われ、cookie を仕込んだ攻撃者が検証後の信頼に乗ってしまう欠陥。構造的緩和は信頼境界でセッション ID をローテーションし、CreatedAt は維持して攻撃者がローテーションを誘発しても寿命を延ばせないようにすることOIDC Core §3.1.2.7internal/sessions.TestManager_Rotate_IssuesFreshIDPreservingChooserGroup
internal/sessions.TestManager_Rotate_PreservesCreatedAt
CVE-2026-7507 (Keycloak)OIDC ログインのセッションフィクセーション → アカウント乗っ取り。事前に植えられた session ID が fresh authentication 後も生き残る欠陥。構造的緩和は、authorize / interaction 境界で fresh authn factor が完了した時点で cookie-bound session ID をローテーションし、古い session record を削除することOIDC Core §3.1.2.7internal/authorizeendpoint.TestInteractionPost_RotatesSessionIDAfterFreshAuthn
CVE-2025-68158 (Authlib)URL 上の interaction state を開始元とは別のブラウザが解決OIDC Core §3.1.2.7internal/authorizeendpoint.TestInteraction_ResolvesOnlyForTheBrowserThatStartedIt

Token exchange と custom grant

CVEクラスRFC アンカテスト
CVE-2026-1486 (Keycloak)custom grant の事前条件失敗後にもトークンを発行RFC 8693 §2.2.1internal/tokenendpoint.TestCustomGrant_NoTokenEscapesAFailedPrecondition
CVE-2026-9704 (Keycloak)token exchange が delegation parameter を黙って落として続行RFC 8693 §2.1test/scenarios.TestTokenExchange_DelegationParametersAreNeverSilentlyDropped

多要素認証(TOTP / step-up)

CVEクラスRFC アンカテスト
GHSA-9r3w-4j8q-pw98 (cal.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-7rw2 (Keycloak)二要素バイパス — 同じ構造クラス。同じ二層緩和(オーケストレータのステップ順序 + アダプタ側の Subject 必須ゲート)で対応RFC 6238 / OIDC Core §2(上と同じテスト群)
CVE-2026-37982 (Keycloak)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-9798 (Keycloak)CIBA 認証フローが interactive login 側の brute-force lockout を迂回し、別の credential-attempt budget を得ていたCIBA Core §7 / cross-factor lockout invariantinternal/authn/lockout.TestCrossFactorPivotTriggersLockout
CVE-2026-33473 / CVE-2025-43798 / CVE-2021-43177 (Vikunja / Liferay / devise-two-factor)TOTP コードを当該または前の time step でリプレイRFC 6238internal/authn/totp.TestVerify_ReplaysSameStepRejected
CVE-2026-28787 (OneUptime)WebAuthn ceremony challenge のリプレイWebAuthn Level 3 §13.4.3internal/authn.TestTickFactorScratchRoundtrip
internal/authn/passkey.TestAuthenticator_ChallengeComesOnlyFromServerHeldState
CVE-2026-6856 (Keycloak)vouch されていない direct attestation の AAGUID allowlist を受理WebAuthn Level 3 §6.4.4internal/authn/passkey.TestAAGUIDAllowlistOnlyDecidesOnAVouchedAAGUID
CVE-2026-22751 (Spring Security)one-time email code の同時使用で複数認証が成功one-time credential invariantinternal/authn/emailotp.TestContinueVerify_ConcurrentSubmissionsOfOneCodeYieldOneSuccess

DPoP / sender-constrained token

CVEクラスRFC アンカテスト
CVE-2026-54431 (liboauth2)DPoP proof が、公開鍵だけであるべき jwk ヘッダに private EC key material を含んでいても受理していたRFC 9449 §4.3 step 7internal/dpop.TestVerify_RejectsPrivateKeyInJWKHeader

mTLS クライアント ID

CVEクラスRFC アンカテスト
CVE-2026-22747 / CVE-2026-47838 (Spring Security)X.509 subject DN の文字列表現をパースして、細工された属性が別 ID と衝突RFC 8705 §2.1internal/mtls.TestVerifyTLSClientAuth_SubjectDN_CraftedNameDoesNotCollideOnceRendered
internal/mtls.TestVerifyTLSClientAuth_SubjectDN_MultiValuedMatcherDoesNotFlatten

Dynamic Client Registration

CVEクラスRFC アンカテスト
CVE-2026-22752 (Spring Authorization Server)未検証の client metadata による stored XSS、権限拡張、SSRFRFC 7591 §2internal/registrationendpoint.TestDCR_ClientMetadataIsTreatedAsAttackerInput
op/interaction.TestHTMLDriver_ClientDisplayNameCannotBecomeMarkup

JARM / レスポンス署名

CVEクラスRFC アンカテスト
CVE-2023-6927 (Keycloak)response_mode=form_post.jwt で CVE-2023-6134 を迂回 — JARM 追加時に bearer フローと同じ alg 制約が抜けたFAPI 2.0 Message Signing §5.4 / RFC 8725 §3.1internal/jarm.TestSigner_AlgIsES256_Structural
CVE-2023-6134 (Keycloak、親 CVE)元の form-post ダウングレード(6927 経由で追跡)RFC 8725 §3.1internal/jarm.TestSigner_AlgIsES256_Structural

エラーレスポンスの出力面(redirect / form_post)

authorize エンドポイントは、クエリ付きリダイレクトと自動送信される form_post HTML の 2 つの出力面でエラーを返します。どちらの面でも、敵対的な redirect_urierror_description が HTML 注入や open-redirect 連鎖を起こさないよう、RP 由来の byte 列をエスケープしなければなりません。

CVEクラスRFC アンカテスト
GHSA-27gc-wj6x-9w55 (Keycloak, 2024)error_description をエスケープせず HTML エラーページに反射してしまう欠陥(CWE-79 / CWE-601) — フィッシング / open-redirect 連鎖。二層の緩和: (1) error_description の値はハードコードされた sentinel 文字列のクローズドカタログで、RP の byte 列が直接届かない(2)通信路上では url.Values.Encode がリダイレクト面を percent-encode し、html.EscapeStringform_post 面の action=value= を共にエスケープRFC 6749 §4.1.2.1 / RFC 9700 §4.10internal/jarm.TestWriteFormPost_EscapesRedirectAndJWT
internal/authorizeendpoint.TestEmitPlainResponse_EncodesHostileBytes_NoXSS
internal/authorizeendpoint.TestEmitPlainResponse_StripsControlBytes

運用の可観測性(revoke の失敗が見えない問題)

CVEクラスRFC アンカテスト
GHSA-7mqr-2v3q-v2wm (ory/fosite)/revoke がストレージエラーを黙って握りつぶしていた欠陥。RFC 7009 §2.2 は通信路上の 200 応答を維持することを要求し続けるため、失効処理が実際に失敗しても運用側に観測可能な信号がない状態でした。本ライブラリは通信路上の 200 を維持しつつ、NotFound 以外のストア障害では token.revoke_failed 監査イベントを発火し、SOC ツール側で「気付かれにくい失敗」クラスを検知できるようにしていますRFC 7009 §2.2internal/revokeendpoint.TestHandler_RefreshToken_StoreFault_EmitsAudit

DoS / パース安全性

JOSE と各エンドポイントの fuzz ハーネスが、細工された入力でも panic を起こさないことを保証します:

対象fuzzer防いでいる CVE リスク
JOSE パースinternal/jose.FuzzJOSEParseRFC 8725 §3.11 / CVE-2024-29371(解凍 bomb), 2015 alg=none cluster
PAR エンドポイント bodyinternal/parendpoint.FuzzPARFormBodyCVE-2024-29371(CVSS 7.5、jose4j JWE 解凍 bomb)
Introspection エンドポイント bodyinternal/introspectendpoint.FuzzIntrospectFormBodyCVE-2024-29371
Revocation エンドポイント bodyinternal/revokeendpoint.FuzzRevokeFormBodyRFC 8725 §3.11 / CVE-2024-29371(panic を起こさないこと)

FuzzJOSEParse は parser が panic しないことを確認します。WithEncryptionKeyset を設定しない provider は JWE 形の request object を拒否しますが、設定した provider はネストした compact JWE を復号してから内側の JWS を検証します。JWE 経路には algorithm、encryption、nesting、key resolution ごとのテストがあります。入力形だけを根拠に依存ライブラリの advisory をカバーしたとは扱いません。

このリストに 意図的に 含めないもの

  • 本ライブラリ自身に対する CVE。 このマトリクスは advisory の最新台帳ではありません。CVE が発生した場合は SECURITY.md脆弱性報告 のフローで扱い、本ページで特定時点の件数を管理しません。
  • 依存ライブラリ側の欠陥。 これらは CI の govulncheck で追跡し、バージョン更新で解決します。この matrix には、対象となるライブラリ契約を専用テストで示せる場合だけ掲載します。入力形や任意機能を無効にしていることだけからはカバレッジを推測しません。
  • TLS / トランスポート層の欠陥 (例: GHSA-gr79-9v6v-gc9rGHSA-q8hq-4h99-fj7xGO-2026-5856)。本ライブラリは HTTP サーバを所有しないため、TLS の構成は組み込み側の責任です。runtime / 標準ライブラリの修正は core module が宣言する Go baseline と toolchain で取り込みます。この境界を確認するときは core の go.mod を参照してください。詳細は セキュリティ方針 を参照。
  • ライブラリが所有・実装していない outbound egress / SSRF 面 (例: CVE-2026-4874CVE-2026-1518CVE-2026-54430)。HTTP egress policy は組み込み側のネットワーク境界であり、Keycloak の backchannel-notification callback や liboauth2 の AWS-ALB JWKS fetch のような面は本ライブラリには存在しません。存在する OIDC jwks_uri SSRF クラスは上の CVE-2026-1180 でカバーしています。
  • RP callback 側の欠陥 (例: GHSA-3gx8-q682-38mxGHSA-wxw3-q3m9-c3jr)。nonce / state の保存と callback 検証は RP の責務です。OP は state を反射し、ID Token に nonce を載せますが、クライアント側 callback の session binding は所有しません。
  • SAML 側の欠陥 (例: GHSA-m9hp-7r99-94h5)。本ライブラリは SAML を実装しません(OP のみ)。
  • 追跡中だが未カバーの advisory。 ソースリポジトリ側の advisory queue は現在空です。将来 tracking 状態の advisory が追加された場合は、具体的なテストで契約を固定するまでこの公開 matrix には載せません。
  • CVE 番号が無い理論的攻撃。 仕様セクション(例: RFC 8725 §3.x)だけを動機としたテストはコードベースに存在しますが、欠陥クラスを既知の特定 CVE と紐づけられない限り本ページには載せません。

全体像

CVE 起点のテストは、他の 3 種の回帰素材と並んで存在します:

  1. 仕様シナリオ — リポジトリの test/scenarios/ が、CVE の有無に関わらず OIDC / OAuth / FAPI の仕様文言を直接カタログ化しています。
  2. OFCS 適合ハーネスOFCS 適合状況 を参照してください。OpenID Foundation 認定テストスイートが、FAPI 2.0 プランに沿って公開エンドポイントを end-to-end で実行します。
  3. Fuzz ハーネス — 上で列挙したものです。PR ごとに実行されます。

本ライブラリが回帰テストで固定化すべき CVE リスクがここに載っていない場合は Issue を起票してください。公開で議論すること自体が脆弱性に該当する内容であれば、脆弱性報告 のフローに従ってください。