Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker joins victim org as low-privilege member
-
DeliverySets victim org as active session organization
-
ExploitCrafts subscription action request with permitted org ID in query string, no org ID in body
-
ExecutionMiddleware approves request via authorizeReference using query-string org ID
-
PersistHandler ignores query string, falls back to active session org ID
-
ImpactBilling action executes against victim organization
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
|
| Exploitation Conditions | Four conditions must simultaneously be true for exploitation. First, |
| Impact | The CVSS 4.0 vector AV:N/AC:L/AT:N/PR:L/UI:N places this as a network-accessible, low-complexity, low-privilege attack, yielding a 7.1 High score - primarily driven by the VI:H (high integrity impact) reflecting ability to cancel, change, or restore subscriptions. However, there are meaningful real-world limiting factors that the raw score does not capture. Exploitation requires four simultaneously true deployment conditions: organization subscriptions enabled, the |
| Exploit ScenarioDerived | An attacker who holds low-privilege membership in Organization A (the victim, set as their active session org) and also manages Organization B crafts a POST request to a subscription action endpoint, placing Organization B's ID in the query string so the middleware's |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 01, 2026
Cross-organization billing authorization bypass in @better-auth/stripe allows authenticated members of multiple organizations to perform subscription actions - including plan cancellation, plan changes, restoration, and billing portal access - against organizations whose billing they should not control. The root cause is a parameter source mismatch: middleware validates the organization ID from the request query string, while the route handler resolves it from the request body and falls back to the caller's active session organization, enabling an attacker to pass authorization for one org while the action executes against another. No public exploit has been identified and no CISA KEV listing exists, but the CVSS 4.0 score of 7.1 reflects a network-accessible, low-complexity attack path with high integrity impact on billing state.
RemediationAI
Upgrade @better-auth/stripe to version 1.6.21 or later on the stable release line, or to 1.7.0-beta.10 or later on the beta line; these are the vendor-confirmed patched versions per GHSA-h3rm-78g3-j7cp. The upstream fix is traceable to commit 29fbcb573261242d8a05b131a9d39c9ae4352b06 in the better-auth GitHub repository. If an immediate upgrade is not feasible, the advisory provides a targeted workaround: modify the authorizeReference callback to return false whenever the requested organization ID does not equal session.activeOrganizationId. The compensating control snippet is if (referenceId !== session.activeOrganizationId) { return false; }, which must be combined with any existing role checks. The trade-off of this workaround is that it prevents users from performing subscription actions on an org unless that org is already their active session org - applications may need UX logic to prompt users to switch their active org before performing billing operations. Advisory and VulnCheck analysis are available at https://www.vulncheck.com/advisories/better-auth-stripe-before-authorization-bypass-via-organization-subscription.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The @better-auth/stripe npm package (cpe:2.3:a:better-auth:stripe) is an authentication and billing integration plugin that maps Stripe subscription state to the better-auth organization model. The vulnerability is classified as CWE-639 (Authorization Bypass Through User-Controlled Key), an IDOR variant in which the authorization check and the privileged operation consume different instances of the same key. The plugin's org subscription middleware reads the organization ID from either the request body or query string and passes it to the developer-configured authorizeReference callback. The route handler for subscription actions then independently re-reads the organization ID from the request body only, falling back to session.activeOrganizationId when absent. Because the query string is visible to middleware but ignored by the handler, these two resolutions can diverge. The fix, committed at 29fbcb573261242d8a05b131a9d39c9ae4352b06, resolves the org ID once in middleware and threads that single resolved value into the handler, eliminating the divergence.
Know when Stripe gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:H/VA:N/SC:N/SI:N/SA:N
Network vector (AV:N), low-privilege auth required (PR:L); high integrity from subscription manipulation, low confidentiality from billing data exposure, no availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
Lifecycle Timeline
2DescriptionCVE.org
@better-auth/stripe versions >= 1.4.11 and < 1.6.21, and >= 1.7.0-beta.0 and < 1.7.0-beta.10, contain an authorization bypass in organization subscription actions. The middleware validates the organization ID taken from the request query string against the authorizeReference callback, but the handler reads the organization ID only from the request body and falls back to the caller's active organization from their session. When these differ, an authenticated member of multiple organizations can perform subscription actions (cancel, change plan, restore, billing portal access) against an organization they belong to but should not manage, and can access another organization's billing details including payment methods, invoices, and subscription state.
Executive ViewAI
The @better-auth/stripe library contains a billing authorization bypass allowing authenticated users with access to one organization to execute subscription and billing operations against other organizations they do not control. While no public exploit has been identified at time of analysis, organizations relying on this library for multi-tenant billing face direct financial risk from unauthorized subscription cancellations, downgrades, and billing portal access. Immediate patch deployment is required to mitigate this threat.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
The PrestaShop e-commerce platform module stripejs contains a Blind SQL injection vulnerability up to version 4.5.5. Rat
New API (QuantumNous new-api) before 0.12.10 credits AI quota from forged Stripe webhook events: StripeWebhookSecret def
vscode-stripe is an extension for Visual Studio Code. Rated high severity (CVSS 7.8), this vulnerability is no authentic
Jexactyl releases prior to 4.0.5 accept a client-supplied Stripe Checkout Session at POST /api/client/billing/stripe/pro
stripe-cli is a command-line tool for the payment processor Stripe. Rated high severity (CVSS 7.1), this vulnerability i
Stripe CLI is a command-line tool for the Stripe eCommerce platform. Rated high severity (CVSS 7.0). This OS Command Inj
Smokescreen is an HTTP proxy. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploitable, no authentic
Smokescreen is a simple HTTP proxy that fogs over naughty URLs. Rated medium severity (CVSS 5.3), this vulnerability is
Cross-Site Request Forgery (CSRF) vulnerability in Drupal Commerce Stripe allows Cross Site Request Forgery. This issue
EUVD-2026-51806
GHSA-mp8j-p2mc-4hgv
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB