WPSpeed Plugin Vulnerability (CVE-2026-118784)

On this page

Security Alert Summary

The WPSpeed plugin for WordPress contains a stored cross-site scripting (XSS) vulnerability that allows authenticated users with Subscriber-level access or higher to store entity-encoded markup in their profile display name. Under certain permalink configurations the plugin’s LightImages HTML optimizer can convert entity-encoded content into live HTML, causing script to execute in the context of an author archive when visited by logged-out users.


CVE Details

  • CVE ID: CVE-2026-118784
  • Affected plugin / component: WPSpeed – WordPress Speed, Cache & Performance Optimization (LightImages HTML optimizer)
  • Affected versions: versions up to and including 2.6.10
  • Published: November 7, 2026 10:17:06 AM UTC
  • Last modified: November 7, 2026 10:17:07 AM UTC
  • CVSS v3.1: Base Score 6.4 (MEDIUM) — Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:L/A:N
  • Authentication / privileges / user interaction: Requires authentication with low privileges (Subscriber-level or higher). No user interaction required beyond visiting the affected author archive.
  • Confidentiality / Integrity / Availability impact: Confidentiality: Low; Integrity: Low; Availability: None
  • Weakness: CWE-79 (Cross-site Scripting)

Technical Details

This issue is a stored XSS rooted in the WPSpeed plugin’s LightImages HTML optimizer. Two implementation problems combine to create the condition:

  • Dispatcher::runOptimize() determines whether the current request is the site home page by comparing only the URL path portion of REQUEST_URI against the home URL path. On plain-permalinks installations this logic treats author archive requests using the query format (for example /?author=<ID>) as the home page, causing the LightImages optimizer to run on those pages.
  • LightImages::optimize() applies html_entity_decode() to the full serialized DOMDocument output when the default-enabled img_processing_entity_decode setting is active. This converts entity-encoded markup that was stored as profile data (such as a user nickname or display_name) back into live HTML in the page output.

Because users with Subscriber-level access and above can update their own profile display_name via the normal profile endpoint, an attacker can store entity-encoded markup there. When the optimizer runs on an author archive that is processed by LightImages::optimize(), that encoded markup can be decoded into executable script and run in the context of visitors viewing the archive.


How This Could Impact Your Website

Consider a site with several user roles: a site owner who manages plugins and settings, internal staff who publish or edit content, and external contributors or contractors with Subscriber-level accounts for commenting or profile management. If an authenticated attacker with Subscriber access stores entity-encoded markup in their profile display_name, visitors viewing that user’s author archive could have script executed in their browsers.

  • Internal or external user profile fields containing HTML entities could be rendered as active markup, exposing profile-related data in unexpected ways.
  • Exposed profile content may reveal or make it easier to enumerate usernames and email addresses, increasing the risk of targeted phishing or social engineering against staff or contributors.
  • The impact is limited to data visible through the affected pages and to actions possible via injected script in visitors’ browsers; it does not imply server-side code execution unless additional vulnerabilities are present.

If you’re unsure whether your site is affected or how to assess your current user roles and plugins, it may be worth having a professional review.


Recommended Actions

  • Update the affected plugin as soon as a patched version is available.
  • Review and reduce unnecessary user roles, especially limiting the number of accounts with contributor or higher privileges.
  • Enforce strong passwords and two-factor authentication for editors and administrators.
  • Remove unused or unmaintained plugins from your site.
  • Monitor site activity, logs, and page edits for unusual behavior or unexpected HTML in profile fields.

If you’d like help reviewing your plugins, user roles, or overall WordPress security posture, our team at Freshy is happy to help.


References