CVE-2026-92288
UnknownSummary
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.
Risk Assessment
An attacker who holds an access token and knows the client_id of any public Relying Party can confirm the token is active and read its metadata, including scope, audience, expiry, and sub. They can also translate a user identifier from one Relying Party to another, defeating per-client and pseudonymous identifiers.
Recommendation
Update Lemonldap::NG::Portal to version 2.21.6 or 2.23.4 (depending on the branch) or later. Ensure that public Relying Parties cannot access token introspection without secret verification.
Other vulnerabilities in Lemonldap::NG::Portal
See all- CVE-2026-92289Unknown
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-19349Critical
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.
Original NVD description (English source)
Lemonldap::NG::Portal versions from 2.20.0 before 2.21.6, from 2.22.0 before 2.23.4 for Perl allow unauthenticated OAuth2 token introspection because checkEndPointAuthenticationCredentials does not verify the client secret of a public Relying Party. checkEndPointAuthenticationCredentials() skips the secret comparison for a Relying Party marked public and still returns the authentication method deduced from the request, client_secret_basic or client_secret_post. introspection() rejects a caller only when that method is missing or none, so a request carrying a public client_id and an arbitrary or empty secret passes the endpoint's authentication check. An attacker who holds an access token and knows the client_id of any public Relying Party can confirm the token is active and read its metadata, including scope, audience, expiry and the sub claim. The sub claim is computed with the calling Relying Party's user identifier attribute, so an attacker can translate a user identifier from one Relying Party to another, defeating per-client and pseudonymous identifiers.

