CVE-2026-93339: Ditty < 3.1.70 Stored XSS via Layout Tag Wrapper Attribute
Metaphor Creations Ditty (ditty-news-ticker) before 3.1.70 contains a stored cross-site scripting vulnerability that allows authenticated users with Author-level privileges or higher to inject arbitrary HTML elements by supplying malicious wrapper attribute values in layout tags. The dittylayoutrendertagwrapper() function inserts caller-supplied wrapper attribute values directly as HTML element names without allowlist validation, bypassing wpksespost() sanitization because KSES runs at save time before layout tag attributes are resolved at render time, causing the payload to execute in the browser of any visitor viewing posts or pages embedding the affected Ditty item.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
Metaphor Creations Ditty (ditty-news-ticker)to a version that resolves this vulnerability.Fixed in 3.1.70 - Configuration
Modify/patch Ditty’s ditty_layout_render_tag_wrapper() behavior so wrapper attribute values are validated with an allowlist before inserting them as HTML element names (rather than inserting caller-supplied values directly).
Metaphor Creations Ditty (ditty-news-ticker) layout tag wrapper attribute validation = enable allowlist validation
Event History
Frequently Asked Questions
Who can exploit this issue, and who is exposed to the payload?
An authenticated user with Author-level privileges or higher can inject the malicious wrapper attribute values. The payload executes in the browser of any visitor who views a post or page that embeds the affected Ditty item.
Does exploitation require interaction from a victim?
Yes. The vulnerable content must be rendered in a post or page, and a visitor must view that page for the stored script payload to execute in their browser.
What versions are affected, and what is the remediation?
Ditty versions before 3.1.70 are affected. Update to version 3.1.70 or later.