Divi permits Contributor-level DOM stored XSS through video sliders
Divi through 4.27.6 does not treat the et_pb_video_slider_item image_src attribute as a URL during save-time validation. Although the server escapes it into data-image, the carousel browser-decodes the value and concatenates it into new HTML through jQuery.after() without re-escaping. A Contributor can store script that executes when a visitor hovers over the carousel thumbnail.
- Component
- Divi
- Plugin slug
divi- Affected
- <= 4.27.6
- Safe version
- See mitigation notes
- Published
- Sep 05, 2026
This CVE was published Sep 05, 2026 and is one of 11 known issues for this theme.
Update, patch or deactivate.
No confirmed fixed release is identified. Obtain a vendor-confirmed update or remove affected video-slider items, and invalidate privileged sessions if an administrator interacted with malicious carousel content.
No confirmed safe version is listed. Consider a vendor-supported patch or temporarily restricting the affected functionality while you assess the risk.
Deactivate only when warranted by your risk profile, or when advised by your hosting provider in the limited circumstances where the vulnerability cannot otherwise be mitigated. If you’re unsure which action is appropriate, contact Fused or your hosting provider for guidance.
Technical description
The Divi theme for WordPress is vulnerable to DOM-Based Stored Cross-Site Scripting via the `image_src` attribute of the `et_pb_video_slider_item` shortcode in all versions up to, and including, 4.27.6. This is due to the `image_src` field not being included in the `$url_options` whitelist (which only contains `url`, `button_link`, `button_url`), so it never receives `esc_url_raw()` at save time. On the server side, the value is rendered into a `data-image` HTML attribute using `esc_attr()`, which encodes double quotes as `"`. However, the client-side JavaScript carousel code in `custom.unified.js` reads this attribute using jQuery's `.data('image')`, which returns the browser-decoded value (with `"` decoded back to `"`). The decoded value is then concatenated directly into an HTML string and injected into the DOM via `jQuery.after()` without re-escaping. This makes it possible for authenticated attackers, with Contributor-level access and above, to inject arbitrary web scripts in pages that will execute whenever a user hovers over the carousel thumbnail.
CVE / CNA vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N