Missing Authentication for Critical Function (CWE-306) in the checkout session lookup handler (src/app/api/stripe/checkout_sessions/route.ts),… (CVE-2026-90896)
Missing Authentication for Critical Function (CWE-306) in the checkout session lookup handler (src/app/api/stripe/checkout_sessions/route.ts), exposed at GET /api/stripe/checkout_sessions, in MarcosCamara01 Ecommerce Template before commit 91e273c allows a remote, unauthenticated attacker holding a valid Stripe Checkout Session id (cs_...) to retrieve the full session object, including the buyer's name, email, phone, billing address, amount paid and internal userId, because the GET handler calls stripe.checkout.sessions.retrieve() and returns the result without checking for an authenticated session or session ownership. Sibling endpoints such as POST /api/stripe/payment already enforced authentication via auth.api.getSession(); this endpoint had no access control whatsoever. The session_id is exposed in the buyer's own browser URL after payment (success_url = /result?session_id={CHECKOUT_SESSION_ID}), so it leaks through Referer headers, analytics tools, server access logs and shared-machine browser history, resulting in disclosure of the buyer's personal data to an unauthenticated actor.
AI Analysis
Technical Summary
This vulnerability involves missing authentication for a critical function in the checkout session lookup handler (src/app/api/stripe/checkout_sessions/route.ts) of MarcosCamara01 Ecommerce Template before commit 91e273c. The GET handler at /api/stripe/checkout_sessions retrieves the full Stripe Checkout Session object by calling stripe.checkout.sessions.retrieve() without verifying that the requester is authenticated or owns the session. Because the session ID is exposed in the buyer's browser URL after payment, an unauthenticated remote attacker who obtains a valid session ID can access sensitive buyer data such as name, email, phone, billing address, amount paid, and internal userId. This contrasts with sibling endpoints like POST /api/stripe/payment, which enforce authentication. The lack of access control on this endpoint leads to unauthorized disclosure of personal data.
Potential Impact
An unauthenticated remote attacker who obtains a valid Stripe Checkout Session ID can retrieve sensitive personal and payment information of buyers, including name, email, phone number, billing address, amount paid, and internal userId. This exposure results from the absence of authentication and authorization checks on the affected endpoint. The session ID's presence in the browser URL after payment increases the risk of leakage through Referer headers, analytics tools, server logs, and shared browser histories, potentially allowing attackers to harvest multiple users' personal data without authentication.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, restrict access to the GET /api/stripe/checkout_sessions endpoint by implementing proper authentication and authorization checks to ensure that only the session owner can retrieve their checkout session data. Avoid exposing the session ID in URLs accessible to third parties, such as in query parameters, to reduce leakage risk.
Missing Authentication for Critical Function (CWE-306) in the checkout session lookup handler (src/app/api/stripe/checkout_sessions/route.ts),… (CVE-2026-90896)
Description
Missing Authentication for Critical Function (CWE-306) in the checkout session lookup handler (src/app/api/stripe/checkout_sessions/route.ts), exposed at GET /api/stripe/checkout_sessions, in MarcosCamara01 Ecommerce Template before commit 91e273c allows a remote, unauthenticated attacker holding a valid Stripe Checkout Session id (cs_...) to retrieve the full session object, including the buyer's name, email, phone, billing address, amount paid and internal userId, because the GET handler calls stripe.checkout.sessions.retrieve() and returns the result without checking for an authenticated session or session ownership. Sibling endpoints such as POST /api/stripe/payment already enforced authentication via auth.api.getSession(); this endpoint had no access control whatsoever. The session_id is exposed in the buyer's own browser URL after payment (success_url = /result?session_id={CHECKOUT_SESSION_ID}), so it leaks through Referer headers, analytics tools, server access logs and shared-machine browser history, resulting in disclosure of the buyer's personal data to an unauthenticated actor.
CVSS v4.0
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
This vulnerability involves missing authentication for a critical function in the checkout session lookup handler (src/app/api/stripe/checkout_sessions/route.ts) of MarcosCamara01 Ecommerce Template before commit 91e273c. The GET handler at /api/stripe/checkout_sessions retrieves the full Stripe Checkout Session object by calling stripe.checkout.sessions.retrieve() without verifying that the requester is authenticated or owns the session. Because the session ID is exposed in the buyer's browser URL after payment, an unauthenticated remote attacker who obtains a valid session ID can access sensitive buyer data such as name, email, phone, billing address, amount paid, and internal userId. This contrasts with sibling endpoints like POST /api/stripe/payment, which enforce authentication. The lack of access control on this endpoint leads to unauthorized disclosure of personal data.
Potential Impact
An unauthenticated remote attacker who obtains a valid Stripe Checkout Session ID can retrieve sensitive personal and payment information of buyers, including name, email, phone number, billing address, amount paid, and internal userId. This exposure results from the absence of authentication and authorization checks on the affected endpoint. The session ID's presence in the browser URL after payment increases the risk of leakage through Referer headers, analytics tools, server logs, and shared browser histories, potentially allowing attackers to harvest multiple users' personal data without authentication.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until a fix is available, restrict access to the GET /api/stripe/checkout_sessions endpoint by implementing proper authentication and authorization checks to ensure that only the session owner can retrieve their checkout session data. Avoid exposing the session ID in URLs accessible to third parties, such as in query parameters, to reduce leakage risk.
Technical Details
- Gcve Source
- db.gcve.eu
- Osv Id
- GHSA-qfqr-55gf-4v3j
- Osv Schema Version
- 1.4.0
- Aliases
- ["CVE-2026-90896"]
- Database Specific Severity
- HIGH
- Cvss Version
- 4.0
- State
- PUBLISHED
Threat ID: 6aa8a17d55bf5e2cf5f3c9e4
Added to database: 09/15/2026, 01:38:05 UTC
Last enriched: 09/15/2026, 01:44:21 UTC
Last updated: 09/15/2026, 03:01:23 UTC
Views: 2
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.