CVE-2026-19349
CriticalCVSS 9.8Exploitation Probability (EPSS)
Low risk38th percentile - higher than 38% of all known CVEs
Summary
Lemonldap::NG::Portal versions from 2.0.0 before 2.16.9, from 2.17.0 before 2.21.5, from 2.22.0 before 2.23.3 for Perl allow authentication bypass via an OAuth2 state parameter stored as an SSO session in the GitHub and LinkedIn backends. An attacker can replay the session identifier as a session cookie and obtain a valid SSO session without authenticating.
Risk Assessment
Risk of unauthorized access to the system for any visitor reaching the GitHub or LinkedIn endpoint, potentially leading to data confidentiality and integrity breaches.
Recommendation
Update Lemonldap::NG::Portal to version 2.16.9, 2.21.5, or 2.23.3 (or later) and review access rule configurations to avoid default access without authentication.
Other vulnerabilities in Lemonldap::NG::Portal
See all- CVE-2026-92289Critical
A vulnerability in Lemonldap::NG::Portal (Perl) allows 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 without a code_challenge, and token() admits the exchange if a challenge was stored or an authentication method was returned. An attacker can exchange an intercepted authorization code for the user's access, ID, and refresh tokens.
- CVE-2026-92288Critical
A vulnerability in Lemonldap::NG::Portal (Perl) allows unauthenticated OAuth2 token introspection because checkEndPointAuthenticationCredentials does not verify the client secret of a public Relying Party. The function skips the secret comparison for a public Relying Party and returns the authentication method deduced from the request, so a request with a public client_id and an arbitrary or empty secret passes the endpoint's authentication check. An attacker can confirm the token is active and read its metadata, including scope, audience, expiry, and sub.
Original NVD description (English source)
Lemonldap::NG::Portal versions from 2.0.0 before 2.16.9, from 2.17.0 before 2.21.5, from 2.22.0 before 2.23.3 for Perl allow authentication bypass via an OAuth2 state parameter stored as an SSO session in the GitHub and LinkedIn backends. Before redirecting to the identity provider, extractFormInfo() creates the state session with the positional call `getApacheSession( undef, 1, 0, 'GitHubState' )`. getApacheSession() takes a session id followed by a named argument hash, so the trailing arguments become that hash, `kind` defaults to SSO, and the state is written to the global session storage as a regular SSO session. Its identifier is handed to the unauthenticated visitor as the state parameter of the redirection URL. Any visitor who reaches the GitHub or LinkedIn endpoint can replay that identifier as a session cookie and obtain a valid SSO session without authenticating. The session holds neither _user nor authenticationLevel, which the shipped bootstrap configuration accepts because it grants virtual hosts a "default => accept" access rule; deployments whose rules test the user or require an authentication level are less exposed. Only configurations with the GitHub or LinkedIn authentication module enabled are affected.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

