{"id":"CVE-2026-93535","kind":"vulnerability","aliases":["CVE-2026-93535"],"related":[],"title":"WordPress Dark Mode plugin: stored XSS via icon_light shortcode attribute","description":"The Dark Mode – Improve Accessibility with AI Powered Dark Theme plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'icon_light' Shortcode Attribute in all versions up to, and including, 5.3.17 due to insufficient input sanitization and output 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 accesses an injected page.","summary":"The Dark Mode WordPress plugin does not sanitize the icon_light shortcode attribute, so content is stored unescaped in pages. An authenticated Contributor or higher user can inject JavaScript that runs in the browser of anyone who views the page.","severity":"medium","cvss":6.4,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","plugin","self-hosted","wordpress"],"not_affected_if":["plugin-not-installed","plugin-updated"],"how_to_check":"- Check the installed plugin version in the WordPress admin plugin list, or with `wp plugin get <plugin-slug> --field=version`\n- Search post content for the `icon_light` shortcode attribute, for example `wp post list --post_type=page,post --format=ids` then inspect content\n- unknown whether the sources list a specific fixed release beyond versions up to and including `5.3.17`","fix":"- Update the Dark Mode – Improve Accessibility with AI Powered Dark Theme plugin to a release newer than `5.3.17`\n- Review pages and posts that use the `icon_light` shortcode and remove any unexpected script content\n- unknown whether a patched version number is given in the sources","status":"open","published_at":"2026-10-16T04:18:41+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","triaged_at":"2026-10-25T03:59:59+00:00","updated_at":"2026-10-25T03:59:59+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T03:59:59Z","model":"claude-haiku-5-5","output":{"fix":"- Update the Dark Mode – Improve Accessibility with AI Powered Dark Theme plugin to a release newer than `5.3.17`\n- Review pages and posts that use the `icon_light` shortcode and remove any unexpected script content\n- unknown whether a patched version number is given in the sources","reach":"internet","title":"WordPress Dark Mode plugin: stored XSS via icon_light shortcode attribute","impact":"medium","summary":"The Dark Mode WordPress plugin does not sanitize the icon_light shortcode attribute, so content is stored unescaped in pages. An authenticated Contributor or higher user can inject JavaScript that runs in the browser of anyone who views the page.","category":"package","nicknames":[],"who_cares":["wordpress","self-hosted","plugin"],"confidence":0.7,"needs_auth":"yes","worst_case":"Injected scripts run in visitors' browsers and can steal sessions.","analyst_note":"","how_to_check":"- Check the installed plugin version in the WordPress admin plugin list, or with `wp plugin get <plugin-slug> --field=version`\n- Search post content for the `icon_light` shortcode attribute, for example `wp post list --post_type=page,post --format=ids` then inspect content\n- unknown whether the sources list a specific fixed release beyond versions up to and including `5.3.17`","needs_analyst":false,"not_affected_if":["plugin-updated","plugin-not-installed"],"who_is_affected":"Sites running the Dark Mode WordPress plugin at version `5.3.17` or older. Exposure requires an account at Contributor level or higher that can write content using the shortcode, and the injected script runs for visitors who open the affected page. Sites without the plugin or on a newer release can skip it.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000664,"input_tokens":3393,"output_tokens":649,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2026':13A,16A '-93535':14A,17A '5.3.17':98C 'access':68C,118C,134C 'ai':70C 'anyon':59B 'arbitrari':123C 'attack':113C 'attribut':11A,36B,90C 'authent':45B,112C 'browser':57B 'content':38B 'contributor':46B,116C 'contributor-level':115C 'cross':82C 'cross-sit':81C 'cve':12A,15A 'dark':2A,25B,65C,72C 'due':99C 'escap':106C 'execut':130C 'higher':48B 'host':22B 'icon':8A,33B,87C 'improv':67C 'includ':97C 'inject':51B,122C,136C 'input':102C 'insuffici':101C 'javascript':52B 'level':117C 'light':9A,34B,88C 'make':108C 'mode':3A,26B,66C 'output':105C 'packag':18B 'page':43B,63B,127C,137C 'plugin':4A,19B,28B,74C 'possibl':110C 'power':71C 'run':54B 'sanit':31B,103C 'script':84C,125C 'self':21B 'self-host':20B 'shortcod':10A,35B,89C 'site':83C 'store':5A,40B,80C 'theme':73C 'unescap':41B 'user':49B,133C 'version':93C 'via':7A,85C 'view':61B 'vulner':78C 'web':124C 'whenev':131C 'wordpress':1A,23B,27B,76C 'xss':6A","nicknames":[],"mitigations":[],"who_affected":"Sites running the Dark Mode WordPress plugin at version `5.3.17` or older. Exposure requires an account at Contributor level or higher that can write content using the shortcode, and the injected script runs for visitors who open the affected page. Sites without the plugin or on a newer release can skip it.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-16T04:18:41+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N","cvss_by":"security@wordfence.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-93535","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-93535","severity":null,"published_at":"2026-10-16T04:18:41+00:00","modified_at":"2026-10-16T15:17:36+00:00","first_seen_at":"2026-10-23T21:57:12+00:00","fetched_at":"2026-10-23T22:28:54+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}