Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as billing client
-
ExploitCreate order and underpaid Stripe session
-
ExecutionPOST paid session to process endpoint
-
ImpactServer provisioned below required price
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Requires an instance where the billing module is explicitly enabled AND a Stripe secret key is configured (config modules.billing.keys.secret) - both non-default deployment prerequisites. The attacker must hold a valid authenticated client account (PR:L) and an order referencing a server. Exploitation then needs only a Stripe Checkout Session whose payment_status is 'paid' with a lower amount_total or a different currency than the order; the pre-4.0.5 code trusts 'paid' without comparing amount_total or currency to the order total and configured billing currency. Limiting factors: requires authentication, requires the optional billing+Stripe configuration to be active, and only affects versions prior to 4.0.5. |
| Impact | This is a genuine but bounded business-logic/payment-integrity flaw rather than a critical infrastructure risk. The CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:L, 7.1 High) is internally consistent with the description: network-reachable, low complexity, but requiring an authenticated client (PR:L) and producing an integrity impact (VI:H) with no confidentiality loss (VC:N) - correctly contradicting the 'Information Disclosure' tag, since no data is exposed. No EPSS score, KEV listing, or public exploit is present in the provided data, so there is no public exploit identified at time of analysis and no confirmed active exploitation; the realistic threat is targeted financial fraud by existing authenticated customers against hosting operators, not mass/automated exploitation. Priority should be scoped to operators who actually run the billing module with a live Stripe secret key - for them this is a direct revenue-loss and provisioning-abuse issue and the fix (v4.0.5) should be applied, but for the broad install base that does not enable billing it is not a pressing concern. EPSS and KEV data are simply absent (not an error), so probability-of-exploitation cannot be quantified from the inputs. |
| Exploit ScenarioDerived | An authenticated customer on a Jexactyl instance with the billing module enabled and Stripe configured initiates a real order, then completes a Stripe Checkout Session for a deliberately low amount or a cheap currency (e.g. 100 JPY instead of 100 USD). They POST the 'paid' session to /api/client/billing/stripe/process, and because the server never compares amount_total or currency against the order, the server is provisioned, renewed, upgraded, or unsuspended for a fraction of the real price. No public exploit code was identified in the provided data, but the mechanism is confirmed by the fix commit and its integration tests. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 09, 2026
Jexactyl releases prior to 4.0.5 accept a client-supplied Stripe Checkout Session at POST /api/client/billing/stripe/process based solely on its payment_status being 'paid', without checking amount_total or currency against the referenced order or the panel's configured billing currency. On instances where the optional billing module is enabled and a Stripe secret key is set, an authenticated client can therefore settle an order with an under-valued or mismatched-currency payment and still have the order fulfilled, provisioning, renewing, upgrading, or unsuspending the associated server for less than the required price. The issue is a bounded payment-integrity/business-logic flaw rather than a critical infrastructure risk; it requires authentication plus the non-default billing and Stripe configuration, is fixed in 4.0.5, and no public exploit code or active exploitation has been identified at time of analysis.
RemediationAI
Upgrade to Jexactyl 4.0.5 or later, the vendor-released patched version, which adds the missing amount_total and currency comparison in StripeController::process() and rejects sessions whose totals or currency do not match the order (commit fdee722c560ac13dc2d26271912203a6085dffe3; release https://github.com/Jexactyl/Jexactyl/releases/tag/v4.0.5; advisory https://github.com/Jexactyl/Jexactyl/security/advisories/GHSA-rf56-676w-hj4g). If immediate upgrading is not possible, the most effective compensating control is to disable the billing module (set modules.billing.enabled to false) or remove the Stripe secret key from modules.billing.keys.secret, which closes the vulnerable endpoint entirely - the trade-off is that all paid checkout, renewal, and upgrade flows stop working until the patch is applied. As a narrower alternative, restrict access to POST /api/client/billing/stripe/process at the reverse proxy or application middleware layer so only trusted traffic reaches it, and manually reconcile any pending or recently processed orders against Stripe's records (checking amount_total and currency) to detect sessions that were accepted below list price. After patching, audit orders created on pre-4.0.5 versions for underpayment or currency mismatches and re-bill or suspend affected services as policy dictates. No public exploit code or confirmed active exploitation has been reported, so emergency out-of-band response is not indicated unless the billing module and Stripe key are in use.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Jexactyl is a Laravel-based PHP game-server management panel with an optional billing subsystem that integrates Stripe Checkout. The root cause is CWE-345 (Insufficient Verification of Data Authenticity): the StripeController::process() method treats the Stripe API response field payment_status == 'paid' as proof that the correct amount was collected, without binding the session to the local order record. A Stripe Checkout Session reports 'paid' irrespective of how much was collected or in which currency, and amounts are expressed as integers in the currency's minor unit (matching the value sent to Stripe in PaymentService::create()). Because the pre-4.0.5 code never compared (int) $transaction->amount_total against (int) round($order->total * 100), nor lowercased $transaction->currency against strtolower(config('modules.billing.currency.code')), any session with a 'paid' status and metadata pointing at a valid order was accepted - for example a 100 JPY (~USD 0.63) session against a USD 100.00 order. The vulnerability is confined to deployments where the billing module is enabled and a Stripe secret key (modules.billing.keys.secret) is configured, and the attacker must hold an authenticated client account plus an existing order tied to a server. The affected component is registered in CPE as cpe:2.3:a:jexactyl:jexactyl:*:*:*:*:*:*:*:* (all versions before 4.0.5). The upstream fix in commit fdee722c560ac13dc2d26271912203a6085dffe3 adds the currency/amount comparison and throws a DisplayException on mismatch, and additionally allows a StripeClient instance to be resolved from the service container for testability.
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:N/VI:H/VA:L/SC:N/SI:N/SA:N
Remote authenticated client (PR:L, AV:N, AC:L) bypasses payment validation causing high integrity impact to billing/provisioning (I:H), minor availability gain (A:L), no data disclosure (C:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Jexactyl is a customisable game management panel and billing system. Prior to 4.0.5, the POST /api/client/billing/stripe/process endpoint accepts a client-supplied Stripe Checkout Session when payment_status is paid but does not compare amount_total or currency with the referenced order and configured billing currency. On an instance where the billing module is enabled and a Stripe secret key is configured, an authenticated client can therefore complete a lower-value or mismatched-currency payment and cause the order to be processed, provisioning, renewing, upgrading, or unsuspending the purchased server for less than the required price. This issue is fixed in version 4.0.5.
Technical POC Analysis
CWE-345, insufficient verification of data authenticity, in Jexactyl's Stripe billing confirmation handler.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Jexactyl, a game server management panel, contains a payment validation flaw in its optional billing module that could allow actors to pay less than the required amount and still receive server provisioning, renewals, or upgrades. Organizations using Jexactyl with Stripe integration may face revenue loss and unauthorized service fulfillment. Security leadership should prioritize remediation to protect billing integrity and prevent abuse of paid services.
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
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
Cross-organization billing authorization bypass in @better-auth/stripe allows authenticated members of multiple organiza
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
EUVD-2026-95982
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB