VYPR
Low severityNVD Advisory· Published Feb 27, 2026· Updated Mar 6, 2026

Org.keycloak/keycloak-services: webauthn attestation statement verification bypass

CVE-2025-12150

Description

A flaw was found in Keycloak’s WebAuthn registration component. This vulnerability allows an attacker to bypass the configured attestation policy and register untrusted or forged authenticators via submission of an attestation object with fmt: "none", even when the realm is configured to require direct attestation. This can lead to weakened authentication integrity and unauthorized authenticator registration.

Affected packages

Versions sourced from the GitHub Security Advisory.

PackageAffected versionsPatched versions
org.keycloak:keycloak-servicesMaven
< 26.4.426.4.4

Affected products

3
  • Red Hat/Red Hat build of Keycloak 26.2.11v5
    cpe:/a:redhat:build_keycloak:26.2::el9
  • Red Hat/Red Hat build of Keycloak 26.4.4v5
    cpe:/a:redhat:build_keycloak:26.4::el9
  • Range: 0

Patches

1
4136a677e7e2

WebAuthn registration now respects the configured extra origins policy (#35404)

https://github.com/keycloak/keycloakKevin TangJan 9, 2025via ghsa
1 file changed · +7 1
  • services/src/main/java/org/keycloak/authentication/requiredactions/WebAuthnRegister.java+7 1 modified
    @@ -228,8 +228,14 @@ public void processAction(RequiredActionContext context) {
             String publicKeyCredentialId = params.getFirst(WebAuthnConstants.PUBLIC_KEY_CREDENTIAL_ID);
     
             Origin origin = new Origin(UriUtils.getOrigin(context.getUriInfo().getBaseUri()));
    +        Set<Origin> allOrigins = policy
    +                .getExtraOrigins()
    +                .stream()
    +                .map(Origin::new)
    +                .collect(Collectors.toSet());
    +        allOrigins.add(origin);
             Challenge challenge = new DefaultChallenge(context.getAuthenticationSession().getAuthNote(WebAuthnConstants.AUTH_CHALLENGE_NOTE));
    -        ServerProperty serverProperty = new ServerProperty(origin, rpId, challenge, null);
    +        ServerProperty serverProperty = new ServerProperty(allOrigins, rpId, challenge, null);
             // check User Verification by considering a malicious user might modify the result of calling WebAuthn API
             boolean isUserVerificationRequired = policy.getUserVerificationRequirement().equals(WebAuthnConstants.OPTION_REQUIRED);
     
    

Vulnerability mechanics

Generated by null/stub on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

11

News mentions

0

No linked articles in our index yet.