Easy Elements for Elementor Unauthenticated Privilege Escalation via `custom_meta` Overwrite (CVE-2026-9018)
by Atomic Edge ([atomicedge.io](https://atomicedge.io)) · 2026-07-05
- Severity
- High
- CVE
- CVE-2026-9018
- Category
- web
- Affected product
- Easy Elements for Elementor – Addons & Website Templates (easy-elements WordPress plugin)
- Affected versions
- <= 1.4.5 (fixed in 1.4.6)
- Disclosed
- 2026-07-05
- Patch status
- patched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-06 |
| Author / Researcher | Atomic Edge (atomicedge.io) |
| CVE / Advisory | CVE-2026-9018 |
| Category | web |
| Severity | High |
| CVSS Score | 8.8 |
| Status | PoC |
| Tags | wordpress, elementor, easy-elements, privilege-escalation, cwe-269, unauthenticated, ajax, wp-capabilities |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Easy Elements for Elementor – Addons & Website Templates (easy-elements WordPress plugin) |
| Versions Affected | <= 1.4.5 (fixed in 1.4.6) |
| Language / Platform | PHP / WordPress (AJAX) |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
The easyel_handle_register() function, exposed via the unauthenticated wp_ajax_nopriv_eel_register AJAX action, passes attacker-controlled custom_meta POST array values directly into update_user_meta() without any key whitelist. Because WordPress stores a user’s role/capabilities in the wp_capabilities user meta key, an unauthenticated attacker can register a new account while simultaneously injecting custom_meta[wp_capabilities][administrator]=1, overwriting the new account’s capabilities to grant full administrator privileges — all in a single unauthenticated request, provided WordPress user registration is enabled and the plugin’s Login/Register widget is publicly reachable.
Vulnerability Details
Root Cause
Improper privilege management (CWE-269): easyel_handle_register() forwards all keys of the custom_meta request parameter to update_user_meta() with no whitelist, allowing sensitive meta keys such as wp_capabilities to be overwritten by the requester.
Attack Vector
- Fetch the page containing the plugin’s Login/Register Elementor widget and extract the publicly-visible
easy_elements_noncevalue from the page DOM. - Send a POST request to
/wp-admin/admin-ajax.phpwithaction=eel_register, valid registration fields, andcustom_meta[wp_capabilities][administrator]=1. easyel_handle_register()creates the new user and then callsupdate_user_meta()with the attacker-suppliedcustom_meta, overwritingwp_capabilitiesto mark the new account as an administrator.- Attacker logs in with the newly created credentials as a full WordPress administrator.
Impact
Unauthenticated attacker gains a fully privileged administrator account on any WordPress site with open registration and the vulnerable plugin’s registration widget publicly exposed — equivalent to full site compromise.
Environment / Lab Setup
Target: WordPress site with "Anyone can register" enabled and the Easy Elements for Elementor
Login/Register widget publicly accessible, plugin version <= 1.4.5
Attacker: Any HTTP client (poc.py provided, requires `requests`)
Proof of Concept
PoC Script
See
CVE-2026-9018.pyin this folder.
| |
The script harvests the easy_elements_nonce from the target’s Login/Register widget, submits a crafted eel_register AJAX request that overwrites wp_capabilities to administrator, and optionally verifies the resulting account can log into wp-admin.
Detection & Indicators of Compromise
Signs of compromise:
- New user accounts with
administratorrole that were created via self-registration rather than an existing admin action. admin-ajax.phprequests withaction=eel_registercontaining acustom_metaarray referencingwp_capabilities,wp_user_level, orsession_tokens.
Remediation
| Action | Detail |
|---|---|
| Primary fix | Update Easy Elements for Elementor to 1.4.6 or later |
| Interim mitigation | Disable public user registration or the plugin’s Login/Register widget until patched; audit for unexpected administrator accounts |
References
Notes
Mirrored from https://github.com/xxconi/CVE-2026-9018 on 2026-07-05.
| |