# CVE-2026-19349: 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

> Attackers can bypass authentication in LemonLDAP::NG Portal by replaying OAuth2 state parameters as SSO session cookies, gaining unauthorized access.

- **Severity:** Critical 9.8 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 16 Aug 2026
- **Updated:** 17 Aug 2026
- **Also known as:** DEBIAN-CVE-2026-19349, GHSA-4vx7-c7qw-2vx4, UBUNTU-CVE-2026-19349

## What is CVE-2026-19349?

CVE-2026-19349 is a critical authentication bypass vulnerability, published on 16 Aug 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

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.

Weakness: CWE-628 (Function Call with Incorrectly Specified Arguments), CWE-305 (Authentication Bypass by Primary Weakness)

## Which versions are affected by CVE-2026-19349?


## How do I fix CVE-2026-19349?

Upgrade to a fixed version.

## Is CVE-2026-19349 being exploited?

There is no known exploitation of CVE-2026-19349 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-19349 and fix it if it is affected.

What it is: CVE-2026-19349 is a critical authentication bypass vulnerability, published on 16 Aug 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-19349 in the wild and no public exploit code.

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-19349/ (Markdown: https://insights.sbomify.com/CVE-2026-19349/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-19349
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-19349
- OSV: https://osv.dev/vulnerability/CVE-2026-19349

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-19349/
Summaries are generated and may contain mistakes; the official description above is the record.
