CVE-2026-19349 (GCVE-0-2026-19349)
Vulnerability from cvelistv5
Published
2026-08-16 13:22
Modified
2026-08-17 16:38
Severity ?
CWE
  • CWE-305 - Authentication Bypass by Primary Weakness
  • CWE-628 - Function Call with Incorrectly Specified Arguments
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. 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.
Impacted products
Vendor Product Version
Version: 2.0.0   < 2.16.9
Version: 2.17.0   < 2.21.5
Version: 2.22.0   < 2.23.3
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2026-08-16T17:06:03.065Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "url": "http://www.openwall.com/lists/oss-security/2026/08/16/2"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "LOW",
              "attackVector": "NETWORK",
              "availabilityImpact": "HIGH",
              "baseScore": 9.8,
              "baseSeverity": "CRITICAL",
              "confidentialityImpact": "HIGH",
              "integrityImpact": "HIGH",
              "privilegesRequired": "NONE",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2026-19349",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "yes"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-08-17T16:38:49.938313Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-08-17T16:38:54.866Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://cpan.org/modules",
          "defaultStatus": "unaffected",
          "modules": [
            "Lemonldap::NG::Portal"
          ],
          "packageName": "Lemonldap-NG-Portal",
          "packageURL": "pkg:cpan/Lemonldap-NG-Portal",
          "programFiles": [
            "lib/Lemonldap/NG/Portal/Auth/GitHub.pm",
            "lib/Lemonldap/NG/Portal/Auth/LinkedIn.pm"
          ],
          "programRoutines": [
            {
              "name": "Lemonldap::NG::Portal::Auth::GitHub::extractFormInfo"
            },
            {
              "name": "Lemonldap::NG::Portal::Auth::LinkedIn::extractFormInfo"
            }
          ],
          "repo": "https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng",
          "versions": [
            {
              "lessThan": "2.16.9",
              "status": "affected",
              "version": "2.0.0",
              "versionType": "custom"
            },
            {
              "lessThan": "2.21.5",
              "status": "affected",
              "version": "2.17.0",
              "versionType": "custom"
            },
            {
              "lessThan": "2.23.3",
              "status": "affected",
              "version": "2.22.0",
              "versionType": "custom"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "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.\n\nBefore redirecting to the identity provider, extractFormInfo() creates the state session with the positional call `getApacheSession( undef, 1, 0, \u0027GitHubState\u0027 )`. 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.\n\nAny 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 =\u003e 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."
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-305",
              "description": "CWE-305 Authentication Bypass by Primary Weakness",
              "lang": "en",
              "type": "CWE"
            }
          ]
        },
        {
          "descriptions": [
            {
              "cweId": "CWE-628",
              "description": "CWE-628 Function Call with Incorrectly Specified Arguments",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-16T13:22:34.084Z",
        "orgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
        "shortName": "CPANSec"
      },
      "references": [
        {
          "tags": [
            "release-notes"
          ],
          "url": "https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/releases/v2.23.3"
        },
        {
          "tags": [
            "release-notes"
          ],
          "url": "https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/releases/v2.21.5"
        },
        {
          "tags": [
            "release-notes"
          ],
          "url": "https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/releases/v2.16.9"
        }
      ],
      "solutions": [
        {
          "lang": "en",
          "value": "Upgrade to Lemonldap-NG-Portal 2.16.9, 2.21.5 or 2.23.3 or later. Only 2.23.3 is on CPAN; the 2.16.9 and 2.21.5 LTS releases are available from https://lemonldap-ng.org/download.html."
        }
      ],
      "source": {
        "discovery": "UNKNOWN"
      },
      "title": "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",
      "workarounds": [
        {
          "lang": "en",
          "value": "For deployments that cannot upgrade, disable the GitHub and LinkedIn authentication modules."
        }
      ],
      "x_generator": {
        "engine": "cpansec-cna-tool 0.1"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "9b29abf9-4ab0-4765-b253-1875cd9b441e",
    "assignerShortName": "CPANSec",
    "cveId": "CVE-2026-19349",
    "datePublished": "2026-08-16T13:22:34.084Z",
    "dateReserved": "2026-08-08T14:18:36.846Z",
    "dateUpdated": "2026-08-17T16:38:54.866Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 9.8, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"CRITICAL\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"NONE\", \"confidentialityImpact\": \"HIGH\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-19349\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-08-17T16:38:49.938313Z\"}}}], \"providerMetadata\": {\"shortName\": \"CISA-ADP\", \"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"dateUpdated\": \"2026-08-17T16:38:38.990Z\"}}], \"cna\": {\"title\": \"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\", \"source\": {\"discovery\": \"UNKNOWN\"}, \"affected\": [{\"repo\": \"https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng\", \"modules\": [\"Lemonldap::NG::Portal\"], \"versions\": [{\"status\": \"affected\", \"version\": \"2.0.0\", \"lessThan\": \"2.16.9\", \"versionType\": \"custom\"}, {\"status\": \"affected\", \"version\": \"2.17.0\", \"lessThan\": \"2.21.5\", \"versionType\": \"custom\"}, {\"status\": \"affected\", \"version\": \"2.22.0\", \"lessThan\": \"2.23.3\", \"versionType\": \"custom\"}], \"packageURL\": \"pkg:cpan/Lemonldap-NG-Portal\", \"packageName\": \"Lemonldap-NG-Portal\", \"programFiles\": [\"lib/Lemonldap/NG/Portal/Auth/GitHub.pm\", \"lib/Lemonldap/NG/Portal/Auth/LinkedIn.pm\"], \"collectionURL\": \"https://cpan.org/modules\", \"defaultStatus\": \"unaffected\", \"programRoutines\": [{\"name\": \"Lemonldap::NG::Portal::Auth::GitHub::extractFormInfo\"}, {\"name\": \"Lemonldap::NG::Portal::Auth::LinkedIn::extractFormInfo\"}]}], \"solutions\": [{\"lang\": \"en\", \"value\": \"Upgrade to Lemonldap-NG-Portal 2.16.9, 2.21.5 or 2.23.3 or later. Only 2.23.3 is on CPAN; the 2.16.9 and 2.21.5 LTS releases are available from https://lemonldap-ng.org/download.html.\"}], \"references\": [{\"url\": \"https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/releases/v2.23.3\", \"tags\": [\"release-notes\"]}, {\"url\": \"https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/releases/v2.21.5\", \"tags\": [\"release-notes\"]}, {\"url\": \"https://gitlab.ow2.org/lemonldap-ng/lemonldap-ng/-/releases/v2.16.9\", \"tags\": [\"release-notes\"]}], \"workarounds\": [{\"lang\": \"en\", \"value\": \"For deployments that cannot upgrade, disable the GitHub and LinkedIn authentication modules.\"}], \"x_generator\": {\"engine\": \"cpansec-cna-tool 0.1\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"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.\\n\\nBefore redirecting to the identity provider, extractFormInfo() creates the state session with the positional call `getApacheSession( undef, 1, 0, \u0027GitHubState\u0027 )`. 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.\\n\\nAny 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 =\u003e 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.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-305\", \"description\": \"CWE-305 Authentication Bypass by Primary Weakness\"}]}, {\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-628\", \"description\": \"CWE-628 Function Call with Incorrectly Specified Arguments\"}]}], \"providerMetadata\": {\"orgId\": \"9b29abf9-4ab0-4765-b253-1875cd9b441e\", \"shortName\": \"CPANSec\", \"dateUpdated\": \"2026-08-16T13:22:34.084Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-19349\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-16T17:06:03.065Z\", \"dateReserved\": \"2026-08-08T14:18:36.846Z\", \"assignerOrgId\": \"9b29abf9-4ab0-4765-b253-1875cd9b441e\", \"datePublished\": \"2026-08-16T13:22:34.084Z\", \"assignerShortName\": \"CPANSec\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…