Skip to main content

W3 Total Cache EUVDEUVD-2026-91335

| CVE-2026-87920 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-02 Wordfence GHSA-pv8h-wp6c-44p7
7.2
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach public comment form unauthenticated
  2. Delivery
    Submit crafted comment payload with '?' delimiter
  3. Exploit
    Regex rewrite strips '?' and closing quote
  4. Execution
    Payload escapes HTML attribute boundary
  5. Persist
    Stored script served in page
  6. Impact
    Script executes in visitor/admin browser

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the 'Remove query strings from static resources' option to be ENABLED in W3 Total Cache - this is the specific, named precondition, because mutate_url() must strip the '?' delimiter and everything after it (including the closing quote of the outer HTML attribute) to break the attribute boundary and inject script. The attack vector is the public comment submission feature, so no authentication is needed (PR:N). Limiting factors: the required option is not the default configuration, affected versions are 2.10.6 and earlier (patched in 2.10.7), and successful script execution depends on a user/administrator subsequently viewing a page that renders the malicious comment. On sites without that caching option enabled, the vector is not exploitable.

Impact

This is a genuine but conditional priority rather than a drop-everything emergency. The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N, 7.2 High) describes a network-reachable, unauthenticated stored XSS with a changed scope (payload executes in the browser context of any visitor), which is consistent with a comment-based stored XSS. The decisive limiting signal, however, is that exploitation is gated on a specific non-default setting - the 'Remove query strings from static resources' option in W3 Total Cache - which must be enabled for mutate_url() to strip the '?' and break the attribute boundary. No EPSS score, CISA KEV entry, or public POC was supplied in the input, so there is no evidence of active exploitation or weaponization; exploitation status is 'no public exploit identified at time of analysis.' Signals are broadly consistent (CVSS low-privilege/network vector matches an unauthenticated comment vector), but the real-world risk is lower than the raw 7.2 suggests because the required configuration is not the default, impact is limited to Low confidentiality/integrity (reflected/stored script, no direct server compromise or availability loss), and no exploitation telemetry exists. Prioritize patching on sites known to run the affected plugin with the query-string-removal option enabled; treat it as routine for other deployments.

Exploit ScenarioDerived

An unauthenticated attacker submits a blog comment containing a crafted string designed so that, after W3 Total Cache's output-buffer regex rewrite strips the '?' delimiter (and the trailing closing quote of the surrounding HTML attribute), the comment content breaks out of its attribute and injects an executable script. When any subsequent visitor or administrator loads the page that renders that comment, the injected JavaScript runs in their browser session. No public exploit code was identified in the provided data, and the attack only works when the 'Remove query strings from static resources' option is enabled.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 02, 2026

Stored cross-site scripting in the W3 Total Cache plugin for WordPress (all versions up to and including 2.10.6) lets unauthenticated attackers submit a comment containing crafted script payload that is later rendered unsanitized in a page, executing in the browser of any user or administrator who views it - but only on sites where the 'Remove query strings from static resources' option is enabled, since the plugin's output-buffer URL rewrite must strip the '?' delimiter and the closing quote of the enclosing HTML attribute to break out of the attribute context. The issue is fixed in 2.10.7, and no public exploit code or confirmed active exploitation was identified at time of analysis. Because the required caching option is not the default configuration and execution depends on a victim subsequently viewing the injected page, the assessed vector rates this as attack complexity High (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N) even though the vendor-published score is 7.2 with AC:L.

RemediationAI

Vendor-released patch: upgrade W3 Total Cache to 2.10.7 (WordPress.org changeset 3723494, which supersedes the vulnerable 2.10.6 tag), then purge all caches so previously buffered/rewritten pages are regenerated; if the plugin cannot be updated immediately, the highest-fidelity compensating control is to disable the 'Remove query strings from static resources' setting under Performance > Browser Cache, since that option is the explicit precondition for the regex to break the attribute boundary - the trade-off is loss of the query-string-stripping caching optimization (slightly lower cache hit rates on some CDNs) and cached pages must be flushed for the change to take effect. Additional short-term mitigations with trade-offs: enforce full comment moderation or temporarily disable comments on affected sites (removes the unauthenticated injection vector but suppresses legitimate user engagement), and deploy a WAF rule that blocks comment payloads containing HTML attribute-breaking sequences such as quote characters following query-string patterns (detection is heuristic and may produce false positives on legitimate comment text). Because injected script persists in stored comment content, remediation should also include reviewing and removing any existing comments or cached pages containing suspicious attributes. Advisory references: https://www.wordfence.com/threat-intel/vulnerabilities/id/34bd7c32-f4c5-4015-909a-e4730f35494b?source=cve and the fix diff at https://plugins.trac.wordpress.org/changeset/3723494/w3-total-cache/trunk/BrowserCache_Plugin.php .

Affected VersionsENISA

W3 Total Cache 0 ≤2.10.6

Affected Packages

euvd w3_total_cache no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

W3 Total Cache is a WordPress performance plugin maintained by BoldGrid (CPE cpe:2.3:a:boldgrid:w3_total_cache:*:*:*:*:*:*:*:*) that caches pages and rewrites front-end output through PHP output buffering. In BrowserCache_Plugin.php, the mutate_url() logic performs a regular-expression rewrite of static-resource URLs so that query strings can be removed when the 'Remove query strings from static resources' option is enabled; the regex in versions through 2.10.6 strips the '?' character and everything that follows it on the matched line. When attacker-controlled comment content is placed inside an HTML attribute (for example a src or href value on a page rendering that comment), the greedy rewrite can consume the closing double quote of the attribute together with the trailing text, breaking the attribute boundary and letting attacker-supplied markup be parsed as real HTML/JavaScript. The root cause class is CWE-79 (Improper Neutralization of Input During Web Page Generation / Cross-Site Scripting), combining insufficient input sanitization of comment content with unsafe output escaping during the buffered rewrite stage. The scope-change component (S:C) reflects that the injected script runs in the security context of the affected page rather than the plugin itself. Relevant code paths are the 2.10.6 tag of BrowserCache_Plugin.php (lines ~208, ~259, ~336) and the fixing changeset 3723494 that produced the 2.10.7 tag.

Know when W3 Total Cache gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (Wordfence) PRIMARY 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 5.4 MEDIUM

Unauthenticated network comment vector (PR:N, AV:N) with scope change for XSS (S:C); AC:H because exploitation depends on the non-default 'Remove query strings' option being enabled, which the attacker does not control.

3.1 AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

DescriptionCVE.org

The W3 Total Cache plugin for WordPress is vulnerable to Stored Cross-Site Scripting via Comment Content via Output-Buffer Regex Rewrite in all versions up to, and including, 2.10.6 due to insufficient input sanitization and output escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts in pages that will execute whenever a user accesses an injected page. This vulnerability is only exploitable when the 'Remove query strings from static resources' option is enabled in W3 Total Cache, as mutate_url() must strip the '?' delimiter and everything following it - including the closing quote of the outer attribute - to break the attribute boundary.

Executive ViewAI

Why It Matters

A stored cross-site scripting flaw in the W3 Total Cache plugin (all versions through 2.10.6) allows an unauthenticated visitor to plant malicious script in a comment that later executes in the browser of anyone viewing that page, including logged-in site administrators. Organizations running this plugin on public WordPress sites face potential administrator session hijacking, site defacement, or full site takeover, though the risk is materially reduced because exploitation only works on sites that have enabled the non-default 'Remove query strings from static resources' option and requires a victim to subsequently view the poisoned page. No public exploit code or confirmed active exploitation was identified at time of analysis, so this is a configuration-dependent exposure rather than an imminent, broadly exploited threat.

Business Impact: High
Compensating Controls

Apply vendor patch (2.10.7) where validated; if immediate upgrade is not possible, disable the 'Remove query strings from static resources' option, require moderation/approval for all comments, and enforce WAF or CDN virtual patching against stored XSS.

Threat Intelligence Overview

EPSS Score
0.4%
Top 66% exploitable
Prevalence
High
very popular WordPress caching plugin with a large install base
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2024-12008 MEDIUM POC
5.3 Jan 14

The W3 Total Cache plugin for WordPress is vulnerable to Information Exposure in all versions up to, and including, 2.8.

CVE-2026-5032 HIGH POC
7.5 Apr 02

W3 Total Cache plugin for WordPress exposes security tokens to unauthenticated remote attackers through User-Agent heade

CVE-2019-6715 HIGH POC
7.5 Apr 01

pub/sns.php in the W3 Total Cache plugin before 0.9.4 for WordPress allows remote attackers to read arbitrary files via

CVE-2014-9414 MEDIUM POC
6.8 Dec 24

The W3 Total Cache plugin before 0.9.4.1 for WordPress does not properly handle empty nonces, which allows remote attack

CVE-2021-24452 MEDIUM POC
6.1 Jul 19

The W3 Total Cache WordPress plugin before 2.1.5 was affected by a reflected Cross-Site Scripting (XSS) issue within the

CVE-2021-24436 MEDIUM POC
6.1 Jul 19

The W3 Total Cache WordPress plugin before 2.1.4 was vulnerable to a reflected Cross-Site Scripting (XSS) security vulne

CVE-2026-57623 CRITICAL
9.0 Jul 02

Unauthenticated arbitrary code execution affects the W3 Total Cache WordPress caching plugin in all versions up to and i

CVE-2021-24427 MEDIUM POC
4.8 Jul 12

The W3 Total Cache WordPress plugin before 2.1.3 did not sanitise or escape some of its CDN settings, allowing high priv

CVE-2014-8724 MEDIUM POC
4.3 Dec 19

Cross-site scripting (XSS) vulnerability in the W3 Total Cache plugin before 0.9.4.1 for WordPress, when debug mode is e

CVE-2026-78438 HIGH
7.2 Sep 05

Stored Cross-Site Scripting in W3 Total Cache (WordPress plugin) versions up to and including 2.10.5 allows unauthentica

CVE-2026-18109 HIGH
7.2 Aug 14

Stored cross-site scripting in W3 Total Cache WordPress plugin (all versions through 2.10.3) allows unauthenticated atta

CVE-2026-66695 MEDIUM
6.5 Aug 06

Path traversal in W3 Total Cache WordPress plugin (versions ≤ 2.10.2) enables remote unauthenticated attackers to manipu

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy