CVE-2026-92289
NieznaneStreszczenie
Podatność w Lemonldap::NG::Portal (Perl) pozwala na obejście PKCE dla publicznych Relying Parties w trybie "PKCE or secret", ponieważ funkcja checkEndPointAuthenticationCredentials nie weryfikuje sekretu klienta. Gdy oidcRPMetaDataOptionsRequirePKCE jest ustawione na 2, punkt końcowy autoryzacji wydaje kod nawet bez code_challenge, a token() akceptuje wymianę, jeśli challenge został zapisany lub zwrócono metodę uwierzytelniania. Atakujący może wymienić przechwycony kod autoryzacyjny na tokeny dostępu, ID i odświeżania użytkownika.
Ocena ryzyka
Atakujący, który przechwyci kod autoryzacyjny wydany publicznemu Relying Party, może uzyskać tokeny dostępu, ID i odświeżania użytkownika, co jest atakiem, któremu PKCE ma zapobiegać. Może to prowadzić do pełnego przejęcia sesji użytkownika.
Rekomendacja
Zaktualizuj Lemonldap::NG::Portal do wersji 2.23.4 lub nowszej. Rozważ wyłączenie dynamicznej rejestracji klientów lub wymuszenie weryfikacji sekretu klienta dla publicznych Relying Parties.
Inne podatności w Lemonldap::NG::Portal
Zobacz wszystkie- CVE-2026-92288Nieznane
Podatność w Lemonldap::NG::Portal (Perl) pozwala na nieuwierzytelnione introspekcje tokenów OAuth2, ponieważ checkEndPointAuthenticationCredentials nie weryfikuje sekretu klienta publicznego Relying Party. Funkcja pomija porównanie sekretu dla publicznego Relying Party i zwraca metodę uwierzytelniania wywnioskowaną z żądania, więc żądanie z publicznym client_id i dowolnym lub pustym sekretem przechodzi weryfikację. Atakujący może potwierdzić aktywność tokenu i odczytać jego metadane, w tym scope, audience, expiry i sub.
- CVE-2026-19349Krytyczne
Lemonldap::NG::Portal w wersjach od 2.0.0 do 2.16.9, od 2.17.0 do 2.21.5 oraz od 2.22.0 do 2.23.3 dla Perla umożliwia obejście uwierzytelniania poprzez parametr stanu OAuth2 przechowywany jako sesja SSO w backendach GitHub i LinkedIn. Atakujący może odtworzyć identyfikator sesji jako ciasteczko sesyjne i uzyskać ważną sesję SSO bez uwierzytelniania.
Oryginalny opis (angielski, źródło NVD)
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.

