← Back to search

CVE-2026-92289

9.1 CRITICAL

Published 2026-09-25 · Updated 2026-09-26

AI risk analysis

Summary
The flaw allows an attacker to bypass PKCE validation for public Relying Parties, enabling them to obtain user tokens by replaying client_id with an arbitrary secret.
Exploitability
Exploitation is moderately hard as it requires intercepting an authorization code and replaying it with a fabricated secret, but preconditions include dynamic client registration in 'PKCE or secret' mode.
Blast radius
If exploited, the attack could lead to unauthorized access to user accounts, as the attacker can obtain access, ID, and refresh tokens for the user.
Detection
No reliable host or network indicator is derivable from the published description.
Prioritized remediation
Upgrade to Lemonldap::NG::Portal version 2.23.4 or later.
auth-bypasswebperloidc

Analysis generated locally by qwen2.5:7b-instruct (no data left the box). AI-assisted — verify against primary sources before acting.

NVD description

Lemonldap::NG::Portal versions from 2.23.0 before 2.23.4 for Perl allow a PKCE bypass for public Relying Parties in "PKCE or secret" mode because checkEndPointAuthenticationCredentials does not verify the client secret. With oidcRPMetaDataOptionsRequirePKCE set to 2, the authorization endpoint issues a code even when the request carries no code_challenge, and token() admits the exchange as long as a challenge was stored or an authentication method was returned for the caller. checkEndPointAuthenticationCredentials() skips the secret comparison for a Relying Party marked public and still returns the method deduced from the request, so any Basic or form credential satisfies the secret branch. validatePKCEChallenge() then passes, because neither a challenge nor a verifier is present. An attacker who intercepts an authorization code issued to a public Relying Party can exchange it for the user's access, ID and refresh tokens by replaying the client_id with an arbitrary secret, which is the attack PKCE prevents. Dynamic client registration creates every Relying Party in this mode.

CVSS vector

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N

Weaknesses

CWE-1390

All references

Source data: NVD (nvd.nist.gov), public domain. Exploit-DB.ai adds local AI analysis for defensive use only.

Related CVEs

Related by shared AI tags and CWE weakness class. Browse the full archive.