Executive brief
The WP Express Checkout WordPress plugin fails to verify payments server-side before marking orders as paid. An attacker can forge a fake completed payment and claim a digital product without actually paying, allowing free access to paid downloads and undermining e-commerce revenue for site operators.
Technical details
This is a server-side request forgery (SSRF) and authentication bypass vulnerability in the plugin's wpec_process_payment AJAX endpoint. The vulnerable component does not verify that a payment gateway (PayPal) actually processed a transaction before accepting payment status from the client. An unauthenticated attacker can extract the nonce, product ID, and price from the public product page, then submit a forged POST request with status=COMPLETED and arbitrary transaction details. The plugin accepts the fake payment and creates a paid order post without contacting the payment gateway, granting access to the digital product. No user interaction or authentication is required; the attack succeeds against any WP Express Checkout installation with a published product. Versions before 2.4.9 are vulnerable; a patch is available.
Affected products
- WP Express Checkout WP Express Checkout before 2.4.9
Timeline
- 2026-09-01: disclosed
- 2026-09-02: patched: Fixed in version 2.4.9