CVE-2026-78438: W3 Total Cache <= 2.10.5 - Unauthenticated Stored Cross-Site Scripting via LazyLoad Background Mutator
The W3 Total Cache plugin for WordPress is vulnerable to Stored Cross-Site Scripting via Comment Content via LazyLoad Background Mutator in all versions up to, and including, 2.10.5 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 requires the "Lazy Load Images" feature with "Process background images" to be enabled, and the malicious comment to be approved by a moderator before execution is triggered.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
WordPress W3 Total Cacheto a version that resolves this vulnerability.Fixed in 2.10.5 - Configuration
In W3 Total Cache, disable the 'Lazy Load Images' feature with 'Process background images' enabled, since exploitation requires that configuration.
WordPress W3 Total Cache Lazy Load Images / Process background images = disable
Event History
Frequently Asked Questions
Which sites are exposed to this issue?
Sites using W3 Total Cache versions up to and including 2.10.5 are exposed only when both “Lazy Load Images” and “Process background images” are enabled. Exploitation also depends on a moderator approving the malicious comment.
What does an attacker need to exploit it?
An attacker does not need authentication and can submit a malicious comment containing script content. The payload executes only after that comment is approved and a user visits the injected page.
What can be done while a fix is not available or cannot be applied?
Disable either the “Lazy Load Images” feature or its “Process background images” option to remove the required vulnerable condition. Review and avoid approving suspicious comments, especially comments containing markup or script-like content.
How can administrators assess whether they may already be affected?
Check whether the plugin version is 2.10.5 or earlier and whether both required Lazy Load settings are enabled. Review approved comments and pages containing comments for unexpected injected scripts or markup.