<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Vulnerability Spoiler Alert - keycloak/keycloak</title>
    <link>https://spaceraccoon.github.io/vulnerability-spoiler-alert</link>
    <description>Vulnerability alerts for keycloak/keycloak</description>
    <language>en-us</language>
    <lastBuildDate>Tue, 01 Sep 2026 14:23:07 GMT</lastBuildDate>
    <atom:link href="https://spaceraccoon.github.io/vulnerability-spoiler-alert/feed/keycloak-keycloak.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>[HIGH] Authorization Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/668</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/668</guid>
      <pubDate>Wed, 26 Aug 2026 17:01:31 GMT</pubDate>
      <description>Before this patch, GroupPolicyProvider matched a bare group name from the token claim (e.g., &apos;Admins&apos;) against any allowed group&apos;s name, regardless of the group&apos;s position in the hierarchy. This allowed a user who was a member of a nested group with the same name as a different group to satisfy group-based authorization policies. The patch resolves bare names to top-level groups first and compares their IDs, falling back to full path matching only when no top-level group matches.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Consent Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/664</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/664</guid>
      <pubDate>Wed, 26 Aug 2026 16:18:51 GMT</pubDate>
      <description>The JWT Authorization Grant flow did not verify user consent before issuing tokens, allowing clients configured with &apos;consent required&apos; to obtain access tokens with scopes the user never approved. The patch adds a call to TokenManager.verifyConsentStillAvailable before granting tokens.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] HTTP Parameter Pollution in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/665</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/665</guid>
      <pubDate>Wed, 26 Aug 2026 16:21:19 GMT</pubDate>
      <description>Before the patch, OIDCRedirectUriBuilder did not remove OIDC-specific parameters (e.g., code, state, id_token) from the client-supplied redirect_uri query string or fragment. An attacker who can influence the redirect_uri (e.g., via wildcard registered redirect patterns) could inject reserved parameters, causing duplicate response parameters in the final redirect. Clients that use the first occurrence of a parameter would then process attacker-controlled values, leading to authorization code injection and account confusion.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-16089] [HIGH] Improper Authorization in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/666</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/666</guid>
      <pubDate>Wed, 26 Aug 2026 16:22:41 GMT</pubDate>
      <description>Prior to the patch, Keycloak authorization codes were not cryptographically bound to the client they were issued for. An attacker could obtain an authorization code for one client, modify the client UUID embedded in the code to match a different client, and redeem it to obtain tokens for that client. The patch adds the client UUID to the code record and verifies it during parsing to prevent such retargeting.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-16089</category>
    </item>
    <item>
      <title>[HIGH] Authorization Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/659</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/659</guid>
      <pubDate>Wed, 26 Aug 2026 13:43:46 GMT</pubDate>
      <description>The patch fixes a vulnerability where client-type property constraints could be bypassed for fullScopeAllowed, nodeReRegistrationTimeout, and authorizationServicesEnabled. Attackers with permission to create or update clients could set fullScopeAllowed=true even when the client type disallows it, allowing the client to request arbitrary scopes (including sensitive admin scopes) and escalate privileges. The fix enforces these constraints at the model layer by overriding the corresponding methods in TypeAwareClientModelDelegate and adding REST-layer checks for authorizationServicesEnabled.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[LOW] Information Disclosure in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/657</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/657</guid>
      <pubDate>Wed, 26 Aug 2026 12:26:27 GMT</pubDate>
      <description>The SAML ECP SOAP endpoint returned exception details in the SOAP fault detail element, which could include sensitive information such as client IDs or internal error reasons. Attackers could craft ECP AuthnRequests with candidate Issuer values and observe different fault details to enumerate valid client IDs or gain insight into the authentication flow. The patch replaces detailed error messages with a generic fault and logs the original exception server-side.</description>
      <category>low</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Information Disclosure in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/644</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/644</guid>
      <pubDate>Wed, 26 Aug 2026 06:03:30 GMT</pubDate>
      <description>The Keycloak `show-config` command printed the actual plaintext values of SPI options, including secrets such as vault passwords, database passwords, or custom provider credentials. Any local user with the ability to run the CLI could retrieve these secrets, leading to potential privilege escalation or further system compromise. The patch masks all SPI option values in `show-config` output to prevent this sensitive data exposure.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Insufficient Session Invalidation in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/598</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/598</guid>
      <pubDate>Tue, 25 Aug 2026 16:08:48 GMT</pubDate>
      <description>The OIDC RP-initiated logout endpoint accepted an &apos;initiating_idp&apos; query parameter that, when set to a broker alias, suppressed logout at that upstream identity provider. An attacker could craft a malicious logout URL containing this parameter to terminate the local Keycloak session while leaving the upstream IDP session active, enabling silent re-authentication without credentials on a shared device. The patch changes the default to ignore the parameter and requires an explicit server configuration option to restore the legacy behavior.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] HTTP Parameter Pollution in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/589</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/589</guid>
      <pubDate>Tue, 25 Aug 2026 09:15:16 GMT</pubDate>
      <description>The patch fixes an HTTP Parameter Pollution vulnerability in Keycloak&apos;s redirect URI validation. Before the fix, attackers could include OIDC response parameters (like &apos;state&apos;, &apos;code&apos;, &apos;session_state&apos;) in redirect_uri or post_logout_redirect_uri. Keycloak would append its own parameters, creating duplicates. This could allow an attacker to control the first parameter value seen by applications, bypassing CSRF protections or enabling open redirects. The patch rejects such URIs by default and improves query parameter replacement to handle percent-encoded names.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Authentication Bypass / Refresh Token Replay in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/588</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/588</guid>
      <pubDate>Tue, 25 Aug 2026 08:37:36 GMT</pubDate>
      <description>Before the patch, Keycloak&apos;s refresh token reuse detection only rejected a stale token if its issued-at timestamp (iat) was strictly less than the stored last refresh timestamp. If an old and new refresh token were issued in the same second their iat values were equal, allowing an attacker to replay a stolen refresh token after legitimate rotation and obtain new tokens. The patch stores the latest generated refresh token ID and uses &amp;lt;= comparison to catch same-second replays.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Improper Access Control in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/578</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/578</guid>
      <pubDate>Mon, 24 Aug 2026 19:09:26 GMT</pubDate>
      <description>Before the patch, the synthetic SSF event emitter resolved tenant subjects from arbitrary HTTPS URIs (last path segment) and any IssuerSubjectId without checking the issuer, and it treated a subscribed tenant as an independent allow signal. An attacker with the emit role could pair an unsubscribed or non-member user with a subscribed organization and have the event dispatched to that organization&apos;s subscribers, causing a signed SET to assert an identity relationship Keycloak never validated. The patch enforces strict tenant resolution (realm-owned URNs/realm issuer only), requires user membership in the tenant, and delegates user-subject gating to the native dispatcher.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Authorization Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/575</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/575</guid>
      <pubDate>Mon, 24 Aug 2026 14:57:17 GMT</pubDate>
      <description>The KeycloakIdentity class directly checked a user&apos;s role assignments for admin roles without verifying whether the authenticating client&apos;s scope included the role. This allowed a user with admin roles to exercise those roles through any client, even one whose client scope did not grant them, bypassing client scope restrictions. The patch adds checks to ensure that admin roles are only considered if the requesting client&apos;s scope includes them or the access token contains the role.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Authorization Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/535</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/535</guid>
      <pubDate>Fri, 21 Aug 2026 15:56:25 GMT</pubDate>
      <description>The FullScopeDisabled client policy executor did not enforce its restriction when the &apos;fullScopeAllowed&apos; attribute was omitted from a client registration or update request. Since Keycloak defaults fullScopeAllowed to true for new clients when the field is absent, an attacker could register a client without specifying fullScopeAllowed and still get a client with full scope allowed, bypassing the policy. The patch treats missing (null) values as true and adds update-specific logic to prevent the bypass.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Security Policy Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/532</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/532</guid>
      <pubDate>Fri, 21 Aug 2026 14:08:16 GMT</pubDate>
      <description>The ClientAccessTypeCondition evaluated the existing client&apos;s access type instead of the proposed type during client updates. This allowed clients to bypass client policies that restrict certain access types, e.g., a public client could be updated to confidential while retaining a forbidden configuration such as direct access grants enabled. The patch checks the proposed access type for update operations, ensuring the policy is enforced.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Improper Verification of Cryptographic Signature in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/511</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/511</guid>
      <pubDate>Thu, 20 Aug 2026 15:26:57 GMT</pubDate>
      <description>Keycloak did not verify signature on SAML LogoutResponse messages for clients that had &apos;requiresClientSignature&apos; enabled. An attacker could forge an unsigned LogoutResponse and submit it via a cross-site POST to Keycloak&apos;s SAML endpoint, causing the authenticated user&apos;s session to be terminated. The patch adds signature verification and returns HTTP 400 for invalid signatures.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Authentication Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/512</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/512</guid>
      <pubDate>Thu, 20 Aug 2026 15:27:41 GMT</pubDate>
      <description>The NotBeforeCheck logic in TokenManager used Math.min(realmNotBefore, clientNotBefore), allowing a refresh token issued after an older realm notBefore but before a newer client notBefore to bypass client-level revocation. An attacker with such a refresh token could continue to obtain new access tokens for a client that should have been revoked. The patch uses Math.max so tokens must be issued after both revocation timestamps.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Insecure Direct Object Reference (IDOR) in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/509</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/509</guid>
      <pubDate>Thu, 20 Aug 2026 14:13:29 GMT</pubDate>
      <description>Pushed Authorization Request (PAR) request_uri values were not bound to the realm or client that created them. This allowed a request_uri issued in one realm or for one client to be consumed by the authorization endpoint of another realm or client, potentially leading to cross-tenant authorization flow confusion or bypassing client-specific policies. The patch stores the realm ID in the cache key and the client ID in the PAR data, and validates them on retrieval.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Authentication Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/507</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/507</guid>
      <pubDate>Thu, 20 Aug 2026 11:01:14 GMT</pubDate>
      <description>The Google identity provider can be configured with a hostedDomain restriction, but the external token exchange v1 flow did not enforce it. An attacker with a Google account outside the allowed domain could present a valid Google access token to the token-exchange endpoint and obtain a Keycloak identity, bypassing the domain allowlist. The patch validates the &apos;hd&apos; claim from userinfo during external token exchange.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Authentication Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/504</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/504</guid>
      <pubDate>Thu, 20 Aug 2026 09:49:08 GMT</pubDate>
      <description>Before the patch, a Keycloak Microsoft identity provider configured with a specific Entra tenant still accepted external OAuth tokens from any Microsoft tenant during token exchange, because the exchange validated the access token via Microsoft Graph without comparing the token&apos;s `tid` claim to the configured tenant. An attacker with a valid Microsoft account in another tenant could exchange their token and obtain a Keycloak session/access token, bypassing the IdP&apos;s tenant allowlist. The patch reads `tid` from the subject token and rejects it with `invalid_token` if the configured tenant is restricted and does not match.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-18963] [CRITICAL] Authentication Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/503</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/503</guid>
      <pubDate>Thu, 20 Aug 2026 09:10:00 GMT</pubDate>
      <description>The ResetCredentialEmail authenticator&apos;s action() method unconditionally called context.success(), allowing an attacker who has initiated a password reset to advance the flow to the password change form without clicking the emailed reset link. This enabled account takeover by resetting any user&apos;s password without access to their email. The patch adds validation that the current user matches the action token user ID, and also ties the &apos;try another way&apos; selector note to a specific execution ID.</description>
      <category>critical</category>
      <category>confirmed</category>
      <category>CVE-2026-18963</category>
    </item>
    <item>
      <title>[MEDIUM] Security Feature Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/496</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/496</guid>
      <pubDate>Wed, 19 Aug 2026 20:24:51 GMT</pubDate>
      <description>The SSF transmitter listener dereferences event.getDetails() without checking for null when processing logout events, causing a NullPointerException. This occurs during RP-initiated logout without a post_logout_redirect_uri, where details are not populated. The exception prevents the SSF listener from sending the required logout security event token (SET) to relying parties, thereby bypassing the session revocation notification mechanism. The patch adds null checks and treats missing details as a real logout / non-expiration.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Path Traversal in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/491</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/491</guid>
      <pubDate>Wed, 19 Aug 2026 14:05:47 GMT</pubDate>
      <description>The JavaKeystoreKeyProviderFactory validation did not normalize the resolved keystore path before checking that it stayed within the realm directory. An attacker with permission to create a key provider could specify a keystore path containing &apos;../&apos; to escape the intended directory and load a keystore file from elsewhere on the server filesystem. The patch normalizes both the realm directory and final keystore path before the startsWith check.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Broken Access Control in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/471</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/471</guid>
      <pubDate>Tue, 18 Aug 2026 21:00:11 GMT</pubDate>
      <description>Keycloak Admin API endpoints for retrieving composite roles did not enforce FGAP view permissions on child roles. An administrator with permission to view a parent role could enumerate all composite roles, including roles they were not authorized to view, leaking role names and IDs. The patch adds filtering by auth.roles().canView() to the relevant composite retrieval methods.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Broken Access Control in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/469</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/469</guid>
      <pubDate>Tue, 18 Aug 2026 20:37:43 GMT</pubDate>
      <description>In Keycloak with fine-grained admin permissions v2 enabled, endpoints for user/group role mappings failed to verify that the caller has view permission on the client or role. As a result, an admin with view permission on a user or group could query role mappings for any client and receive role representations (names, IDs, attributes) for clients they were not authorized to view. The patch adds auth.roles().requireView(client) and filters role mapping streams based on role container permissions.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Broken Access Control in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/468</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/468</guid>
      <pubDate>Tue, 18 Aug 2026 19:55:34 GMT</pubDate>
      <description>When Fine-Grained Admin Permissions (FGAP) were enabled, the in-memory client listing implementation incorrectly set &apos;canView&apos; to true for all users with the list permission, bypassing per-client authorization checks. This allowed any user with list permission to retrieve all clients in the realm, even if they lacked view permission on specific clients. The patch removes the in-memory listing path and requires the SCIM backend, which enforces proper FGAP filtering.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Broken Access Control in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/454</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/454</guid>
      <pubDate>Tue, 18 Aug 2026 13:26:02 GMT</pubDate>
      <description>The admin UI extension endpoints returned composite role mappings without checking whether the caller had VIEW permission on each composite role. This allowed users with limited administrative permissions to enumerate hidden roles and clients they were not authorized to view. The patch filters roles with auth.roles().canView() before returning them.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Insufficient Session Invalidation in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/452</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/452</guid>
      <pubDate>Tue, 18 Aug 2026 10:20:14 GMT</pubDate>
      <description>Before the patch, Keycloak&apos;s &apos;Sign out of other devices&apos; on credential reset only invalidated completed user sessions, leaving in-progress authentication sessions where a user had already authenticated with the old password. An attacker could have initiated authentication before the reset and then completed the remaining steps afterward to obtain a valid session. The patch adds removal of these in-progress root authentication sessions for the user, except the current reset session.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Improper Validation of Client URI Field (Security Policy Bypass/XSS) in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/451</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/451</guid>
      <pubDate>Tue, 18 Aug 2026 10:00:49 GMT</pubDate>
      <description>The SecureClientUrisExecutor policy validates that client URI fields use secure schemes (e.g., HTTPS). Prior to this commit, the OIDC front-channel logout URL (frontchannel_logout_uri) was omitted from validation, allowing clients subject to the policy to register a malicious URI such as javascript:alert(document.cookie). When a user logs out, Keycloak renders the front-channel logout URL in an iframe, leading to XSS on the Keycloak origin. The patch adds the field to both the executor and pattern executor, ensuring it is validated.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Sensitive Data Exposure in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/449</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/449</guid>
      <pubDate>Tue, 18 Aug 2026 09:02:26 GMT</pubDate>
      <description>Before the patch, regenerating a client&apos;s registration access token through the admin API caused the live bearer token to be stored in the admin event representation. Any user with permission to view admin events (e.g., the &apos;view-events&apos; realm role) could retrieve this token and use it to access the OIDC Client Registration endpoint, gaining unauthorized control over the client configuration. The patch masks the registration access token in stripClient() and ensures the admin event receives the masked value while the API response still contains the real token.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Sensitive Data Exposure in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/447</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/447</guid>
      <pubDate>Tue, 18 Aug 2026 08:23:58 GMT</pubDate>
      <description>Before the patch, client attributes ending with &apos;private.key&apos; were included unmasked in admin events generated during client create/update/import. An attacker with view-events permission (but not manage-clients) could retrieve these events and obtain private keys of clients, enabling impersonation or token forgery. The patch masks these attributes in admin events.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Incorrect Authorization in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/426</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/426</guid>
      <pubDate>Mon, 17 Aug 2026 19:45:12 GMT</pubDate>
      <description>The workflow event providers matched role events by bare role name, failing to distinguish realm roles from client roles. An attacker with permission to manage client roles could create a client role with the same name as a realm role used in a workflow, then grant that client role to a user, causing the workflow to execute and potentially escalate privileges. The patch resolves the expected role based on realm or client and compares role IDs.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Improper Access Control in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/424</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/424</guid>
      <pubDate>Mon, 17 Aug 2026 19:17:02 GMT</pubDate>
      <description>The workflow event provider compared the configured group path string directly against the group path generated by KeycloakModelUtils.buildGroupPath(). A group name containing a slash (e.g., &apos;Parent/Child&apos;) produces the same path as a nested group structure, causing workflows intended for nested groups to trigger for slash-named top-level groups. An attacker with permission to create and join groups could trigger admin-configured workflows (e.g., granting attributes or roles) without being in the intended nested group. The patch resolves the configured path to an exact group ID using findGroupByPath(), eliminating the path collision.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Cross-Site Scripting (XSS) via URI Scheme Injection in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/422</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/422</guid>
      <pubDate>Fri, 14 Aug 2026 15:27:32 GMT</pubDate>
      <description>During partial realm import, client representations were persisted without validating the baseUrl (and other client URI fields) against allowed URI schemes, unlike full realm import and single client creation which already enforced this check. This allowed an administrator or an imported realm/config file to create a client with a baseUrl using the &apos;javascript:&apos; scheme, which could later be rendered/executed in the context of the admin console or client application, leading to stored XSS or client-side script execution.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Broken Access Control / Authorization Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/412</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/412</guid>
      <pubDate>Tue, 11 Aug 2026 21:45:50 GMT</pubDate>
      <description>The SCIM user extension attribute writer did not check whether an attribute was read-only (i.e., not permitted for editing) according to the User Profile configuration before writing its value to the user model. This allowed SCIM PATCH/PUT requests to modify custom user-profile attributes that were configured as view-only (no edit permission), bypassing the access-control restrictions enforced elsewhere (e.g., via the Admin REST API or UserProfile-based update logic).</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Information Disclosure / Improper Access Control (Response Data Integrity) in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/411</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/411</guid>
      <pubDate>Tue, 11 Aug 2026 21:45:37 GMT</pubDate>
      <description>The SCIM UserResourceTypeProvider echoed the client-supplied request payload back as the response after create/update, rather than reflecting the actual persisted model state. Because the user-profile permission system can silently reject writes to protected attributes (e.g., admin-managed attributes) without failing the request, the SCIM response would still show the attacker-supplied value as if it were saved, even though the underlying UserModel retained the original (admin-set) value. This allows an attacker with SCIM write access to attributes that they don&apos;t have edit permission for to observe/believe their write succeeded (misleading response), and more importantly, any client trusting the SCIM response for authorization or display could be misled about which value is actually in effect, creating confusion and potential for further attacks relying on the mismatch (e.g., cached incorrect state, downstream logic decisions based on the wrong value).</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Broken Access Control / Information Disclosure (missing Fine-Grained Admin Permissions check on SCIM filter attributes) in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/410</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/410</guid>
      <pubDate>Tue, 11 Aug 2026 19:18:32 GMT</pubDate>
      <description>The SCIM filter predicate evaluator allowed filtering Users by &apos;groups.value&apos; and Groups by &apos;members.value&apos; without checking whether the caller has FGAP (Fine-Grained Admin Permissions) view authorization on the referenced group/user. This let an admin with restricted group/user visibility use SCIM filter queries (eq, co, sw, pr, ne, etc.) to infer membership in groups or users they are not authorized to view, bypassing the FGAP access model and leaking relationship data as an oracle. The patch adds an authorization callback that verifies VIEW permission on the target group/user before allowing the predicate, and blocks unsafe operators (only &apos;eq&apos; with a verified target is allowed) as well as NOT-wrapping of authorized predicates to prevent inversion into a membership-leaking oracle.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Information Disclosure / Improper Access Control in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/409</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/409</guid>
      <pubDate>Tue, 11 Aug 2026 18:05:17 GMT</pubDate>
      <description>The SCIM Users API&apos;s `groups` attribute exposed organization groups and the organization&apos;s internal backing group to callers holding only `view-users`/`manage-users` permissions, bypassing the intended boundary that restricts organization-related groups to the Organization API. This leaked organization membership and group metadata that should not be accessible via SCIM, violating the isolation enforced elsewhere (e.g. the SCIM Groups resource and the SCIM user write path).</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Sensitive Information Exposure / Improper Output Neutralization in Audit Logs in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/407</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/407</guid>
      <pubDate>Tue, 11 Aug 2026 16:11:36 GMT</pubDate>
      <description>Before the patch, the SSF emit endpoint persisted the verbatim caller-supplied event payload (request.getEvent()) into the admin audit event log without sanitization, allowing arbitrary free-form fields and PII (e.g. email addresses, custom sensitive attributes, reason_admin/reason_user localized messages) supplied by a management client to be stored in the admin event store. This could expose PII or sensitive data to anyone with access to admin audit logs, and allowed injection of arbitrary attacker-controlled data into audit records. The patch replaces this with a typed SsfEvent.createAdminDetails() hook that only whitelists specific safe fields (credential_type, change_type, status, reason, etc.), ensuring free-form/PII fields never reach the audit log.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Missing Authorization / Privilege Escalation in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/404</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/404</guid>
      <pubDate>Tue, 11 Aug 2026 07:33:23 GMT</pubDate>
      <description>When creating a new user via the admin REST API, group memberships specified in the UserRepresentation were assigned without checking whether the admin had &apos;manage-membership&apos; permission on the target groups. This allowed an admin with only user-creation privileges (but not group membership management) to add newly created users to arbitrary groups, including groups with elevated privileges, bypassing fine-grained admin permission (FGAP) checks.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[HIGH] Authorization Bypass / Policy Evaluation Context Manipulation in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/405</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/405</guid>
      <pubDate>Tue, 11 Aug 2026 07:33:44 GMT</pubDate>
      <description>Before the patch, a client could supply a claim_token with claims using the reserved &apos;kc.&apos; prefix (e.g., kc.client.id, kc.realm.name, kc.time.date_time), which would override or spoof server-controlled evaluation context attributes used by authorization policies. Additionally, when both a UMA permission ticket and a claim_token contained claims with the same key, the claim_token value silently overrode the ticket value, allowing a requesting party to override claims that a resource server intentionally set when creating the permission ticket, potentially bypassing intended policy restrictions.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-16071] [HIGH] Authorization Bypass / Path Traversal (LDAP DN scope validation bypass) in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/402</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/402</guid>
      <pubDate>Mon, 10 Aug 2026 18:09:35 GMT</pubDate>
      <description>The searchLDAPByAttributes method used the LDAP_ENTRY_DN attribute value provided as a search parameter directly as the search base DN without validating that it lies within the configured usersDn subtree. This allowed an attacker (e.g. via the Admin REST API searchByAttributes endpoint) to query arbitrary LDAP entries outside the configured user search base, potentially exposing service accounts or other directory objects not meant to be treated as Keycloak users. The patch validates that the provided DN is a descendant of the configured usersDn before using it as the search base, returning an empty stream otherwise.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-16071</category>
    </item>
    <item>
      <title>[CVE-2026-15573] [HIGH] Authorization Bypass via Path/URI Mutation in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/401</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/401</guid>
      <pubDate>Mon, 10 Aug 2026 16:29:05 GMT</pubDate>
      <description>PathMatcher.matches() performed direct string comparisons against the raw target URI without normalizing matrix parameters, double slashes, dot segments, percent-encoding, or trailing slashes. An attacker could mutate a protected path (e.g. /api/admin) using techniques like matrix params, encoded characters, or path traversal so that it no longer exactly matched the restricted resource pattern but still routed to the same backend resource on the server, causing the request to instead match a permissive catch-all policy (e.g. /*) and bypass intended authorization/deny policies.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-15573</category>
    </item>
    <item>
      <title>[HIGH] Broken Access Control / Information Disclosure in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/397</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/397</guid>
      <pubDate>Mon, 10 Aug 2026 12:05:41 GMT</pubDate>
      <description>The SCIM user schema mapping used `Attributes.nameSet()` to enumerate all user profile attributes for reads and filtering, rather than `getReadable()`, which respects per-attribute view permissions configured in the user profile. This allowed admin-only attributes (e.g., attributes restricted to admin role via UPAttributePermissions) to be exposed and searchable through the SCIM API by users who should not have view access, bypassing the user-profile permission model.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-16442] [HIGH] Authentication Bypass / Access Control Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/398</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/398</guid>
      <pubDate>Mon, 10 Aug 2026 12:05:58 GMT</pubDate>
      <description>The IdentityBrokerService failed to enforce the linkOnly restriction on the IdP-initiated SSO path, allowing an identity provider configured to only be used for account linking (not standalone login) to still authenticate users directly via SAML IdP-initiated SSO. This bypasses an administrator-configured security restriction meant to prevent an IdP from being used as a primary authentication mechanism, potentially allowing unauthorized login through a broker that was explicitly restricted to link-only usage.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-16442</category>
    </item>
    <item>
      <title>[LOW] Denial of Service (Uncaught Exception / ArrayIndexOutOfBoundsException) in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/399</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/399</guid>
      <pubDate>Mon, 10 Aug 2026 12:06:46 GMT</pubDate>
      <description>The SearchQueryUtils.getFields() method accessed chars\[i+1\] without checking bounds when encountering a backslash escape character, causing an ArrayIndexOutOfBoundsException if the backslash was the last character in the query. Since this method parses user-supplied search query strings (e.g., admin console user search), a malformed query with a trailing backslash could trigger an unhandled exception, potentially causing a 500 error or disrupting request processing.</description>
      <category>low</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[MEDIUM] Improper Authorization / Privilege Escalation via Dynamic Client Registration in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/386</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/386</guid>
      <pubDate>Fri, 07 Aug 2026 15:32:10 GMT</pubDate>
      <description>The Dynamic Client Registration update endpoint allowed a client authenticated only with a Registration Access Token (RAT) - a token scoped to managing that single client&apos;s own registration - to change the client&apos;s protocol field (e.g., from openid-connect to saml). This let an attacker in possession of an OIDC client&apos;s RAT silently convert it into a SAML client, bypassing protocol-specific validations and policies enforced on client type, effectively an unintended privilege/scope escalation. The patch adds a check that rejects any update request containing a different protocol value when the caller authenticated via RAT.</description>
      <category>medium</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-15572] [HIGH] Authorization Bypass / Security Policy Bypass in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/385</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/385</guid>
      <pubDate>Fri, 07 Aug 2026 13:33:49 GMT</pubDate>
      <description>The ProtocolMappersClientRegistrationPolicy only validated new protocol mappers against the allowed provider list, but for existing mappers (identified by ID) it skipped the type check entirely, only comparing configuration. This allowed a client (via Dynamic Client Registration, DCR) to swap an existing allowed mapper&apos;s type to a disallowed/dangerous mapper type (e.g., a hardcoded role mapper) while keeping the same mapper ID, bypassing the client registration policy restrictions and potentially escalating privileges via hardcoded roles or claims.</description>
      <category>high</category>
      <category>confirmed</category>
      <category>CVE-2026-15572</category>
    </item>
    <item>
      <title>[HIGH] Insecure Direct Object Reference (IDOR) / Broken Object-Level Authorization in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/384</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/384</guid>
      <pubDate>Fri, 07 Aug 2026 12:06:22 GMT</pubDate>
      <description>The AccountIssuedVerifiableCredentialResource#delete endpoint deleted issued verifiable credentials by ID using a global lookup (session.users().removeIssuedVerifiableCredential(credentialId)) without verifying that the credential belonged to the authenticated user. Any authenticated user with the manage-account or manage-verifiable-credentials role could delete another user&apos;s issued verifiable credential simply by supplying that credential&apos;s ID, since the credential ID was not scoped to the requesting user.</description>
      <category>high</category>
      <category>verified</category>
      
    </item>
    <item>
      <title>[CVE-2026-16100] [MEDIUM] Uncontrolled Resource Consumption / Memory Exhaustion (CWE-400) via Metrics Cardinality Explosion in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/379</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/379</guid>
      <pubDate>Thu, 06 Aug 2026 15:36:22 GMT</pubDate>
      <description>The Micrometer user event metrics listener created a distinct time-series counter for each unique combination of tags, including the &apos;error&apos; tag (and clientId tag) which is derived from user-controllable input such as arbitrary exception messages or client IDs. An attacker could trigger many different error messages or use many distinct client IDs to generate an unbounded number of unique metric tag values, leading to unbounded memory growth in the metrics registry and potential OOM in Keycloak or downstream observability systems. The patch mitigates this by generifying error codes (e.g., using Errors.GENERIC/INVALID_SCOPE/CLIENT_NOT_FOUND instead of raw exception messages) and adding a MeterFilter that caps the number of distinct tag values (default 10000) for the error and clientId tags, denying new tag values once the limit is reached.</description>
      <category>medium</category>
      <category>confirmed</category>
      <category>CVE-2026-16100</category>
    </item>
    <item>
      <title>[LOW] Null Pointer Dereference (Denial of Service) in keycloak/keycloak</title>
      <link>https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/362</link>
      <guid isPermaLink="true">https://github.com/spaceraccoon/vulnerability-spoiler-alert/issues/362</guid>
      <pubDate>Tue, 04 Aug 2026 15:08:18 GMT</pubDate>
      <description>The PatchRequest.setSchemas() method did not handle a null value for the &apos;schemas&apos; field, allowing an unauthenticated or authenticated attacker to send a SCIM PATCH request with &quot;schemas&quot;: null to trigger a NullPointerException on the server, resulting in an unhandled 500 error instead of a proper validation error (400). This could be used for minor denial-of-service or availability disruption of the SCIM PATCH endpoint.</description>
      <category>low</category>
      <category>verified</category>
      
    </item>
  </channel>
</rss>