8000 [CVE-2026-6856] Acceptable AAGUID policy bypass via packed self-attestation in WebAuthn registration · Issue #48388 · keycloak/keycloak · GitHub
[go: up one dir, main page]

Skip to content
10000

[CVE-2026-6856] Acceptable AAGUID policy bypass via packed self-attestation in WebAuthn registration #48388

Description

@ahus1

Description

WebAuthn AAGUID policy bypass via packed self-attestation. Similar to CVE-2025-12150. When direct attestation is requested but the authenticator sends self-attestation (no x5c), the AAGUID is unverified, allowing bypass of the acceptable AAGUID allowlist.

Additional notes

By default, for a simple implementation, attestation and AAGUIDs may not be considered necessary. It's considered a high level security setting that the company uses to enforce specific authenticators or because they don't trust in users.

Acknowledgement

We acknowledge Pelissier, Sylvain (SICPA) for reporting this issue to the Keycloak security team.


This issue was originally tracked in the private repository. Migrated by @ahus1.

Activity

  1. added
    area/authentication/webauthnWebAuthn/FIDO2 — passkeys, security keys, biometric auth, AAGUID policies
    kind/cveIssues identified as CVEs on third-party dependencies, or issues which Keycloak is not affected
    on Apr 23, 2026
  2. added theissue type on Apr 23, 2026
  3. self-assigned this
    on Apr 23, 2026
  4. sylvainpelissier commented on Apr 23, 2026

    @sylvainpelissier

    There is another think I noticed while reviewing the patch, The default truststore is the JVM's cacerts file, which contains hundreds of public commercial CAs (DigiCert, GlobalSign, Sectigo, etc.). This means every one of those CAs is implicitly trusted as a FIDO attestation CA. Webauthn4j does validate some attestation fields like Subject-OU must be "Authenticator Attestation" or CA=false Basic Constraint, which makes a standard TLS cert unusable directly. But the architectural problem is that the trust boundary for TLS and for FIDO attestation is conflated, meaning any operator or attacker with access to add entries to the TLS truststore gains implicit power over FIDO attestation validation. In my opinion, the two trust stores should be separated.

  5. rmartinc commented on Apr 23, 2026

    @rmartinc
    Contributor

    The TLS trust-store can be separated to another file (https://www.keycloak.org/server/mutual-tls), but your suggestion is a very big change that probably should be managed when re-thinking the certificates per realm #33273. In general the trust-store is used for everything and there can be different usages.

    This issue is just to cover the corner cases that allowed to pass a untrusted AAGUIDs.

  6. sylvainpelissier commented on Apr 23, 2026

    @sylvainpelissier

    Ok maybe this is another issue but by default FIDO CA certificates have to be in a separate trust store else the AAGUID filtering may be also bypassed.

  7. ahus1 commented on Apr 23, 2026

    @ahus1
    MemberAuthor

    @sylvainpelissier - I think this is a good point. Please create a new issue of type "enhancement" and mention it here to link it.
    It might then be handled in a bigger context as @rmartinc mentioned, or separately when it receives a lot of community interest.

  8. 21 remaining items

  9. moved this from 👀 Review to ✅ Done in WebAuthn/Passkeys 🔑on Apr 29, 2026
  10. added 3 commits that reference this issue on Jul 20, 2026
    7626850
    d6d48ac
    bd63208
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Fields

No fields configured for cve.

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

0