CVE-2025-12086

4.3 MEDIUM

📋 TL;DR

This vulnerability in the Return Refund and Exchange For WooCommerce WordPress plugin allows authenticated attackers with Subscriber-level access or higher to delete other users' refund requests. It affects all plugin versions up to 4.5.5 due to missing validation on user-controlled parameters in the 'wps_rma_cancel_return_request' AJAX endpoint.

💻 Affected Systems

Products:
  • Return Refund and Exchange For WooCommerce (WordPress plugin)
Versions: All versions up to and including 4.5.5
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin and at least one user with Subscriber role or higher.

⚠️ 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

Malicious users could systematically delete legitimate refund requests, causing financial disputes, customer dissatisfaction, and potential regulatory compliance issues.

🟠

Likely Case

Attackers delete random or targeted refund requests, disrupting business operations and requiring manual reconciliation.

🟢

If Mitigated

With proper access controls and validation, only authorized users can manage their own refund requests.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access but is straightforward once authenticated.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.5.6 or later

Vendor Advisory: https://plugins.trac.wordpress.org/changeset?sfp_email=&sfph_mail=&reponame=&old=3394215%40woo-refund-and-exchange-lite&new=3394215%40woo-refund-and-exchange-lite&sfp_email=&sfph_mail=

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'Return Refund and Exchange For WooCommerce'. 4. Click 'Update Now' if update is available. 5. Alternatively, download version 4.5.6+ from WordPress plugin repository and manually update.

🔧 Temporary Workarounds

Disable vulnerable AJAX endpoint

all

Remove or restrict access to the 'wps_rma_cancel_return_request' AJAX endpoint via .htaccess or plugin modification.

# Add to .htaccess or site configuration:
# Deny access to specific AJAX endpoint
RewriteRule ^wp-admin/admin-ajax\.php\?action=wps_rma_cancel_return_request - [F,L]

Temporary role restriction

all

Temporarily remove Subscriber role access to refund management functions.

# Using WordPress functions in theme functions.php or custom plugin:
add_filter('user_has_cap', 'restrict_refund_access', 10, 4);
function restrict_refund_access($allcaps, $caps, $args, $user) {
    if (in_array('subscriber', $user->roles) && isset($allcaps['manage_woocommerce'])) {
        unset($allcaps['manage_woocommerce']);
    }
    return $allcaps;
}

🧯 If You Can't Patch

  • Disable the Return Refund and Exchange For WooCommerce plugin entirely until patched.
  • Implement additional server-side validation for all refund-related AJAX requests.

🔍 How to Verify

Check if Vulnerable:

Check plugin version in WordPress admin under Plugins > Installed Plugins. If version is 4.5.5 or lower, system is vulnerable.

Check Version:

wp plugin list --name='Return Refund and Exchange For WooCommerce' --field=version

Verify Fix Applied:

Confirm plugin version is 4.5.6 or higher. Test refund deletion functionality with Subscriber account to ensure proper authorization checks.

📡 Detection & Monitoring

Log Indicators:

  • Multiple DELETE/POST requests to /wp-admin/admin-ajax.php with action=wps_rma_cancel_return_request from non-admin users
  • Unusual refund request deletions in WooCommerce logs

Network Indicators:

  • AJAX requests to wps_rma_cancel_return_request endpoint with different user IDs than the authenticated user

SIEM Query:

source="wordpress" AND (url_path="/wp-admin/admin-ajax.php" AND query_string="*action=wps_rma_cancel_return_request*") AND user_role="subscriber"

🔗 References

📤 Share & Export