CVE-2026-2381
WordPress vulnerability analysis and mitigation

Overview

CVE-2026-2381 is a Missing Authorization vulnerability in the WooCommerce Stripe Payment Gateway plugin for WordPress that allows unauthenticated attackers to force any pending order into a failed status. The flaw exists in the ajax_pay_for_order() function and affects all plugin versions up to and including 10.7.0. It was published on June 16, 2026, with a patch available in version 10.8.0. The vulnerability carries a CVSS v3.1 base score of 6.5 (Medium) (GitHub Advisory, Wordfence).

Technical details

The root cause is a missing authorization check (CWE-862) in the ajax_pay_for_order() function exposed via the wc_stripe_pay_for_order WC-AJAX endpoint. The function validates only a nonce, which is publicly accessible on any WooCommerce page where Express Checkout is enabled, but performs no verification that the requesting user owns or is authorized to modify the target order. An unauthenticated attacker can exploit this by enumerating sequential order IDs and submitting a fake payment method to the endpoint, triggering a payment exception that transitions the order status to "failed". The vulnerable code path is visible in the plugin's class-wc-stripe-express-checkout-ajax-handler.php at line 355 and class-wc-gateway-stripe.php at line 523 (GitHub Advisory, CleanTalk Research).

Impact

Successful exploitation allows unauthenticated remote attackers to disrupt WooCommerce store operations by forcing any pending order into a "failed" status, effectively denying legitimate customers the ability to complete purchases. This impacts both integrity (unauthorized order status modification) and availability (disruption of the payment and order fulfillment workflow). There is no confidentiality impact, as the vulnerability does not expose order data or payment credentials, but large-scale enumeration could cause significant business disruption for affected merchants (GitHub Advisory, Wordfence).

Exploitation steps

  1. Reconnaissance: Identify WordPress sites running the WooCommerce Stripe Payment Gateway plugin version 10.7.0 or earlier. This can be done by checking plugin version disclosures in page source or using tools like WPScan.
  2. Obtain a valid nonce: Visit any WooCommerce page on the target site where Express Checkout is enabled (e.g., the cart or product page). Extract the publicly available nonce from the page source or JavaScript variables.
  3. Enumerate order IDs: Sequentially guess or enumerate WooCommerce order IDs (typically integers starting from a low number) to identify valid pending orders.
  4. Craft malicious AJAX request: Send an HTTP POST request to the wc_stripe_pay_for_order WC-AJAX endpoint (e.g., /?wc-ajax=wc_stripe_pay_for_order) with the enumerated order ID, the obtained nonce, and a fake/invalid payment method token.
  5. Trigger order failure: The server processes the request without verifying order ownership, submits the fake payment to Stripe, receives a payment exception, and updates the target order status to "failed," disrupting the legitimate customer's purchase (GitHub Advisory, CleanTalk Research).

Indicators of compromise

  • Network: High volume of POST requests to /?wc-ajax=wc_stripe_pay_for_order from a single IP or distributed IPs, especially with sequentially incrementing order ID parameters.
  • Logs: Web server access logs showing repeated requests to the wc_stripe_pay_for_order endpoint with varying order IDs and no authenticated session cookies; Stripe API logs showing a surge of failed payment attempts with invalid payment method tokens.
  • Application: Unusual spike in WooCommerce orders transitioning to "failed" status in a short time window, particularly for orders belonging to different customers; WooCommerce order notes indicating payment exceptions triggered by unrecognized payment sources.

Mitigation and workarounds

Update the WooCommerce Stripe Payment Gateway plugin to version 10.8.0 or later, which introduces proper order ownership verification in the ajax_pay_for_order() function (GitHub Advisory, Plugin Changeset). As a temporary workaround, consider disabling the Express Checkout feature to prevent the nonce from being publicly exposed, or implement a Web Application Firewall (WAF) rule to rate-limit or block anomalous POST requests to the wc_stripe_pay_for_order endpoint. Upgrading to the patched version is the recommended and definitive remediation.

Community reactions

Wordfence included CVE-2026-2381 in its weekly WordPress vulnerability report for the period of June 15–21, 2026, highlighting it as a notable authorization bypass affecting a widely used payment plugin (Wordfence Blog). Sucuri also referenced the vulnerability in its June 2026 vulnerability patch roundup (Sucuri Blog). No significant social media controversy or threat actor attribution has been observed at this time.

Additional resources


SourceThis report was generated using AI

Related WordPress vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-13147CRITICAL9.1
  • kirki
NoYesJul 20, 2026
CVE-2026-9833HIGH7.1
  • tag-groups
NoYesJul 20, 2026
CVE-2026-13432MEDIUM5.4
  • image-sizes
NoYesJul 20, 2026
CVE-2026-13156MEDIUM5.4
  • mailersend-official-smtp-integration
NoYesJul 20, 2026
CVE-2026-8825MEDIUM4.9
  • elementor
NoYesJul 20, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management