Skip to main content
Vulnerability Database/CVE-2026-17086

CVE-2026-17086: ShortPixel Image Optimizer PHP Object Injection

CVE-2026-17086 is a PHP Object Injection flaw in ShortPixel Image Optimizer plugin for WordPress affecting versions up to 6.5.5. Authenticated attackers with author-level access can exploit this when POP chains exist. This article covers technical details, affected versions, impact assessment, and mitigation strategies.

Published:

CVE-2026-17086 Overview

CVE-2026-17086 is a PHP Object Injection vulnerability in the ShortPixel Image Optimizer plugin for WordPress. The flaw affects all versions up to and including 6.5.5 and stems from unsafe deserialization of untrusted input [CWE-502]. Authenticated attackers with author-level access or higher can inject a PHP object into the application. The plugin itself contains no known Property-Oriented Programming (POP) chain, so exploitation requires an additional plugin or theme with a usable POP chain. When such a chain exists, the resulting object injection can lead to arbitrary file deletion, sensitive data disclosure, or remote code execution.

Critical Impact

Authenticated author-level attackers can inject arbitrary PHP objects, enabling file deletion, data theft, or code execution when a POP chain is present in any installed plugin or theme.

Affected Products

  • ShortPixel Image Optimizer – Optimize Images, Convert WebP & AVIF plugin for WordPress
  • All versions up to and including 6.5.5
  • WordPress sites where any installed plugin or theme contains a POP chain

Discovery Timeline

  • 2026-09-18 - CVE-2026-17086 published to the National Vulnerability Database
  • 2026-09-18 - Last updated in the NVD database

Technical Details for CVE-2026-17086

Vulnerability Analysis

The ShortPixel Image Optimizer plugin passes attacker-controllable input to a PHP deserialization function. The vulnerable code paths reside in the Replacer.php file within the bundled replacer2 component and in the OptimizeAiController.php controller. Referenced lines include Replacer.php lines 259, 402, 425, 429, and 446, plus OptimizeAiController.php line 598.

When PHP encounters serialized data through functions such as unserialize(), it reconstructs objects and invokes magic methods including __wakeup(), __destruct(), and __toString(). An attacker who controls the serialized payload can trigger chained method calls on classes already loaded in the WordPress runtime. This mechanism is known as a Property-Oriented Programming chain.

Root Cause

The root cause is deserialization of untrusted input without validation or use of safe formats such as JSON. The plugin trusts data that an authenticated user can influence and passes it to PHP's native serialization handler. This violates secure coding practices for handling serialized data as defined under [CWE-502].

Attack Vector

Exploitation requires authenticated access at the author role or higher. The attacker submits a crafted serialized PHP payload through a request handled by the vulnerable code paths in Replacer.php or OptimizeAiController.php. If a POP chain exists in another installed plugin, theme, or in WordPress core-adjacent libraries, deserialization triggers the chain. Outcomes depend on the gadget chain but typically include arbitrary file deletion, information disclosure, or PHP code execution. Refer to the Wordfence Vulnerability Intel entry for additional technical context.

Detection Methods for CVE-2026-17086

Indicators of Compromise

  • HTTP POST requests to ShortPixel plugin endpoints containing serialized PHP markers such as O:, a:, or s: followed by class or property names.
  • Unexpected file deletions, new PHP files in wp-content/uploads/, or modified plugin and theme files following author-level authenticated activity.
  • WordPress audit log entries showing author-role accounts interacting with ShortPixel optimization or replacer functionality outside normal workflows.

Detection Strategies

  • Inspect web server access logs for requests to ShortPixel plugin actions carrying serialized object payloads in POST bodies or query parameters.
  • Deploy web application firewall rules that flag serialized PHP object patterns submitted by authenticated non-admin users.
  • Correlate author-role login events with subsequent filesystem changes, outbound network callbacks, or new scheduled tasks in WordPress.

Monitoring Recommendations

  • Enable WordPress activity logging for role changes, plugin activations, and file modifications performed by author-level accounts.
  • Monitor PHP error logs for unserialize() warnings, unexpected class instantiations, or __wakeup() and __destruct() invocations from ShortPixel code paths.
  • Alert on any process spawned by the PHP-FPM or web server user that executes shell commands, downloads remote files, or writes to plugin directories.

How to Mitigate CVE-2026-17086

Immediate Actions Required

  • Update the ShortPixel Image Optimizer plugin to a version later than 6.5.5 as soon as the vendor publishes a patched release.
  • Audit WordPress user accounts and remove or downgrade unnecessary author-level or higher privileges.
  • Review all installed plugins and themes and remove unused or unmaintained components that could supply a POP chain.

Patch Information

The vulnerability is present through version 6.5.5. Track the ShortPixel changeset overview on WordPress.org for the fixed release, and consult the Wordfence Vulnerability Intel entry for confirmation of the patched version.

Workarounds

  • Restrict the author role and higher to trusted users only, and enforce multi-factor authentication on all such accounts.
  • Deploy a web application firewall rule that blocks serialized PHP object payloads containing patterns such as O: followed by a digit and class name in requests to ShortPixel endpoints.
  • Temporarily deactivate the ShortPixel Image Optimizer plugin on sites that cannot immediately update or restrict author-level access.
bash
# Example WAF rule pattern (ModSecurity-style) to block serialized PHP objects
SecRule ARGS "@rx O:[0-9]+:\"[a-zA-Z_\\\\]+\":[0-9]+:" \
  "id:1017086,phase:2,deny,status:403,\
  msg:'CVE-2026-17086 - Serialized PHP object detected in request'"

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.