CVE-2026-77365
Executive Summary
CVE-2026-77365 is a Stored Cross-Site Scripting (XSS) vulnerability affecting the Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization plugin for WordPress in all versions up to and including 4.2.10. The vulnerability resides in the plugin's handling of the 'a' (above_fold_images) parameter, which suffers from insufficient input sanitization and output escaping. An unauthenticated attacker can inject arbitrary web scripts into pages, which will execute whenever an authenticated user (such as an administrator) accesses the injected page. With a CVSS score of 7.2, the vulnerability has a high severity rating due to its network-based attack vector, low attack complexity, and potential for scope change that can impact data confidentiality and integrity.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The vulnerability is classified under CWE-79 (Improper Neutralization of Input During Web Page Generation, specifically Stored Cross-Site Scripting). The flaw exists in the Optimole plugin's image optimization workflow, where the plugin processes a parameter referred to as 'a' (above_fold_images). This parameter is designed to control which images are prioritized for lazy loading optimization — specifically images deemed "above the fold" (visible to the user without scrolling).
Vulnerability Mechanism: The plugin fails to apply adequate input sanitization on the 'a' parameter and fails to properly escape output when rendering this data within web pages. Due to insufficient output escaping, an attacker-supplied payload included in the 'a' parameter persists in the plugin's data store (e.g., WordPress options table or post meta) and is subsequently rendered to end-users without neutralization. Because the injection is stored server-side, each subsequent page load triggers script execution in the victim's browser session, giving the attacker a persistent foothold.
Attack Surface: The attack surface is any WordPress installation running the Optimole plugin up to version 4.2.10. The attack does not require authentication (CVSS PR:N), meaning the attacker does not need valid credentials to inject the payload. The network vector (AV:N) indicates the attack is remotely exploitable, and low attack complexity (AC:L) suggests the attack does not require special conditions or sophisticated techniques beyond sending a crafted request.
Key Technical Details from CVE Data:
- Affected Parameter: 'a' (above_fold_images)
- Affected Versions: All versions up to and including 4.2.10
- Root Cause: Insufficient input sanitization and output escaping
- Attack Vector: Network-based, unauthenticated
- Scope Change (CVSS S:C): The vulnerability can impact resources beyond the vulnerable component's security scope, potentially compromising pages or data outside the plugin's intended authority
Insufficient technical detail is available from the NVD description regarding the exact code path, function names, or database interactions involved. The description provides only the parameter name and general mechanism without specific implementation details.
Exploitation Scenarios
No public PoC or exploit code is available for this CVE. The attack chain below is inferred from the vulnerability class (Stored XSS) and the NVD description.
Step 1: Reconnaissance / Target Identification An attacker identifies WordPress sites running the Optimole plugin. This can be accomplished through:
- WordPress plugin enumeration techniques (e.g., probing
/wp-content/plugins/optimole/readme.txtto identify the plugin version) - Scanning for specific HTML markers or page source elements generated by the plugin (e.g., lazy-loading attributes)
- Using search engine dorks such as
inurl:"wp-content/plugins/optimole"to identify exposed installations
The attacker filters targets running version 4.2.10 or earlier.
Step 2: Flaw Trigger / Payload Injection The attacker crafts a malicious HTTP request targeting the 'a' parameter. The request could be sent via:
- A crafted form submission to any WordPress endpoint that accepts the 'a' parameter
- Direct HTTP request to an exposed plugin endpoint or AJAX handler that processes the 'a' (above_fold_images) parameter
The payload injected takes the form of a web script, for example:
"><script>/* malicious JavaScript */</script>
or an event-handler-based payload such as:
"><img src=x onerror=alert(document.cookie)>
Due to insufficient sanitization, the payload is stored in the plugin's persistent data store (e.g., WordPress options table). The attacker may need to craft the request to pass any basic WordPress nonce or form validation, though the CVSS vector (PR:N) indicates no authentication is required.
Step 3: Script Execution When a user (administrator, editor, or regular visitor) accesses a page that renders the injected data — such as a page displaying optimized images or the WordPress admin dashboard where plugin settings are reflected — the stored payload executes in the context of the victim's browser session, with the origin of the injected script being the vulnerable WordPress site.
Step 4: Post-Exploitation Impact Once the script executes in an authenticated user's session, the attacker can:
- Steal session cookies, potentially enabling session hijacking
- Perform actions on behalf of the authenticated user (e.g., create malicious admin accounts if the victim is an administrator)
- Deface the website by injecting content
- Redirect users to malicious domains (drive-by download)
- Exfiltrate sensitive data accessible in the browser context
The CVSS vector indicates a scope change (S:C), suggesting the injected script could interact with resources outside the plugin's intended security boundary, potentially affecting the broader WordPress application and its data.
Impact Assessment
Business Impact: Successful exploitation can lead to:
- Confidentiality Impact (LOW): Attackers can potentially access limited sensitive information, such as session tokens or non-public data rendered in the victim's browser context
- Integrity Impact (LOW): Attackers can modify website content or perform unauthorized actions on behalf of authenticated users
- Availability Impact (NONE): The vulnerability does not directly cause service denial
Affected Systems: All WordPress installations using Optimole plugin versions ≤ 4.2.10. Given WordPress's widespread adoption and the plugin's popularity for image optimization, the potential blast radius is significant — any site using the plugin is at risk regardless of hosting provider, CMS configuration, or user role structure.
Blast Radius: The scope change (S:C) in the CVSS vector elevates the risk, as the injected script can impact not only the affected plugin but also other components of the WordPress application and potentially connected systems (e.g., if the WordPress site has SSO integrations or API keys accessible in the browser context).
CVSS Subscore Analysis:
- Attack Vector: Network (AV:N) — Remotely exploitable without physical/logical access
- Attack Complexity: Low (AC:L) — No special conditions or race conditions required
- Privileges Required: None (PR:N) — Unauthenticated exploitation
- User Interaction: None (UI:N) — No victim interaction required for injection; victim interaction only required for script execution (page visit)
- Scope: Changed (S:C) — Impact extends beyond the vulnerable component
Detection Guidance
Sigma Rule
title: Optimole Plugin Stored XSS Attempt - CVE-2026-77365
id: 0f8dd4c0-1234-4a5b-9cde-f12345678901
status: experimental
description: Detects attempts to exploit Stored XSS in Optimole plugin via the 'a' parameter
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-77365
author: Valtersit Threat Intelligence
date: 2026/01/15
logsource:
category: webserver
product: apache
definition: 'Apache access logs for WordPress sites running Optimole plugin'
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains:
- 'above_fold_images'
- 'optimole'
cs-uri-query|contains|all:
- '<script'
- 'onerror'
- 'javascript:'
condition: selection
fields:
- clientip
- cs-uri-query
- cs-useragent
falsepositives:
- Legitimate admin configuration changes that include HTML in parameter
level: high
tags:
- attack.t1190
- cve.2026-77365
- cwe.79
YARA Rule
rule Optimole_Stored_XSS_CVE_2026_77365 {
meta:
author = "Valtersit Threat Intelligence"
description = "Detects HTTP requests targeting Optimole plugin 'a' parameter with XSS payloads"
cve = "CVE-2026-77365"
date = "2026-01-15"
severity = "high"
strings:
$param1 = "above_fold_images"
$param2 = "optimole"
$xss1 = "<script" ascii nocase
$xss2 = "onerror=" ascii nocase
$xss3 = "javascript:" ascii nocase
$xss4 = "onload=" ascii nocase
$xss5 = "<svg/onload" ascii nocase
$xss6 = "prompt(" ascii nocase
$xss7 = "alert(" ascii nocase
condition:
(uint16(0) == 0x0d0a or uint16(0) == 0x0a0d or filesize < 10KB) and
(1 of ($param*) and 2 of ($xss*))
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (msg:"CVE-2026-77365 - Optimole Stored XSS Attempt via 'a' parameter"; flow:established,to_server; content:"POST"; http_method; content:"above_fold_images"; http_client_body; nocase; content:"<script"; http_client_body; nocase; content:"optimole"; http_client_body; nocase; pcre:"/(?:<script|onerror|onload|javascript:)/i"; reference:cve,2026-77365; classtype:web-application-attack; sid:100773650; rev:1;)
Elastic Detection
// EQL query for detecting XSS attempts against Optimole plugin
sequence by source.ip
[network where event.category == "web" and process.name == "httpd" and
network.protocol == "http" and http.request.method == "POST" and
url.path != "/wp-admin/admin-post.php" and
// Look for the vulnerable parameter in request body
url.query contains "above_fold_images" or
http.request.body.content contains "above_fold_images"]
[network where event.category == "web" and
// XSS payload indicators in the same request
(http.request.body.content contains "<script" or
http.request.body.content contains "onerror=" or
http.request.body.content contains "javascript:" or
http.request.body.content contains "onload=")]
Splunk SPL Query
index=web sourcetype=access_combined status=200
| where like(_raw, "%above_fold_images%")
AND (like(_raw, "%<script%")
OR like(_raw, "%onerror=%")
OR like(_raw, "%javascript:%")
OR like(_raw, "%onload=%"))
| eval attack_indicator = case(
like(_raw, "%<script%") AND like(_raw, "%above_fold_images%"), "XSS_payload_in_optimole_param",
1=1, "other")
| table _time, clientip, uri_path, uri_query, method, attack_indicator
| stats count by clientip, attack_indicator, uri_path
| sort - count
Wazuh OSSEC Rule
<group name="web_application_attacks,">
<rule id="100773" level="12">
<decoded_as>json</decoded_as>
<field name="url">\.optimole\.</field>
<field name="parameter_name">above_fold_images</field>
<regex>((<script)|(onerror)|(onload)|(javascript:))</regex>
<description>Potential Stored XSS attempt against Optimole plugin (CVE-2026-77365)</description>
<group>web_application_attack,xss,optimole,cve_2026_77365</group>
<mitre>
<id>T1190</id>
</mitre>
<options>no_full_log</options>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 2/4 — CLAIMED (single source claims patch, not independently confirmed).
The NVD database claims a patch exists for this vulnerability, but the specific patched version has not been identified or independently confirmed. Operators should verify patch availability directly with the plugin vendor and monitor Optimole's official channels for a fix.
1) Immediate Mitigations (if patch is unavailable):
- Temporarily disable the Optimole plugin if image optimization is not business-critical, until a verified patch is applied
- Implement a Web Application Firewall (WAF) rule to block requests containing suspicious script patterns in parameters associated with the Optimole plugin
- Restrict access to WordPress admin panels using IP allowlisting or VPN requirements to reduce the attack surface
- Review and clean existing stored data: Search the WordPress database for suspicious script content in options or post meta related to the Optimole plugin's configuration (specifically entries associated with the 'a' / above_fold_images parameter)
- Audit current users and sessions: Look for unusual admin account creation or unauthorized changes that may have resulted from prior exploitation
2) Patch/Upgrade Steps:
- Monitor the Optimole plugin's official WordPress.org page or vendor website for a security update
- When a patched version (presumably > 4.2.10) is released, update the plugin immediately through the WordPress admin dashboard or via wp-cli:
wp plugin update optimole - After updating, verify the plugin version in
wp-content/plugins/optimole/readme.txtor via the WordPress plugins screen - Independently confirm the patch addresses this specific vulnerability (CVE-2026-77365) before assuming remediation
3) Long-Term Hardening:
- Enable automatic updates for WordPress plugins where feasible, or establish a rigorous patch management schedule
- Implement a Content Security Policy (CSP) header with
script-srcdirectives that block inline scripts, mitigating the impact of Stored XSS even if it recurs - Use security plugins that add Web Application Firewall (WAF) capabilities and virtual patching for known CVEs
- Regularly audit WordPress plugins for outdated versions using vulnerability scanners
- Follow the principle of least privilege: Restrict who has access to WordPress admin interfaces
- Maintain offline backups of the WordPress database and filesystem to facilitate rapid recovery
- Subscribe to CVE alerts for WordPress plugins to ensure timely awareness of new vulnerabilities
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-77365 — Official CVE record containing CVSS score, CWE classification, and vulnerability description.
- WordPress Plugin Repository: https://wordpress.org/plugins/optimole/ — Official distribution channel for the Optimole plugin, where security updates will be published.
- CWE-79 (Cross-Site Scripting): https://cwe.mitre.org/data/definitions/79.html — MITRE's detailed description of the vulnerability class, including detection and mitigation strategies.
- CISA Known Exploited Vulnerabilities Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — This CVE is NOT listed in the KEV catalog at the time of writing; verify periodically for updates.
- Optimole Developer Documentation: https://docs.optimole.com/ — Vendor documentation where security advisories and patch announcements may be posted.
Known Exploitation Evidence: As of the writing of this report:
- No public proof-of-concept (PoC) code has been released
- No Nuclei template or other automated detection signatures have been published
- No known threat actor campaigns or exploit-in-the-wild evidence have been reported
- The CVE is not listed in CISA's Known Exploited Vulnerabilities catalog
Organizations should nevertheless prioritize patching given the unauthenticated nature of the vulnerability and the potential for chained attacks (e.g., credential theft leading to Full Take Over of WordPress administration). The absence of public PoC does not preclude exploitation; it may simply indicate delayed disclosure or limited awareness of the vulnerability within the security community.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.