MEDIUM 5.3

CVE-2026-9027: CorvusPay WooCommerce Plugin Payment Bypass via Signature Validation Failure

The CorvusPay WooCommerce Payment Gateway plugin contains a critical flaw in how it handles payment confirmations. When a customer completes a payment, the plugin is supposed to verify that the confirmation is genuinely from CorvusPay by checking a cryptographic signature. However, the plugin checks the signature but then ignores the result—it logs whether the check passed or failed, but proceeds to mark the order as paid regardless. This means an attacker can forge a fake payment confirmation and trick the plugin into marking any order as fully paid, allowing them to obtain merchandise or services without actually paying. Since WooCommerce order IDs are sequential numbers, attackers can systematically target orders without needing to know specific details beforehand.

Source data · NVD / CISA · public domain

CVSS
3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weaknesses (CWE)
CWE-347
Affected products
0 configuration(s)
Published / Modified
2026-07-09 / 2026-07-09

NVD description (verbatim)

The CorvusPay WooCommerce Payment Gateway plugin for WordPress is vulnerable to Payment Bypass via Improper Verification of Cryptographic Signature in all versions up to, and including, 2.7.4. The `corvuspay_success_handler` function registers the REST endpoint `POST /wp-json/corvuspay/success/` with `'permission_callback' => '__return_true'`, and while it calls `$this->client->validate->signature()` and stores the boolean result in `$res`, the result is never evaluated in a conditional — it is only written to the debug log — causing execution to unconditionally reach `$order->payment_complete()` regardless of whether the cryptographic signature is valid. This makes it possible for unauthenticated attackers to mark any pending WooCommerce order as fully paid by sending a POST request to the success endpoint containing an arbitrary or forged signature value, allowing them to obtain goods or services without payment. Because WooCommerce order IDs are sequential integers, target orders are trivially enumerable via the `order_number` POST parameter, requiring no prior knowledge of the victim order.

8 reference(s) · View on NVD →

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

Technical summary

The vulnerability exists in the `corvuspay_success_handler` function, which registers a publicly accessible REST endpoint at `POST /wp-json/corvuspay/success/` with no permission checks (`'permission_callback' => '__return_true'`). The handler invokes `$this->client->validate->signature()` to verify the cryptographic signature of the incoming request and stores the boolean result in variable `$res`. However, this result is never evaluated in a conditional statement—it is only written to the debug log. Execution unconditionally proceeds to `$order->payment_complete()`, which marks the order as paid. An unauthenticated attacker can construct a POST request with an arbitrary or forged signature value and supply a target order number via the `order_number` parameter. Because WooCommerce order IDs are sequential integers, enumeration requires no authentication or prior knowledge of valid orders. This represents a direct failure to validate cryptographic signatures before trusting external payment data, classified under CWE-347 (Improper Verification of Cryptographic Signature).

Business impact

This vulnerability enables direct revenue loss and fraud at scale. An attacker can claim free merchandise or services by bypassing payment entirely. The ease of order enumeration (sequential IDs) means attackers can systematically target multiple orders in bulk. Affected merchants face chargebacks, inventory loss, and reputational damage. Customer trust is compromised if payment records are forged. Depending on transaction volume and order values, a single compromised store could suffer thousands of dollars in losses before detection. The vulnerability affects all versions of the plugin up to 2.7.4, meaning any unpatched deployment is at immediate risk.

Affected systems

All installations of the CorvusPay WooCommerce Payment Gateway plugin version 2.7.4 and earlier are affected. The plugin runs on WordPress sites using WooCommerce for e-commerce. Impact is limited to sites actively using this specific payment gateway; sites using other payment processors are not affected. The vulnerability requires no special network access or configuration—any public WordPress site using the plugin is accessible to attackers. Sites behind WAF or IP-restriction rules may have some mitigation, but those protections are not substitutes for patching.

Exploitability

Exploitation is trivial. An attacker needs only to send an HTTP POST request to a known URL pattern (`/wp-json/corvuspay/success/`) with basic parameters. No authentication is required, no social engineering is needed, and no user interaction is required. The attacker does not need to know valid order IDs in advance—they can enumerate them by incrementing sequential integers. Proof-of-concept exploitation requires minimal technical skill. The CVSS score of 5.3 (MEDIUM) reflects that while integrity impact is present (orders marked as paid fraudulently), there is no confidentiality loss and no denial of service component. However, the practical ease of exploitation and lack of any access controls make this a high-priority operational risk despite the moderate CVSS rating.

Remediation

The immediate remediation is to upgrade the CorvusPay WooCommerce Payment Gateway plugin to a patched version released after 2.7.4. Verify the patched version against the vendor advisory to confirm the signature validation logic has been corrected—specifically, that the result of `validate->signature()` is now evaluated in a conditional before `$order->payment_complete()` is called. Pending patch deployment, consider temporarily disabling the CorvusPay payment method on affected sites or restricting REST endpoint access via web server rules. Because the vulnerability does not require authentication, network-level controls (IP whitelisting, WAF rules blocking POST to `/wp-json/corvuspay/success/`) can provide interim defense but should not be relied upon as a permanent solution.

Patch guidance

Check the CorvusPay plugin vendor advisory for the specific patched version that addresses CWE-347 signature validation. Update through the WordPress plugin management interface or manually, depending on your deployment workflow. After patching, verify the update took effect by checking the installed plugin version. Test the payment workflow end-to-end with a valid payment to ensure the patch does not break legitimate transactions. If your site uses automation to update plugins, ensure this plugin is included in the update scope and monitor logs after the update for any integration failures.

Detection guidance

Monitor access logs for POST requests to `/wp-json/corvuspay/success/`. Legitimate payment confirmations should come from CorvusPay's infrastructure (specific IP ranges documented by CorvusPay); unexpected sources indicate attack attempts. Review WooCommerce order logs and transaction records for orders marked as paid without corresponding payment processor records—this is a strong indicator of exploitation. Enable debug logging in the plugin if available; forged signature attempts will appear in logs if logging is enabled. Consider setting up alerts in your SIEM for sequential order number enumeration patterns in the success endpoint, as attackers may probe multiple order IDs in rapid succession. Inspect orders marked as paid in the last 24-48 hours before you knew of the vulnerability to assess if your site was already targeted.

Why prioritize this

Although the CVSS score is MEDIUM (5.3), this vulnerability should be treated with HIGH operational priority because exploitation is trivial, requires no access controls, and leads to direct financial loss. The lack of any authentication, the public accessibility of the REST endpoint, and the sequential order ID enumeration all combine to make this a low-friction attack for adversaries. A single attacker can compromise dozens or hundreds of orders in a short time window. The business impact—complete bypass of payment collection—is severe. Any store using this payment gateway should patch within hours or days, not weeks.

Risk score, explained

The CVSS 3.1 score of 5.3 reflects MEDIUM severity: Attack Vector is Network (AV:N), Attack Complexity is Low (AC:L), Privileges Required are None (PR:N), User Interaction is None (UI:N), Scope is Unchanged (S:U), with Integrity Impact as Low (I:L) and no Confidentiality or Availability impact. However, this score understates operational risk because the 'Low' integrity impact does not fully capture the real-world consequence of fraudulent payment marking—which is complete financial loss for the merchant. The lack of any authentication requirement and the trivial enumeration mechanism further elevate practical exploitability beyond what the 'Low' complexity rating alone conveys. Organizations should apply a business-context multiplier: treat this as HIGH priority despite the MEDIUM CVSS.

Frequently asked questions

Can my store be compromised if I use a different payment gateway?

No. This vulnerability is specific to the CorvusPay WooCommerce Payment Gateway plugin. If you use Stripe, Square, PayPal, or another gateway, you are not affected. Check your WooCommerce settings under Payment Methods to confirm which gateway is active.

How can I tell if my site was already exploited before I knew about this vulnerability?

Review your WooCommerce orders from the past 30-60 days. Look for orders marked as 'Completed' or 'Paid' that have no corresponding transaction record in your CorvusPay merchant dashboard or payment processor account. Reconcile your payment processor's settlement records against your WooCommerce order totals; unexplained discrepancies may indicate forged payments. Enable debug logging in the plugin and search for failed signature validation entries.

Is there a way to protect my store without patching the plugin?

Temporary mitigations include disabling the CorvusPay payment method until you can patch, or restricting REST API access to the `/wp-json/corvuspay/success/` endpoint via your web server (nginx/Apache rules or WAF). However, these are not substitutes for patching—they are stopgaps while you arrange the update. Patching should be your priority within 24 hours.

Why doesn't the plugin just reject the payment if the signature is invalid?

The bug is a logic error: the plugin validates the signature and stores the result but never checks it. The developer likely intended to write `if ($res) { $order->payment_complete(); }` but instead wrote code that unconditionally marks orders as paid regardless of validation outcome. This is a straightforward programming mistake with serious security consequences.

This analysis is provided for informational purposes to help security teams understand and remediate this vulnerability. SEC.co does not verify the accuracy of vendor patch claims; always validate patch effectiveness against the official vendor advisory before deploying to production. Organizations should conduct their own risk assessment and testing. This content does not constitute legal, financial, or professional security advice. The vulnerability details herein are derived from the CVE record and vendor disclosures as of the publication date; later information may supersede this analysis. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).