Skip to main content

Autoptimize CVE-2026-78471

| EUVDEUVD-2026-91179 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-10-02 Wordfence GHSA-fcq7-9xcx-6xxw
5.4
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Submit comment with crafted author name
  2. Delivery
    Moderator approves malicious comment
  3. Exploit
    Lazy-load processing emits unsanitized name
  4. Execution
    Stored script executes in visitor browser
  5. Impact
    Session 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.2% 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 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

Autoptimize 0 ≤3.1.15.1

Affected Packages

euvd autoptimize 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

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

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

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.

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

Primary rating from Vendor (Wordfence).

CVSS VectorVendor: Wordfence

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

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

EPSS Score
0.2%
Top 88% exploitable
Prevalence
High
Autoptimize is a very widely deployed WordPress optimization plugin (millions of installs)
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

27
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +27
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-2021-24376 CRITICAL POC
9.8 Jun 21

The Autoptimize WordPress plugin before 2.7.8 attempts to delete malicious files (such as .php) form the uploaded archiv

CVE-2026-3220 HIGH POC
8.8 May 18

Unauthenticated stored cross-site scripting affects the Autoptimize (before 3.1.15), Clearfy Cache (before 2.4.2), and S

CVE-2021-24377 HIGH POC
8.1 Jun 21

The Autoptimize WordPress plugin before 2.7.8 attempts to remove potential malicious files from the extracted archive up

CVE-2020-24948 HIGH POC
7.2 Sep 03

The ao_ccss_import AJAX call in Autoptimize Wordpress Plugin 2.7.6 does not ensure that the file provided is a legitimat

CVE-2023-2113 MEDIUM POC
4.8 May 30

The Autoptimize WordPress plugin before 3.1.7 does not sanitise and escape the settings imported from a previous export,

CVE-2022-2635 MEDIUM POC
4.8 Sep 16

The Autoptimize WordPress plugin before 3.1.1 does not sanitise and escape some of its settings, which could allow high

CVE-2021-24378 MEDIUM POC
4.8 Jun 21

The Autoptimize WordPress plugin before 2.7.8 does not check for malicious files such as .html in the archive uploaded v

CVE-2021-24332 MEDIUM POC
4.8 May 24

The Autoptimize WordPress plugin before 2.8.4 was missing proper escaping and sanitisation in some of its settings, allo

CVE-2026-14995 HIGH
7.2 Oct 01

Stored cross-site scripting in the Autoptimize WordPress plugin (all versions up to and including 3.1.15.1) lets an unau

CVE-2026-2352 MEDIUM
6.4 Mar 20

A Stored Cross-Site Scripting (XSS) vulnerability exists in the Autoptimize WordPress plugin through version 3.1.14, cau

CVE-2026-2430 MEDIUM
6.4 Mar 20

The Autoptimize WordPress plugin contains a Stored Cross-Site Scripting (XSS) vulnerability in the lazy-loading image pr

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