Skip to main content

Autoptimize CVE-2026-14995

| EUVDEUVD-2026-90560 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-01 Wordfence GHSA-v9f4-5xpx-364q
7.2
CVSS 3.1 · Vendor: Wordfence
View

Attack ChainAIDerived

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

  1. Access
    Identify site with Critical CSS + API key enabled
  2. Delivery
    Send frontend request with script in REQUEST_URI path
  3. Exploit
    Payload enqueued via ao_ccss_enqueue() and stored
  4. Execution
    Admin/user views injected queue page
  5. Impact
    Script executes in victim browser session

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 on a specific non-default configuration: Autoptimize's Critical CSS feature must be active AND a valid Critical CSS API key must be configured - per the description this is the precondition that allows unauthenticated frontend requests to trigger queue entries via ao_ccss_enqueue(). On default installs where Critical CSS is disabled or no API key is set, the unauthenticated injection path is not reachable. The stored payload (an attacker-controlled REQUEST_URI path) executes when a user/administrator accesses the injected page, specifically the Critical CSS settings queue view; realized impact therefore also depends on a privileged user viewing that page. Affected versions are all releases up to and including 3.1.15.1.

Impact

The vendor-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 unauthenticated, network-reachable stored XSS with a scope change (script executes in the context of any user viewing the injected page). No EPSS score, CISA KEV listing, or public POC is provided in the input, so by the precision rules this is 'no public exploit identified at time of analysis' - a theoretical-but-credible issue rather than one with confirmed active exploitation. The raw 7.2 is tempered by a significant real-world gating condition the description itself states: exploitation requires the optional Critical CSS feature to be enabled AND a valid API key configured, which is the only path by which unauthenticated frontend requests reach ao_ccss_enqueue() and persist an attacker-controlled REQUEST_URI. Against Autoptimize's large install base that configuration is a minority deployment, so the effective population is much smaller than the headline PR:N suggests. The confidentiality/integrity impact is correctly rated Low (C:L/I:L) - classic reflected-into-stored XSS consequences (session/cookie theft, UI manipulation) rather than full account or data compromise. Net: a legitimate HIGH-severity-on-paper finding but moderate real-world priority, with the API-key/Critical-CSS precondition and absence of exploitation signals being the key risk reducers.

Exploit ScenarioDerived

An unauthenticated attacker identifies a WordPress site running Autoptimize ≤3.1.15.1 with the Critical CSS feature active and an API key configured, then issues crafted frontend HTTP requests whose REQUEST_URI path contains a malicious script payload. The payload is enqueued via ao_ccss_enqueue() and stored unsanitized, later rendering in the Critical CSS admin settings queue view so the script executes in an administrator's browser when they review the queue. No public POC is referenced in the provided data.

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

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

Alert me

AnalysisAIv1 – Oct 01, 2026

Stored cross-site scripting in the Autoptimize WordPress plugin (all versions up to and including 3.1.15.1) lets an unauthenticated attacker plant arbitrary JavaScript in the Critical CSS settings queue by supplying a malicious REQUEST_URI path that the plugin stores without sanitization and later renders without escaping. The injection path is only reachable when the non-default Critical CSS feature is active and a valid Critical CSS API key is configured, which is what allows unauthenticated frontend requests to create queue entries through ao_ccss_enqueue(); the payload then fires when a privileged user opens the affected admin queue view, giving a scope change and low-integrity/confidentiality impact rather than full site takeover. Assessment notes the effective CVSS vector as AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N, requiring victim interaction (a user viewing the injected page) despite the vendor's UI:N rating, and no public exploit code has been identified at time of analysis and the issue is not in CISA KEV.

RemediationAI

The upstream project has published a fix in the Trac changeset referenced by the advisory (changeset 3713884 in the autoptimize repository), so the correct action is to apply that upstream fix or upgrade to the first Autoptimize release that contains it; a released, tagged patched version could not be independently confirmed from the supplied data, so verify the version banner after updating. Because the changeset reference is a commit rather than a confirmed tagged release, treat the fix as 'upstream fix available (commit); released patched version not independently confirmed' and confirm with the vendor changelog. If immediate updating is not possible, the most effective compensating control is to deactivate the Critical CSS feature or clear the configured Critical CSS API key, which removes the unauthenticated queue-entry path entirely; the trade-off is loss of automatic above-the-fold CSS generation and the associated page-speed benefit. As a secondary measure, restrict access to the WordPress admin Critical CSS queue screen (for example via IP allowlisting or an admin-area access rule) so the stored payload cannot be rendered, though this does not remove the injection itself and may break legitimate administrative workflows. Review the Critical CSS queue for attacker-supplied entries and clear them as part of cleanup, since previously stored payloads persist until removed. Advisory and technical detail: https://www.wordfence.com/threat-intel/vulnerabilities/id/1704cffa-75ed-415e-864f-de7ff8eea8dc?source=cve and the fix at https://plugins.trac.wordpress.org/changeset?reponame=&old=3713884%40autoptimize&new=3713884%40autoptimize.

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 WordPress performance plugin from OptimizingMatters that aggregates, minifies and caches CSS/JS and supports a Critical CSS subsystem for above-the-fold rendering optimization. The defect is a classic CWE-79 improper neutralization of input during web page generation, specifically a stored variant: unauthenticated frontend requests are captured by Autoptimize's Critical CSS enqueue logic (ao_ccss_enqueue() in classes/autoptimizeCriticalCSSEnqueue.php, around lines 57 and 218), which derives a queue key/path from the request URI without adequate sanitization. The stored value is later emitted into the admin Critical CSS queue UI without output escaping (classes/critcss-inc/admin_settings_queue.php line 82 and the JavaScript template classes/critcss-inc/admin_settings_queue.js.php line 125), so attacker-controlled markup executes in the browser context of whoever loads that page. The CVSS scope change (S:C) reflects that the injected script runs in the administrator's session rather than the attacker's origin, and the CPE cpe:2.3:a:optimizingmatters:autoptimize:*:*:*:*:*:*:*:* confirms the plugin package itself, with every release through 3.1.15.1 affected. The critical prerequisite is environmental, not credential-based: the Critical CSS feature must be enabled and a working Critical CSS API key configured, because that configuration is what wires unauthenticated frontend traffic into the queue-building routine.

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 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 6.1 MEDIUM

Unauthenticated network injection (PR:N, AV:N) but stored payload only fires when a user views the injected queue page, so UI:R; cross-context script execution gives S:C with C:L/I:L.

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:N/UI:P/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
Low
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 REQUEST_URI Path 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 the Critical CSS feature to be active with a valid API key configured, as this is the precondition for unauthenticated frontend requests to trigger queue entries via ao_ccss_enqueue().

Executive ViewAI

Why It Matters

Autoptimize, a widely deployed WordPress performance plugin, mishandles the request path stored in its Critical CSS queue in all versions up to and including 3.1.15.1, letting an unauthenticated visitor plant JavaScript that later runs in the browser of a logged-in administrator who opens that queue view. The exposure is limited to the subset of WordPress estates that have the non-default Critical CSS feature enabled with a configured API key, but for those sites it places privileged administrator sessions - and anything reachable from them - at risk, and no vendor patch is available yet, so protection currently depends on configuration and monitoring.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: disable the non-default Critical CSS feature or remove its API key, which removes the unauthenticated injection path; deactivate or remove the plugin where Critical CSS is not needed; restrict and monitor wp-admin access (network allowlists, VPN, MFA); deploy WAF or virtual patching rules that reject script markup in request URIs; review the Critical CSS queue and related database entries for injected payloads; and invalidate administrator sessions and rotate credentials for users who accessed the affected admin view.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Prevalence
Medium
very popular WP optimization plugin, but vulnerable path needs optional Critical CSS feature
Data Quality
4 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.3%
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-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-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

CVE-2026-78471 MEDIUM
5.4 Oct 02

Stored cross-site scripting in the Autoptimize WordPress plugin (all versions up to and including 3.1.15.1) allows unaut

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