Read the docs

Stored cross-site scripting in WPSpeed via display names

Priority LOW 28CWE-79Published · Updated

Key facts

Attack vector
Network
Privileges required
Low
User interaction
None
Attack complexity
Low
Impact type
Cross-site scripting
Confidentiality · integrity · availability
Low · Low · None
Fix status
No fix listed

Attack profile from CVSS 3.1 · CNA. Fix status from CNA. Impact type from CWE-79.

Summary

The WPSpeed plugin for WordPress through 2.6.10 is vulnerable to stored cross-site scripting (CWE-79). An optimizer step decodes HTML entities across the whole author archive page, so markup stored as entity-encoded text in a user's display name runs in visitors' browsers. An authenticated attacker with Subscriber access or higher can store this markup in their own nickname and trigger it when logged-out visitors load their author archive.

Written with Claude Haiku 5.5 from the sources below · 2026-11-07

Description from the CNA

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=<ID> 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.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00331 26th percentileScored 2026-11-07
Fix No fix listed No fixed version in the sources yet

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
No
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
john-dagelmoreWPSpeed – WordPress Speed, Cache & Performance Optimization (Core Web Vitals, PageSpeed 100)up to 2.6.10—No fix listedCNA
  • WPSpeed – WordPress Speed, Cache & Performance Optimization (Core Web Vitals, PageSpeed 100) Vendorjohn-dagelmore Affected up to 2.6.10 Fixed in — No fix listed CNA

Remediation

The sources list no fixed version for WPSpeed.

Written with Claude Haiku 5.5 from the sources below · 2026-11-07

Timeline

  1. 2026-11-07 Threatist record created from CVE-2026-118784
  2. 2026-11-07 Alias added: GHSA-jhr8-3vqj-g7jj
  3. 2026-11-07 CISA SSVC decision points changed
  4. 2026-11-07 Priority changed: MEDIUM → LOW

References

  • TI-2026-08006 GPTranslate <= 2.31 - Unauthenticated Stored Cross-Site Scripting via REST API Translation Storage CVSS 3.1HIGH 7.2
  • TI-2026-60447 GPTranslate <= 2.34.6 - Unauthenticated Sensitive Information Exposure in Public Frontend Inline Script CVSS 3.1MEDIUM 5.3

Sources