MEDIUM 6.5

CVE-2026-2381: WooCommerce Stripe Payment Gateway Order Sabotage Vulnerability

The WooCommerce Stripe Payment Gateway plugin contains a flaw that allows attackers to sabotage pending orders without authentication. By exploiting a missing verification step, attackers can force orders into a failed state using a fake payment method. This attack works because the plugin only checks a security token that is publicly visible on WooCommerce checkout pages, and does not confirm the attacker actually owns or has permission to modify the order being targeted. Attackers can enumerate sequential order IDs to identify and attack multiple orders.

Source data · NVD / CISA · public domain

CVSS
3.1 · 6.5 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L
Weaknesses (CWE)
CWE-862
Affected products
0 configuration(s)
Published / Modified
2026-06-16 / 2026-06-17

NVD description (verbatim)

The WooCommerce Stripe Payment Gateway plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the `ajax_pay_for_order()` function in all versions up to, and including, 10.7.0 This is due to a missing order ownership or order_key verification when processing payment for an order via the `wc_stripe_pay_for_order` WC-AJAX endpoint. The function only validates a nonce (which is publicly available on any WooCommerce page where Express Checkout is enabled), but does not verify that the requesting user owns the target order and is allowed to modify it. This makes it possible for unauthenticated attackers to force any pending order into a failed status by providing a fake payment method, causing a payment exception that updates the order status to "failed" via sequential order ID enumeration.

6 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in the `ajax_pay_for_order()` function within the WooCommerce Stripe Payment Gateway plugin (versions up to 10.7.0). The function processes payment requests via the `wc_stripe_pay_for_order` WC-AJAX endpoint but lacks critical authorization checks. While a nonce validation is present—providing some CSRF protection—the function does not verify order ownership, the order_key, or whether the requesting user has capability to modify the targeted order. An attacker can construct a request with a valid nonce (publicly available on any page with Express Checkout enabled), specify an arbitrary order ID, and submit invalid payment credentials. The resulting payment exception triggers an order status update to "failed" without proper permission validation. The vulnerability is classified as CWE-862 (Missing Authorization).

Business impact

Attackers can systematically corrupt pending orders in WooCommerce stores using this plugin, degrading customer experience and potentially disrupting revenue. A threat actor could target competitor sites or specific merchants by failing legitimate customer orders, forcing customers to re-initiate purchases and potentially damaging trust. Since the attack requires no authentication and relies only on publicly available information, the barrier to exploitation is extremely low. High-volume attacks could also create operational overhead for merchants attempting to recover and reinstate legitimate orders.

Affected systems

The WooCommerce Stripe Payment Gateway plugin in all versions up to and including 10.7.0 is affected. This plugin is widely deployed across WooCommerce-powered e-commerce sites using Stripe for payment processing. Any WooCommerce installation running this plugin with Express Checkout enabled is vulnerable, regardless of WordPress version or other plugin combinations.

Exploitability

Exploitability is high. The attack requires no authentication, no user interaction, and no special privileges. An attacker needs only network access and the ability to craft HTTP requests to the vulnerable endpoint. The public availability of the nonce on checkout pages and the sequential predictability of WooCommerce order IDs make reconnaissance and targeting straightforward. Automated tooling could easily scale attacks across multiple targets.

Remediation

Upgrade the WooCommerce Stripe Payment Gateway plugin to a patched version beyond 10.7.0. Verify against the official Stripe and WooCommerce advisory for the exact fixed version. The patch should add proper order ownership and capability verification before processing payment modification requests. Store operators should also review recent order history for anomalous failed statuses that may indicate prior exploitation.

Patch guidance

Update the WooCommerce Stripe Payment Gateway plugin through the WordPress admin dashboard or via command line. Ensure the installed version exceeds 10.7.0—verify against the vendor security advisory to confirm the minimum patched version. Test the plugin update in a staging environment before deploying to production to ensure compatibility with your current WooCommerce and WordPress versions. Monitor for any reports of plugin conflicts or payment processing disruptions post-update.

Detection guidance

Monitor for unexpected failed order statuses on pending orders, particularly clustered in time or spanning sequential order ID ranges. Examine AJAX logs for repeated requests to the `wc_stripe_pay_for_order` endpoint originating from non-customer IP addresses or sessions without valid customer authentication. Review your payment gateway logs for rejected charges with invalid or test payment methods on legitimate orders. Consider implementing Web Application Firewall (WAF) rules to flag or rate-limit requests to this endpoint from suspicious sources.

Why prioritize this

Although the CVSS score is MEDIUM (6.5), prioritization should remain high due to the ease of exploitation (no authentication required), the wide deployment of WooCommerce in e-commerce environments, and the direct business impact of order sabotage. The vulnerability poses immediate operational risk to any merchant using this plugin. The low barrier to entry and high scalability of attacks warrant expedited patching.

Risk score, explained

The CVSS 3.1 score of 6.5 reflects network-exploitable (AV:N), low-complexity (AC:L) unauthorized access requiring no privileges (PR:N) and no user interaction (UI:N). The scope is unchanged (S:U), and the impact is low confidentiality (C:N), low integrity (I:L), and low availability (A:L)—because only order status is modified, not customer data exfiltration or system-wide denial. However, the practical risk is amplified by the plugin's ubiquity, the absence of exploitation barriers, and the reputational damage of order tampering in e-commerce contexts.

Frequently asked questions

Can an attacker modify order amounts or steal payment information using this vulnerability?

No. The vulnerability is limited to changing order status to "failed" via a spoofed payment exception. It does not enable modification of order amounts, customer data exfiltration, or direct payment card compromise. The attack is order-status sabotage, not financial theft.

Does the vulnerability require the attacker to know the exact order ID?

Not in practice. WooCommerce order IDs are sequential and often publicly visible in customer emails or order confirmation pages. An attacker can efficiently enumerate order IDs or target specific merchants by scraping their e-commerce sites to identify legitimate pending orders.

Are stores using Stripe without the official Stripe Payment Gateway plugin affected?

No. This vulnerability is specific to the WooCommerce Stripe Payment Gateway plugin. Sites using other payment processors, direct Stripe integration, or alternative gateway plugins are not affected by this flaw.

What should I do if I suspect my store has been exploited?

Audit your order status logs for unexpected failed orders, especially those clustered in time or with sequential IDs. Restore any legitimate failed orders manually if detected. Apply the patch immediately, monitor for further anomalies, and consider reviewing server and WAF logs for signs of attack.

This analysis is based on the official CVE record and vendor advisory. Organizations should verify all patch version numbers and compatibility statements against the official WooCommerce and Stripe security advisories before deploying fixes. Patch availability and timelines may vary by distribution channel. This explainer does not constitute legal or compliance advice. Security teams should adapt detection and response procedures to their own environment and risk posture. Source: NVD (public-domain), retrieved 2026-07-23. Analysis generated by SEC.co (claude-haiku-4-5).