Atomic Edge analysis of CVE-2026-11778 (metadata-based): This vulnerability affects the CURCY – Multi Currency for WooCommerce plugin (slug: woo-multi-currency) up to version 2.2.14. An unauthenticated attacker can execute arbitrary WordPress shortcodes by sending a crafted request via the ‘exchange’ parameter. The CVSS score is 5.4 (Medium), with a vector of AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N. The CWE classification is 94 (Improper Control of Generation of Code ‘Code Injection’), which indicates the plugin passes unsanitized user input to the do_shortcode() function.
Root Cause: Based on the CWE description and vulnerability metadata, the root cause is a missing validation or sanitization of the ‘exchange’ parameter before it is used as an argument to do_shortcode(). The plugin likely registers an AJAX action (probably ‘woo_multi_currency_ajax’ or similar) that handles currency exchange calculations. The code retrieves the ‘exchange’ value from the request and passes it directly to do_shortcode() without checking if the shortcode is allowed or sanitizing the input. This inference is drawn from the CWE classification and the fact that the attack vector is unauthenticated and involves shortcode execution. No code diff was available to confirm this, but the pattern is consistent with other similar WordPress plugin vulnerabilities.
Exploitation: An attacker can send a POST request to /wp-admin/admin-ajax.php with the action parameter set to the plugin’s AJAX hook (e.g., ‘woo_multi_currency_ajax’ or ‘curcy_ajax’) and the ‘exchange’ parameter containing a malicious shortcode payload. For example: action=woo_multi_currency_ajax&exchange=[wp_authenticate_user]. The attacker does not need authentication. The shortcode executes on the server side. If the plugin does not verify a nonce or capability, the request succeeds. The attacker can use any WordPress core shortcode (e.g., to output sensitive data) or plugin shortcodes that perform harmful actions.
Remediation: The fix should validate the ‘exchange’ parameter before passing it to do_shortcode(). The developer should either restrict allowed shortcodes to a whitelist (like only currency conversion shortcodes) or strip all shortcodes from the parameter (e.g., using strip_shortcodes() or wp_kses()). Additionally, a nonce check should be added to verify the request’s origin, and capability checks should be enforced for authenticated actions. The patched version 2.2.15 likely implements one of these measures.
Impact: Successful exploitation allows an attacker to execute arbitrary shortcodes without authentication. This can lead to leaking sensitive information (e.g., user emails, site configuration) via shortcodes like [wp_authenticate_user] or [user_data]. It can also allow modifying site content or settings if vulnerable shortcodes exist. The CVSS confidentiality and integrity impacts are Low, but depending on available shortcodes, the actual impact could be higher. No privilege escalation is possible directly, but information disclosure may assist further attacks.







