The Keycloak Upgrade Ledger

Every upgrade we have rehearsed, with the environment stated and the clock running.

2026-08-31 · run 2026-08-31-cve-2026-16093-signed-jwt-assertion

CVE-2026-16093 spot-check: unsigned JWT client assertion rejected

Condition
CVE-2026-16093 (26.7.3: required signed-JWT assertion policy bypassable with unsigned assertion headers)

Method

Created a confidential client (jwt-assert-client) with clientAuthenticatorType=client-secret-jwt, then exercised the client_credentials grant with a JWT client assertion in both forms:

Result

AssertionResponse
HS256 (signed)HTTP 200 — access token issued
alg:none (unsigned)HTTP 400{"error":"invalid_client","error_description":"Invalid signature algorithm"}

Finding

26.7.3 rejects unsigned JWT client assertions (alg:none → "Invalid signature algorithm"), so the CVE-2026-16093 bypass is closed. The signed path is unaffected. This confirms the OIDC client-assertion fix in the 26.7.3 batch.

Still open (need external IdPs / dedicated harness)

← Back to the Ledger