Atomic Edge analysis of CVE-2026-1210:
The vulnerability is an authenticated Stored Cross-Site Scripting (XSS) flaw in the Happy Addons for Elementor WordPress plugin, versions 3.20.7 and earlier. The flaw resides in the plugin’s Age Gate and SVG Draw widgets, allowing Contributor-level or higher authenticated users to inject arbitrary JavaScript into pages. The CVSS score of 6.4 reflects the moderate impact of stored XSS requiring contributor-level access.
Atomic Edge research identifies the root cause as insufficient input sanitization and output escaping for user-controlled data stored in the ‘_elementor_data’ meta field. Specifically, the `print_unescaped_setting()` method was used to output the ‘desc’ and ‘footer_text’ fields in `/happy-elementor-addons/widgets/age-gate/widget.php` (lines 2054 and 2119) and the ‘ha_custom_svg’ field in `/happy-elementor-addons/widgets/svg-draw/widget.php` (line 730). These fields lacked proper sanitization when saved, allowing raw HTML/JavaScript to be stored and later rendered unfiltered.
The exploitation method involves an authenticated attacker with Contributor+ privileges creating or editing a post or page using the Elementor editor. The attacker injects a malicious script payload into the ‘Description’ or ‘Footer Text’ field of the Age Gate widget, or the ‘SVG Code’ field of the SVG Draw widget. When the page is saved, the payload is stored in the post’s ‘_elementor_data’ meta field as serialized JSON. The payload executes in the browsers of any user who visits the compromised page.
The patch in version 3.20.8 addresses the issue by implementing proper sanitization and escaping. For the Age Gate widget, a `sanitize_callback` parameter with value `’wp_kses_post’` was added to the ‘desc’ and ‘footer_text’ control definitions (lines 145 and 394). The output calls were changed from `$this->print_unescaped_setting()` to `echo wp_kses_post( $settings[…] )` (lines 2054 and 2119). For the SVG Draw widget, a `sanitize_callback` was added to the ‘ha_custom_svg’ control (line 105), and the output logic was modified to conditionally apply `wp_kses_post` unless the user has the ‘unfiltered_html’ capability (lines 730-736).
Successful exploitation leads to stored XSS, allowing an attacker to perform actions within the context of a victim user’s session. This can result in session hijacking, defacement, redirection to malicious sites, or theft of sensitive information like cookies and authentication tokens. For administrators, this could facilitate full site compromise.







