CVE-2025-15475

5.3 MEDIUM

📋 TL;DR

This vulnerability allows unauthenticated attackers to manipulate WooCommerce order statuses through the PayHere Payment Gateway plugin. Attackers can change pending orders to paid, completed, or on-hold statuses without payment. All WordPress sites using vulnerable versions of this plugin are affected.

💻 Affected Systems

Products:
  • PayHere Payment Gateway Plugin for WooCommerce
Versions: All versions up to and including 2.3.9
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects WordPress installations with WooCommerce and the PayHere plugin enabled.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could mark fraudulent orders as paid, causing merchants to ship products without receiving payment, leading to significant financial losses and inventory depletion.

🟠

Likely Case

Attackers exploit the vulnerability to obtain products without payment by manipulating order statuses, resulting in direct revenue loss for merchants.

🟢

If Mitigated

With proper monitoring and order verification processes, fraudulent orders can be caught before fulfillment, limiting financial impact.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability is in a publicly accessible function with improper validation, making exploitation straightforward for attackers.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.4.0 or later

Vendor Advisory: https://plugins.trac.wordpress.org/browser/payhere-payment-gateway/tags/2.4.0/

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find PayHere Payment Gateway. 4. Click 'Update Now' if available. 5. If not, download version 2.4.0+ from WordPress repository and manually update.

🔧 Temporary Workarounds

Disable PayHere Plugin

all

Temporarily disable the vulnerable plugin until patched

wp plugin deactivate payhere-payment-gateway

Restrict Access to PayHere Endpoint

linux

Block access to the vulnerable check_payhere_response function via web server configuration

# Add to .htaccess for Apache:
RewriteRule ^wc-api/payhere_gateway - [F,L]

# Add to nginx config:
location ~ ^/wc-api/payhere_gateway { deny all; }

🧯 If You Can't Patch

  • Implement manual order verification process requiring manager approval before shipping
  • Enable WooCommerce fraud detection plugins and configure alerts for order status changes

🔍 How to Verify

Check if Vulnerable:

Check plugin version in WordPress admin under Plugins > Installed Plugins. If PayHere Payment Gateway version is 2.3.9 or lower, you are vulnerable.

Check Version:

wp plugin get payhere-payment-gateway --field=version

Verify Fix Applied:

Verify PayHere Payment Gateway plugin version is 2.4.0 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Multiple order status changes from pending to completed/paid without corresponding payment transactions
  • Unusual API calls to /wc-api/payhere_gateway endpoint

Network Indicators:

  • HTTP POST requests to /wc-api/payhere_gateway with manipulated order parameters

SIEM Query:

source="wordpress.log" AND "payhere_gateway" AND ("status":"completed" OR "status":"paid") AND NOT "payment_method":"payhere"

🔗 References

📤 Share & Export