Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit comment with crafted author name
-
DeliveryModerator approves malicious comment
-
ExploitLazy-load processing emits unsanitized name
-
ExecutionStored script executes in visitor browser
-
ImpactSession hijack or content defacement
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 is gated by a conjunction of four non-default conditions that all must hold at once: (1) an administrator must have enabled Autoptimize's 'Lazy-load images?' option; (2) the file w3-total-cache/w3-total-cache.php must be present on disk while the W3 Total Cache plugin is DISABLED; (3) a class named Minify_HTML must be loaded into scope by some other plugin; and (4) a comment moderator must approve the attacker's comment before the payload renders. The payload itself is delivered via the Comment Author Name field, so comments must be open/accepted. The moderator-approval step and the stacked environmental prerequisites are strong limiting factors that make default WordPress+Autoptimize installations non-exploitable; only sites with this exact plugin/file combination are affected. |
| Impact | Despite a network attack vector (AV:N) and no authentication requirement (PR:N), this is a low-priority, high-friction vulnerability rather than a genuine emergency. The CVSS base score of 5.4 (Medium) is dominated by AC:H, which correctly reflects an exceptionally narrow precondition chain: the description requires FOUR independent conditions to align simultaneously - the admin must enable Autoptimize's 'Lazy-load images?' option, the w3-total-cache/w3-total-cache.php file must exist on disk while W3 Total Cache is disabled, a class named Minify_HTML must be loaded into scope by some other plugin, and a human moderator must approve the malicious comment before any payload renders. No EPSS score, KEV listing, or POC was provided in the input, so there is no public exploit identified at time of analysis and no evidence of active exploitation. The AV:N/PR:N signals (which might suggest broad remote risk) are strongly contradicted by the AC:H conditions and the moderator-approval gate, meaning any real-world exploitation would be opportunistic and rare rather than widespread. Impact is limited (C:L/I:L/A:N) and is the typical stored-XSS outcome of script execution in a victim's browser. Net: a legitimate bug worth patching on the normal maintenance cycle, not an urgent fire. |
| Exploit ScenarioDerived | An unauthenticated attacker submits a blog comment whose Author Name contains an XSS payload. If the site runs the specific vulnerable configuration (Autoptimize lazy-load enabled, the dormant W3TC file present, and a Minify_HTML class loaded by another plugin), and a moderator approves the comment, the unsanitized author name is emitted during lazy-load HTML processing and the script executes in the browser of any visitor who loads the page. No public exploit code was identified in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 02, 2026
Stored cross-site scripting in the Autoptimize WordPress plugin (all versions up to and including 3.1.15.1) allows unauthenticated attackers to inject arbitrary JavaScript through the blog comment Author Name field, which is stored and later rendered without adequate escaping, executing in the browser of anyone viewing the affected page. The attack is tightly gated, however: an administrator must have enabled Autoptimize's 'Lazy-load images?' option, a disabled W3 Total Cache installation must still have w3-total-cache/w3-total-cache.php present on disk, a class named Minify_HTML must be loaded into scope by some other plugin, and a comment moderator must approve the malicious comment before the payload renders. No public exploit code has been identified at time of analysis and there is no CISA KEV listing, so this is a low-priority, high-friction issue affecting only sites that happen to match that exact plugin and file combination; default WordPress plus Autoptimize installations are not exploitable.
RemediationAI
Vendor-released patch: update Autoptimize to 3.1.16 or later, which is the first tag containing the fix and is documented in the Trac changeset at https://plugins.trac.wordpress.org/changeset?reponame=&new=3713884%40autoptimize%2Ftags%2F3.1.16&old=3657650%40autoptimize%2Ftags%2F3.1.15.1 and https://plugins.trac.wordpress.org/changeset/3713884/autoptimize/trunk/classes/autoptimizeImages.php; the vendor write-up is at https://www.wordfence.com/threat-intel/vulnerabilities/id/b14f574d-1490-423e-9ef3-ce8f844cb8f0?source=cve. If immediate upgrading is not possible, break the prerequisite chain rather than relying on generic hardening: first, turn off Autoptimize's 'Lazy-load images?' option, which removes the code path that emits the unescaped author name at the cost of losing native image lazy-loading performance; second, delete the orphaned w3-total-cache/w3-total-cache.php file from disk if W3 Total Cache is permanently deactivated (note that removing the file fully uninstalls the plugin from disk, so its settings survive only in the database and must be reconfigured if it is ever reinstalled); third, review active plugins for any that register a Minify_HTML class and remove or replace them if unnecessary, since that class must be in scope for the flaw to trigger; and fourth, keep WordPress comment moderation enforced so unapproved comments never render, since moderator approval is a required step and also gives a human review point for suspicious author names. Disabling comments entirely is a heavier-handed alternative that harms engagement but eliminates the injection vector outright. Because the issue is low severity with no observed exploitation, these compensating controls are reasonable stopgaps while a staged update to 3.1.16 is scheduled.
Affected VersionsENISA
Affected Packages
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
Autoptimize is a widely deployed WordPress performance plugin that aggregates, minifies and lazy-loads CSS, JavaScript and images by rewriting front-end markup. This is a CWE-79 (Improper Neutralization of Input During Web Page Generation) defect: the comment author name is stored verbatim and then emitted into page output without sufficient sanitization or output escaping in the affected code path, specifically within classes/autoptimizeImages.php (the plugin's Trac references point at lines 908, 960 and 1232 of the 3.1.15.1 tag, i.e. the image lazy-loading and markup-rewriting routines). The CVSS vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N indicates a remotely reachable, unauthenticated issue with high attack complexity and a scope change (S:C), reflecting that the injected script executes in the broader WordPress site context rather than strictly inside the vulnerable component; confidentiality and integrity impacts are limited and availability is unaffected. The unusual prerequisite chain in the advisory - a disabled W3 Total Cache plugin whose main file remains on disk, plus a Minify_HTML class supplied by an unrelated plugin - suggests the vulnerable rendering path is only reachable when Autoptimize's image output routine collides with another minifier's HTML-processing class already loaded into the request scope, which is why the vendor assigned high attack complexity rather than treating this as a generic comment-field XSS.
Know when Autoptimize 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
AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:L/A:N
Unauthenticated comment submission gives PR:N, but the four stacked environmental and moderation preconditions justify AC:H; stored XSS executing in other users' browsers gives S:C with C:L/I:L/A:N.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The Autoptimize plugin for WordPress is vulnerable to Stored Cross-Site Scripting via Comment Author Name in all versions up to, and including, 3.1.15.1 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. Exploitation requires an administrator to have enabled Autoptimize's 'Lazy-load images?' option, the w3-total-cache/w3-total-cache.php file to be present on disk with the plugin disabled, a class named Minify_HTML to be loaded into scope by another plugin, and the malicious comment to be approved by a moderator before the payload renders.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Autoptimize
View allThe Autoptimize WordPress plugin before 2.7.8 attempts to delete malicious files (such as .php) form the uploaded archiv
Unauthenticated stored cross-site scripting affects the Autoptimize (before 3.1.15), Clearfy Cache (before 2.4.2), and S
The Autoptimize WordPress plugin before 2.7.8 attempts to remove potential malicious files from the extracted archive up
The ao_ccss_import AJAX call in Autoptimize Wordpress Plugin 2.7.6 does not ensure that the file provided is a legitimat
The Autoptimize WordPress plugin before 3.1.7 does not sanitise and escape the settings imported from a previous export,
The Autoptimize WordPress plugin before 3.1.1 does not sanitise and escape some of its settings, which could allow high
The Autoptimize WordPress plugin before 2.7.8 does not check for malicious files such as .html in the archive uploaded v
The Autoptimize WordPress plugin before 2.8.4 was missing proper escaping and sanitisation in some of its settings, allo
Stored cross-site scripting in the Autoptimize WordPress plugin (all versions up to and including 3.1.15.1) lets an unau
A Stored Cross-Site Scripting (XSS) vulnerability exists in the Autoptimize WordPress plugin through version 3.1.14, cau
The Autoptimize WordPress plugin contains a Stored Cross-Site Scripting (XSS) vulnerability in the lazy-loading image pr
EUVD-2026-91179
GHSA-fcq7-9xcx-6xxw
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB