# Cardinity Payment Gateway for WooCommerce <= 3.4.1 - Unauthenticated Order Status Manipulation via Hosted Checkout Callbacks

- **ID:** WPSEC-2026-0946
- **Plugin:** Cardinity Payment Gateway for WooCommerce (`cardinity-free-payment-gateway-for-woocommerce`), https://wordpress.org/plugins/cardinity-free-payment-gateway-for-woocommerce/
- **Affected versions:** from 2.0.0 before 3.4.2
- **Fixed in:** 3.4.2 (Update to 3.4.2 or later.)
- **Severity:** High 7.5 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N)
- **Weakness:** CWE-347
- **Usage among sites WPSec scans:** plugin Low, affected versions None seen (as of 2026-10-14)
- **Attack surface analysis:** https://attacksurface.wpsec.com/plugin/cardinity-free-payment-gateway-for-woocommerce
- **Fix released:** 2026-10-12
- **Published:** 2026-10-14
- **URL:** https://wpsec.com/vuln/WPSEC-2026-0946/

## Description

The Cardinity Payment Gateway for WooCommerce plugin for WordPress is vulnerable to improper verification of cryptographic signature in the hosted checkout return and notification callbacks in versions 2.0.0 to 3.4.1. This is due to check_response_external() accepting a signature computed with an empty project secret, the default in direct checkout mode (reachable there since 3.2.6), and setting the order to failed whenever the check fails. This makes it possible for unauthenticated attackers to mark arbitrary orders as failed and, when no project secret is configured, to mark pending or on-hold orders as paid without a real payment.

## References

- https://wpsec.com/vuln/WPSEC-2026-0946/
- https://plugins.svn.wordpress.org/cardinity-free-payment-gateway-for-woocommerce/tags/3.4.2/
- https://wordpress.org/plugins/cardinity-free-payment-gateway-for-woocommerce/

Source: WPSec, https://wpsec.com/vuln/WPSEC-2026-0946/

License: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Free to use, share and adapt, also commercially, if you credit WPSec and link to this advisory.
