CVE-2026-123801
SuperTokens Core: SAML callback accepts a replayed RelayState + SAMLResponse, minting a fresh authorization code on each replay
SuperTokens Core is an open source authentication server. From 11.3.0 until 11.3.8, 11.4.8, 12.0.11, 12.1.2, 12.2.1, and 12.3.1, SAML.handleCallback does not consume RelayState, record assertion identifiers, or enforce Response.InResponseTo. In the SP-initiated flow, an attacker who obtains a legitimately issued, still-valid SAML response and its matching RelayState can resubmit the pair to /recipe/saml/callback before the assertion's NotOnOrAfter time; in the IdP-initiated flow, the assertion can be replayed without RelayState. The missing Response.InResponseTo check also permits an in-progress login to be completed with an assertion for a different identity and fails to enforce allowIDPInitiatedLogin=false. The callback does not validate Destination or SubjectConfirmationData Recipient and NotOnOrAfter, and each accepted callback mints a fresh, independently redeemable authorization code carrying the captured user's identity. This issue is fixed in versions 11.3.8, 11.4.8, 12.0.11, 12.1.2, 12.2.1, and 12.3.1.
Fixes and workarounds
No remediation reported in collected sources.
Missing remediation information is not evidence that no patch exists.
Affected products and versions
| Product | Versions | Authority |
|---|---|---|
| supertokens-core supertokens |
>= 11.3.0, < 11.3.8 (affected) >= 11.4.0, < 11.4.8 (affected) >= 12.0.0, < 12.0.11 (affected) >= 12.1.0, < 12.1.2 (affected) >= 12.2.0, < 12.2.1 (affected) >= 12.3.0, < 12.3.1 (affected) |
CNA: GitHub_M |
Version ranges are source assertions. Check the vendor advisory and your installed configuration before determining exposure.
CVSS assessments
| Version / score | Vector | Authority |
|---|---|---|
| 3.1 / 7.4 high |
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N | CNA: GitHub_M |
Exploit evidence
No exploit evidence in collected sources. This is not proof of no exploitation.
References
- https://github.com/supertokens/supertokens-core/security/advisories/GHSA-3r7x-rhvc-fw28CNA: GitHub_M · x_refsource_CONFIRM
- https://github.com/supertokens/supertokens-core/commit/075655222f5e72f3683a127e45c83c4174fbd4f7CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/commit/4e05d8cf60287e9d2720140031a8b8f4430d056fCNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/commit/557835406547d269f5d0e33159630a1873461c38CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/commit/5c42f02e98f67174c6a5a800dd9f8bd5b6e98486CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/commit/b6730e608b2d4562939cd4f41ea07df5f841dfe5CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/commit/ca2bca9bc900c2fd399d508818ad026cc977dcf6CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/releases/tag/v11.3.8CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/releases/tag/v11.4.8CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/releases/tag/v12.0.11CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/releases/tag/v12.1.2CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/releases/tag/v12.2.1CNA: GitHub_M · x_refsource_MISC
- https://github.com/supertokens/supertokens-core/releases/tag/v12.3.1CNA: GitHub_M · x_refsource_MISC
For agents and automation
Read public disclosures for free as Markdown or JSON. Compatible browsers also expose native WebMCP tools to search disclosures, read this page, and discover API access.
Use the ontology-linked Cyber API with x402 pay per request, or a Y2 Pro or Elite API key with the intel:cyber scope.
Endpoints and access details
https://api.y2.dev/api/v2/cyber/cveshttps://api.y2.dev/api/v2/cyber/cves/{cveId}
A workspace owner or admin can create a Pro or Elite API key. Send Authorization: Bearer <Y2_API_KEY> from your trusted agent runtime.
For x402, omit Authorization and read the HTTP 402 payment challenge before signing a retry. Public browser tools do not make payments.