{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2026-118784", "assignerOrgId": "b15e7b5b-3da4-40ae-a43c-f7aa60e62599", "state": "PUBLISHED", "assignerShortName": "Wordfence", "dateReserved": "2026-10-28T19:51:16.327Z", "datePublished": "2026-11-07T09:25:46.871Z", "dateUpdated": "2026-11-07T18:06:03.788Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "b15e7b5b-3da4-40ae-a43c-f7aa60e62599", "shortName": "Wordfence", "dateUpdated": "2026-11-07T09:25:46.871Z" }, "affected": [ { "vendor": "john-dagelmore", "product": "WPSpeed – WordPress Speed, Cache & Performance Optimization (Core Web Vitals, PageSpeed 100)", "versions": [ { "version": "0", "status": "affected", "lessThanOrEqual": "2.6.10", "versionType": "semver" } ], "defaultStatus": "unaffected" } ], "descriptions": [ { "lang": "en", "value": "The WPSpeed plugin for WordPress is vulnerable to Stored Cross-Site Scripting in versions up to, and including, 2.6.10 This is due to a combination of two issues in the LightImages HTML optimizer: (1) Dispatcher::runOptimize() decides whether the current request is the site's home page by comparing only the URL path from REQUEST_URI against the path of the home URL, so on a plain-permalinks install the author archive URL /?author= is treated as the home page and the LightImages optimizer runs on it; and (2) LightImages::optimize() calls html_entity_decode() across the entire serialized DOMDocument output under the default-enabled img_processing_entity_decode setting, converting any entity-encoded markup present as plain text in the page (including WordPress's rendered author title) into live HTML. This makes it possible for authenticated attackers, with Subscriber-level access and above, to store entity-encoded markup in their own nickname/display_name through the normal profile endpoint and have that markup rehydrated into executing script when any logged-out visitor loads their author archive." } ], "title": "WPSpeed <= 2.6.10 - Authenticated (Subscriber+) Stored Cross-Site Scripting via User Nickname/Display Name", "references": [ { "url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/47aa1a74-4189-4521-ba6e-e91a06b8f5a6?source=cve" }, { "url": "https://plugins.trac.wordpress.org/browser/wpspeed/tags/2.6.10/src/Dispatcher.php#L170" }, { "url": "https://plugins.trac.wordpress.org/browser/wpspeed/tags/2.6.10/src/Core/LightImages.php#L628" }, { "url": "https://plugins.trac.wordpress.org/browser/wpspeed/tags/2.6.10/src/Core/Optimize.php#L152" }, { "url": "https://plugins.trac.wordpress.org/changeset/3771695/wpspeed/trunk/src/Core/LightImages.php" } ], "problemTypes": [ { "descriptions": [ { "lang": "en", "description": "CWE-79 Improper Neutralization of Input During Web Page Generation", "cweId": "CWE-79", "type": "CWE" } ] } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N", "baseScore": 6.4, "baseSeverity": "MEDIUM" } } ], "credits": [ { "lang": "en", "type": "finder", "value": "poiri3r" } ], "timeline": [ { "time": "2026-10-28T20:58:29.000Z", "lang": "en", "value": "Vendor Notified" }, { "time": "2026-11-06T21:25:42.000Z", "lang": "en", "value": "Disclosed" } ] }, "adp": [ { "metrics": [ { "other": { "type": "ssvc", "content": { "id": "CVE-2026-118784", "role": "CISA Coordinator", "options": [ { "Exploitation": "none" }, { "Automatable": "no" }, { "Technical Impact": "partial" } ], "version": "2.0.3", "timestamp": "2026-11-07T18:00:49.153607Z" } } } ], "title": "CISA ADP Vulnrichment", "providerMetadata": { "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "shortName": "CISA-ADP", "dateUpdated": "2026-11-07T18:06:03.788Z" } } ] } }