CVE-2026-5217: Optimole <= 4.2.2 - Unauthenticated Stored Cross-Site Scripting via Srcset Descriptor Parameter
The Optimole – Optimize Images | Convert WebP & AVIF | CDN & Lazy Load | Image Optimization plugin for WordPress is vulnerable to Stored Cross-Site Scripting in all versions up to, and including, 4.2.2. This is due to insufficient input sanitization and output escaping on the user-supplied 's' parameter (srcset descriptor) in the unauthenticated /wp-json/optimole/v1/optimizations REST endpoint. The endpoint validates requests using an HMAC signature and timestamp, but these values are exposed directly in the frontend HTML making them accessible to any visitor. The plugin uses sanitizetextfield() on the descriptor value of rest.php, which strips HTML tags but does not escape double quotes. The poisoned descriptor is then stored via transients (backed by the WordPress options table) and later retrieved and injected verbatim into the srcset attribute of tagreplacer.php without proper escaping. This makes it possible for unauthenticated attackers to inject arbitrary web scripts into pages that will execute whenever a user accesses the injected page.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-5217?
CVE-2026-5217 has a high severity due to the potential for stored cross-site scripting attacks.
How do I fix CVE-2026-5217?
To fix CVE-2026-5217, you should update the Optimole plugin to version 4.2.3 or later.
What systems are affected by CVE-2026-5217?
CVE-2026-5217 affects all versions of the Optimole plugin for WordPress up to and including 4.2.2.
Can CVE-2026-5217 be exploited without authentication?
Yes, CVE-2026-5217 can be exploited without authentication, making it a critical vulnerability.
What type of attack does CVE-2026-5217 enable?
CVE-2026-5217 enables stored cross-site scripting (XSS) attacks, allowing attackers to inject malicious scripts.