CVE-2025-47563
Executive Summary
CVE-2025-47563 is a Missing Authorization vulnerability in the Villatheme CURCY (WooCommerce Multi-Currency) WordPress plugin, affecting versions up to and including 2.3.7. This flaw allows unauthenticated attackers to access functionality that should be constrained by Access Control Lists (ACLs). The vulnerability has a CVSS score of 5.3 (Medium) and an EPSS score of 0.0%, indicating low exploitation likelihood at this time. No public proof-of-concept or patch is currently available. As a WordPress plugin vulnerability, it directly impacts the WordPress ecosystem and does not involve Apache or Nginx server software.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
This vulnerability affects a WordPress plugin distributed via the official WordPress plugin repository and third-party marketplaces. Organizations using CURCY should verify their plugin version and monitor for updates. No known supply chain compromise has been reported.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Base Score: 5.3 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability allows unauthenticated access to certain plugin functionalities, potentially exposing sensitive configuration data or enabling unauthorized actions.
Deep Dive & Mechanics
The CURCY plugin provides multi-currency support for WooCommerce stores. The vulnerability lies in missing authorization checks on certain AJAX actions or REST API endpoints. Specifically, the plugin fails to verify user capabilities before executing functions that should be restricted to administrators or shop managers.
Root Cause: The plugin does not implement proper capability checks (e.g., current_user_can('manage_options')) on critical callbacks. This allows any unauthenticated visitor to trigger these functions.
Attack Vector: An attacker can send crafted HTTP requests to the vulnerable endpoints without authentication. The exact endpoints are not publicly documented, but typical patterns include:
/wp-admin/admin-ajax.php?action=curcy_*/wp-json/curcy/v1/*
Impact: Successful exploitation could lead to:
- Exposure of plugin configuration (currency rates, API keys)
- Modification of currency settings
- Potential privilege escalation if combined with other vulnerabilities
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common authorization patterns:
Vulnerable Code (<= 2.3.7):
add_action('wp_ajax_nopriv_curcy_update_rates', 'curcy_update_rates');
function curcy_update_rates() {
// No capability check
update_option('curcy_rates', $_POST['rates']);
}
Patched Code (Hypothetical):
add_action('wp_ajax_nopriv_curcy_update_rates', 'curcy_update_rates');
function curcy_update_rates() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
update_option('curcy_rates', $_POST['rates']);
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- WordPress site with CURCY plugin <= 2.3.7
- Network access to the target
Exploitation Steps:
- Identify vulnerable endpoints using wordlist or fuzzing:
ffuf -u http://target.com/wp-admin/admin-ajax.php?action=FUZZ -w /path/to/wordlist -fc 403,404 - Send unauthenticated request to modify currency settings:
curl -X POST http://target.com/wp-admin/admin-ajax.php \ -d "action=curcy_update_rates&rates[USD]=1.5" - Verify unauthorized access by checking if the response returns success without authentication.
No public exploit code is available for this CVE.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwithactionparameters containingcurcy_from unauthenticated users. - Alert on any POST requests to
/wp-json/curcy/v1/*without valid authentication tokens.
Defense:
- Immediately update the plugin if a patch becomes available.
- Implement Web Application Firewall (WAF) rules to block unauthenticated access to known CURCY endpoints.
- Restrict access to
/wp-admin/admin-ajax.phpusing IP whitelisting or additional authentication.
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP requests to
/wp-admin/admin-ajax.phpwithaction=curcy_*parameters from unauthenticated sources - POST requests to
/wp-json/curcy/v1/*withoutX-WP-Nonceheader
File IOCs:
- Modified options in
wp_optionstable withcurcy_prefix - Unexpected entries in
wp_curcy_*custom tables
Log IOCs:
- Repeated 200 responses to
admin-ajax.phpfrom IPs not in admin whitelist - PHP error logs showing
Undefined indexorCall to undefined functionrelated to CURCY
Detection Engineering
YARA Rule
rule CVE_2025_47563_CURCY_Missing_Auth {
meta:
description = "Detects missing authorization in CURCY plugin"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-47563"
strings:
$vuln_func = "wp_ajax_nopriv_curcy" nocase
$no_check = "current_user_can" nocase
condition:
$vuln_func and not $no_check
}
Sigma Rule
title: CVE-2025-47563 - CURCY Missing Authorization
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated access to CURCY plugin AJAX endpoints
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri|contains: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=curcy_'
sc-status: 200
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: medium
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2025-47563 - CURCY Missing Authorization Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=curcy_"; http_client_body;
classtype:attempted-recon;
sid:1000001;
rev:1;
reference:cve,2025-47563;
)
Remediation & Mitigation
Immediate Actions:
- Disable the CURCY plugin until a patch is available.
- If disabling is not possible, restrict access to
/wp-admin/admin-ajax.phpusing.htaccess:<Files "admin-ajax.php"> Require ip 192.168.1.0/24 </Files> - Monitor WordPress logs for suspicious AJAX requests.
Long-term Fix:
- Apply vendor patch when released.
- Implement capability checks in custom code:
if (!current_user_can('manage_options')) { wp_die('Unauthorized', 403); } - Use WordPress nonces for all AJAX actions.
Valters IT - DevSecOps & CTI Expert
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.