CVE-2026-97660: WPC Product Options for WooCommerce <= 4.0.5 - Unauthenticated Stored Cross-Site Scripting via wpcpo-* Array Key via Multipart Field Name
The WPC Product Options for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via wpcpo- Array Key via Multipart Field Name in all versions up to, and including, 4.0.5 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. This is exploitable via guest checkout without authentication because the malicious payload is embedded in a multipart Content-Disposition field name beginning with 'wpcpo-', which PHP's RFC1867 parser preserves byte-for-byte and stores into order item meta.
Affected Software
Event History
Frequently Asked Questions
Who can exploit this issue?
Any unauthenticated remote attacker who can submit a guest checkout can exploit it. No existing WordPress or WooCommerce account is required.
What conditions are required for exploitation?
The vulnerable plugin must be present at version 4.0.5 or earlier, and guest checkout must be available. The attacker submits a multipart request whose Content-Disposition field name begins with "wpcpo-" and contains the script payload.
Where is the malicious content stored and when does it run?
PHP preserves the crafted multipart field name and the plugin stores it in order item metadata. The injected script executes when a user accesses a page that renders the injected content.
Does this affect a default deployment?
The available information identifies guest checkout as the exploitation path, but does not state whether guest checkout is enabled by default. Deployments that allow guest checkout should treat the issue as directly exploitable.