CVE-2025-14971

5.3 MEDIUM

📋 TL;DR

This vulnerability in the Link Invoice Payment for WooCommerce WordPress plugin allows unauthenticated attackers to create or cancel partial payments on any WooCommerce order via ID enumeration. All WordPress sites using this plugin up to version 2.8.0 are affected. The issue stems from missing capability checks in two API functions.

💻 Affected Systems

Products:
  • Link Invoice Payment for WooCommerce WordPress plugin
Versions: All versions up to and including 2.8.0
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects WordPress installations with the vulnerable plugin activated. WooCommerce must be installed for the plugin to function.

⚠️ 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 manipulate payment statuses to disrupt business operations, create fraudulent payment records, or interfere with legitimate customer transactions, potentially causing financial and reputational damage.

🟠

Likely Case

Attackers will test for vulnerable sites and manipulate partial payments, potentially causing order fulfillment issues, customer confusion, and administrative overhead to clean up fraudulent records.

🟢

If Mitigated

With proper network segmentation and web application firewalls, the impact is limited to potential data integrity issues within the WooCommerce payment system.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

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

The vulnerability is straightforward to exploit via HTTP requests to the vulnerable endpoints without authentication. Attackers can enumerate order IDs to target specific orders.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.8.1 or later

Vendor Advisory: https://plugins.trac.wordpress.org/browser/invoice-payment-for-woocommerce/tags/2.8.0/Includes/WcPaymentInvoiceEndpoint.php

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'Link Invoice Payment for WooCommerce'. 4. Click 'Update Now' if update is available. 5. Alternatively, download version 2.8.1+ from WordPress plugin repository and manually update.

🔧 Temporary Workarounds

Disable vulnerable endpoints via .htaccess

linux

Block access to the vulnerable API endpoints at the web server level

# Add to .htaccess in WordPress root directory
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-json/wc-payment-invoice/v1/(createPartialPayment|cancelPartialPayment) [NC]
RewriteRule ^ - [F]

Deactivate plugin

all

Temporarily disable the vulnerable plugin until patched

wp plugin deactivate invoice-payment-for-woocommerce

🧯 If You Can't Patch

  • Implement a web application firewall (WAF) with rules to block requests to /wp-json/wc-payment-invoice/v1/createPartialPayment and /wp-json/wc-payment-invoice/v1/cancelPartialPayment
  • Restrict access to WordPress admin and API endpoints to trusted IP addresses only

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin > Plugins > Installed Plugins for 'Link Invoice Payment for WooCommerce' version 2.8.0 or earlier

Check Version:

wp plugin get invoice-payment-for-woocommerce --field=version

Verify Fix Applied:

Verify plugin version is 2.8.1 or later in WordPress admin panel

📡 Detection & Monitoring

Log Indicators:

  • HTTP 200 responses to POST /wp-json/wc-payment-invoice/v1/createPartialPayment or /wp-json/wc-payment-invoice/v1/cancelPartialPayment from unauthenticated users
  • Unusual patterns of partial payment creation/cancellation in WooCommerce logs

Network Indicators:

  • POST requests to vulnerable endpoints without authentication headers
  • Rapid sequential requests with different order ID parameters

SIEM Query:

source="web_access_logs" AND (uri_path="/wp-json/wc-payment-invoice/v1/createPartialPayment" OR uri_path="/wp-json/wc-payment-invoice/v1/cancelPartialPayment") AND http_status=200 AND NOT user_agent="*bot*"

🔗 References

📤 Share & Export