CVE-2026-92289: 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

Published Sep 25, 2026
·
Updated

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 codechallenge, 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 clientid with an arbitrary secret, which is the attack PKCE prevents. Dynamic client registration creates every Relying Party in this mode.

Affected Software

1 affected component
LemonLDAP::NG Portal>=2.23.0<2.23.4

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Lemonldap-NG-Portal to a version that resolves this vulnerability.

    Fixed in 2.23.4

Event History

Sep 25, 2026
CVE Published
via MITRE·12:15 AM
Data Sourced
via MITRE·12:15 AM
RemedyDescriptionWeakness
Data Sourced
via NVD·01:16 AM
DescriptionWeakness

Frequently Asked Questions

1

Which relying parties are exposed?

Public Relying Parties configured in "PKCE or secret" mode are affected. Dynamic client registration creates every Relying Party in this mode.

2

What must an attacker obtain to exploit this issue?

The attacker must intercept an authorization code issued to a public Relying Party. They can then replay the client_id with an arbitrary secret to exchange the code for the user's access, ID, and refresh tokens.

3

Does exploitation require a PKCE challenge or verifier?

No. When RequirePKCE is set to 2, the authorization endpoint can issue a code without a code_challenge, and validation passes when neither a challenge nor verifier is present.

4

Which versions contain the issue?

The issue affects Lemonldap::NG::Portal for Perl from version 2.23.0 before 2.23.4.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203