<?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, 11 Aug 2026 21:01:38 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] 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>unverified</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>unverified</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>unverified</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>unverified</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>unverified</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>