Skip to main content
CVE Vulnerability Database

CVE-2025-3075: Elementor Website Builder XSS Vulnerability

CVE-2025-3075 is a stored XSS vulnerability in Elementor Website Builder for WordPress affecting sites with Element Caching enabled. Attackers with contributor access can inject malicious scripts. This article covers technical details, affected versions, impact assessment, and mitigation strategies.

Published:

CVE-2025-3075 Overview

CVE-2025-3075 is a Stored Cross-Site Scripting (XSS) vulnerability in the Elementor Website Builder plugin for WordPress. The flaw affects all versions up to and including 3.29.0. The issue resides in the plugin's elementor-element shortcode, which fails to sanitize input and escape output on user-supplied attributes. Authenticated attackers with contributor-level access or higher can inject arbitrary JavaScript into pages. The injected script executes in the browser of any user who accesses the affected page. Only sites with the Element Caching feature enabled are impacted.

Critical Impact

Contributor-level accounts can persist JavaScript in Elementor pages, enabling session theft, credential harvesting, and account takeover when higher-privileged users view the content.

Affected Products

  • Elementor Website Builder plugin for WordPress, all versions through 3.29.0
  • WordPress installations with the Elementor Element Caching option enabled
  • Free edition distributed via the WordPress plugin directory

Discovery Timeline

  • 2025-07-29 - CVE-2025-3075 published to the National Vulnerability Database
  • 2026-06-17 - Last updated in NVD database

Technical Details for CVE-2025-3075

Vulnerability Analysis

The vulnerability is a Stored Cross-Site Scripting flaw classified under [CWE-79]. The elementor-element shortcode accepts user-controlled attributes and renders them into page output without sufficient sanitization or escaping. When an editor or contributor embeds the shortcode with attacker-supplied attribute values, the raw payload is written to the database and later reflected into rendered HTML.

Exploitation requires authenticated access at the contributor role or above and user interaction, as a victim must load the injected page. The scope is changed because scripts execute in the browser context of visitors, including administrators. Successful exploitation can lead to session cookie theft, forced administrative actions via CSRF, defacement, and drive-by redirection.

Root Cause

The plugin's shortcode handler for elementor-element does not apply WordPress escaping primitives such as esc_attr() or wp_kses() to user-controlled attribute values before insertion into the DOM. When Element Caching is enabled, the tainted output is stored in the cache layer and served to subsequent visitors, converting a reflected condition into a persistent one.

Attack Vector

An authenticated contributor submits content containing a crafted elementor-element shortcode. The shortcode attribute payload embeds a JavaScript event handler or <script> construct. Once a page containing the shortcode is cached and rendered, the payload executes in every visitor's browser session. The attack requires no elevated privileges beyond the contributor role and no direct network access to backend services.

Because realCodeExamples is not provided, refer to the Wordfence Vulnerability Report for payload specifics and the WordPress Plugin Changeset for the corrective diff.

Detection Methods for CVE-2025-3075

Indicators of Compromise

  • Post or page content in wp_posts containing [elementor-element ...] shortcodes with <script>, on*= handlers, or javascript: URIs in attribute values.
  • Unexpected outbound requests from visitor browsers to attacker-controlled domains originating from Elementor-rendered pages.
  • New or modified administrator accounts created shortly after high-privilege users visited contributor-authored pages.
  • Elementor cache files under wp-content/uploads/elementor/css/ containing script payloads or unusual HTML fragments.

Detection Strategies

  • Query the WordPress database for post content matching elementor-element shortcodes and inspect attribute values against an HTML/JavaScript allowlist.
  • Deploy a Web Application Firewall rule that inspects POST bodies to /wp-admin/post.php and /wp-admin/admin-ajax.php for shortcode attributes containing script sinks.
  • Monitor plugin version telemetry to identify hosts still running Elementor 3.29.0 or earlier with Element Caching enabled.

Monitoring Recommendations

  • Log and review all content changes submitted by contributor-role accounts, especially those inserting shortcodes.
  • Enable Content Security Policy (CSP) reporting to capture inline script violations originating from Elementor pages.
  • Alert on modifications to WordPress user roles or the creation of privileged accounts within 24 hours of contributor activity.

How to Mitigate CVE-2025-3075

Immediate Actions Required

  • Update the Elementor Website Builder plugin to the version released after 3.29.0 that contains the sanitization fix referenced in the plugin changeset.
  • Disable Element Caching in Elementor settings until patching is complete on sites unable to upgrade immediately.
  • Audit contributor and author accounts, removing inactive users and enforcing multi-factor authentication for all editorial roles.

Patch Information

Elementor addressed the vulnerability in the plugin changeset tracked as 3302102 in the WordPress plugin repository. The fix adds sanitization and output escaping to attributes processed by the elementor-element shortcode. Administrators should apply the patched version via the WordPress plugin dashboard or WP-CLI using wp plugin update elementor.

Workarounds

  • Turn off Element Caching under Elementor > Settings > Features, which prevents the persistent XSS condition from being triggered.
  • Restrict contributor-role assignments and require editor review before publishing any content containing Elementor shortcodes.
  • Deploy a strict Content Security Policy that blocks inline scripts and unauthorized script sources on front-end pages.
bash
# Update Elementor via WP-CLI to the patched release
wp plugin update elementor

# Verify installed version is above 3.29.0
wp plugin get elementor --field=version

# Temporarily disable Element Caching option if patching is delayed
wp option patch delete elementor_experiment-e_element_cache

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.