Summary
CVE-2026-92289 is an authentication bypass vulnerability in Lemonldap::NG::Portal, the identity/access management and web SSO portal component of the Lemonldap::NG suite. It allows an attacker to bypass Proof Key for Code Exchange (PKCE) protections and exchange an intercepted OAuth2/OpenID Connect authorization code for a victim’s tokens by replaying the client_id with an arbitrary secret. The issue is rated CRITICAL (CVSS 9.1) and is remotely exploitable without authentication or user interaction.
Technical details
- Root cause: the
checkEndPointAuthenticationCredentialsfunction inlib/Lemonldap/NG/Portal/Lib/OpenIDConnect.pm/lib/Lemonldap/NG/Portal/Issuer/OpenIDConnect.pmdoes not verify the client secret for Relying Parties (RPs) marked as "public," yet still returns an authentication method as if credentials were validated. - Trigger condition: occurs when a public Relying Party’s
RequirePKCEoption is set to "PKCE or secret" mode. The authorization endpoint can issue a code even without acode_challenge, and the token endpoint’svalidatePKCEChallenge()check passes trivially because neither a challenge nor a verifier is present. - Attack vector: network-based, low complexity, no privileges or user interaction required. An attacker who intercepts (or otherwise obtains) an authorization code issued to a public RP can replay the client_id together with an arbitrary/fabricated secret at the token endpoint to complete the code exchange.
- Impact: successful exploitation lets an attacker obtain a legitimate user’s OIDC access, ID, and refresh tokens, enabling impersonation of the user or application and unauthorized access to protected resources and personal data. Confidentiality and integrity impacts are high; there is no availability impact.
Affected software
- Lemonldap::NG::Portal (Perl/CPAN module, part of the Lemonldap::NG suite) — versions 2.23.0 through 2.23.3 (i.e., before 2.23.4)
- A related, separately tracked issue (CVE-2026-92288) affects the same
checkEndPointAuthenticationCredentialscode path in additional version ranges; environments should confirm they are patched against both.
Severity
- CVSS v3.1 Base Score: 9.1 (Critical)
- Vector:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
Mitigation and recommended actions
- Immediate: Upgrade Lemonldap::NG::Portal to version 2.23.4 or later, which fixes the credential/PKCE validation logic.
- If patching is not immediately possible:
- Enforce strict PKCE requirements ("PKCE required," not "PKCE or secret") on all public Relying Parties so token exchange cannot fall back to secret-based validation without a valid challenge/verifier pair.
- Disable or restrict dynamic client registration for public clients where not strictly necessary.
- Review OIDC/OAuth2 authorization and token endpoint logs for anomalous code-exchange requests referencing public client_ids.

