Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit WooCommerce order via public checkout
-
ExploitInject entity-encoded XSS in billing name/company or customer note
-
ExecutionStaff/admin opens order invoice or packing-slip document
-
ImpactScript executes in authenticated admin 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 | The attacker must be able to submit a WooCommerce order via the public checkout (default behavior for an operational store) running the plugin version 5.16.2 through 5.16.4, where the wp_kses() allow-list was introduced. The specific trigger is an entity-encoded payload (no literal angle brackets, e.g. <img onerror=…>) placed in billing_address.first_name, last_name, company, or the customer_note field; these fields bypass the allow-list because they contain no raw tags and are decoded downstream. Exploitation is limited by the requirement that a privileged user (shop admin/staff) subsequently open the affected order document (PDF invoice, packing slip, or order view) for the script to execute - payloads do not auto-execute without that view. Stores on a version before 5.16.2 (no allow-list) or after the remediated release fall outside this specific entity-encoding bypass. |
| Impact | The input CVSS is 7.2 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N), driven by network reach, no privileges and no user interaction, with a scope change reflecting that the injected script executes in a different security context (shop staff/admin browser). However, the mechanism described - a stored payload that fires 'whenever a user accesses an injected page' such as a generated PDF invoice or order view - implies a privileged user must open the affected document. That is effectively user interaction (UI:R), which would lower the score to ~6.1; the UI:N in the supplied vector is debatable for this stored-XSS pattern. No CISA KEV entry is present, so this is not confirmed as actively exploited. No EPSS score was provided, so exploitation probability cannot be quantified from the input. No PoC or exploit reference is listed (the references are the Wordfence advisory and plugin source on WordPress.org trac), so there is no public exploit identified at time of analysis. The vuln.today decision label is 'this_week', consistent with a real but non-emergency priority. A notable aggravating factor: this is explicitly an incomplete fix for CVE-2026-92244 - the wp_kses() allow-list added in 5.16.2 blocks raw-tag payloads but is bypassed by entity-encoded payloads, meaning the attack surface is already documented and the bypass is simple, which tends to raise the real likelihood of weaponization. Combined with a widely deployed plugin, this is a genuine this-week patching priority rather than a purely theoretical high-CVSS issue, but it is not emergency-grade given the privileged-view requirement, absent KEV, and missing EPSS. |
| Exploit ScenarioDerived | An unauthenticated attacker places a WooCommerce order through the public checkout, entering an entity-encoded script payload (e.g., <img onerror=…>) into the billing first/last name, company, or customer-note field. Because the payload contains no literal angle brackets, it passes the wp_kses() allow-list unchanged and is re-materialized on a later decode; when a shop administrator or staff member opens the order's PDF invoice, packing slip, or order view, the script executes in their authenticated session. No public PoC is referenced in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 31, 2026
Stored cross-site scripting in the WooCommerce PDF Invoices & Packing Slips plugin (versions up to and including 5.16.4) allows an unauthenticated attacker to plant entity-encoded script payloads through the public checkout's billing first name, last name, company and customer note fields, which then execute in a shop staff or administrator's browser when that privileged user opens the generated invoice, packing slip or order document - so the assessed vector requires user interaction (UI:R) despite the input CVSS listing UI:N. The flaw is an incomplete fix for CVE-2026-92244: the wp_kses() allow-list added in 5.16.2 rejects payloads containing literal angle brackets, but entity-encoded payloads such as <img onerror=…> pass through unmodified and are rematerialized when decoded downstream. No public exploit code is confirmed at time of analysis; the vendor fix appears as changeset 3756047 on the plugin trunk, and the vendor advisory is linked from the Wordfence threat-intel record.
RemediationAI
Upstream fix available (commit/changeset); a released patched version is not independently confirmed from the supplied data. The remediation commit is changeset 3756047 on the plugin trunk, which touches includes/Documents/OrderDocument.php (https://plugins.trac.wordpress.org/changeset/3756047/woocommerce-pdf-invoices-packing-slips/trunk/includes/Documents/OrderDocument.php); site operators should update to the first tagged release that includes this changeset rather than relying on the 5.16.2 allow-list, which is precisely what the entity-encoded payloads bypass. The vendor advisory is at https://www.wordfence.com/threat-intel/vulnerabilities/id/9456cd66-d608-49b8-ad4c-fdc89db4cd29?source=cve. No vendor-stated configuration workaround is documented in the available sources, and because the weakness is in the document rendering path itself, restricting who can open order documents (limiting invoice/packing-slip viewing to a small trusted set of staff) only reduces exposure and does not remove the stored payload; the complete fix is applying the patched release. Stores should also confirm they are not remaining on 5.16.2-5.16.4 under the assumption that the earlier allow-list is sufficient.
Affected VersionsENISA
Affected Packages
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
The affected component is a WordPress/WooCommerce plugin that renders order data into PDF invoices, packing slips and bulk document exports. Order document rendering pulls customer-supplied values from billing_address.first_name, last_name, company and customer_note through code paths in OrderDocument.php, BulkDocument.php, OrderDocumentMethods.php and wpo-ips-functions.php, where the data is processed and later emitted into HTML output. The root cause class is CWE-79 (improper neutralization of input during web page generation): the 5.16.2 remediation introduced a wp_kses() allow-list intended to strip dangerous markup, but wp_kses() operates on decoded tag structure, so an entity-encoded payload containing no literal angle-bracket characters is treated as inert text and passed through; the trailing decode step then recreates the original tag, restoring executable markup. Because the injected script is stored with the order and later rendered in the administrative document view, the impact crosses a trust boundary - reflected in the scope-change component of the assessed vector (S:C) and in the limited confidentiality and integrity impact (C:L/I:L). The trigger requires a privileged recipient to open the document; the payload does not self-execute on the storefront. Exploitation conditions and the exact set of decoded fields are described in the available sources; the specific decoding call chain is referenced only via the trac source links for tag 5.16.3.
Know when Woocommerce 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
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
Unauthenticated order submission gives PR:N, but a staff user must open the order document for the stored script to fire (UI:R); it runs in the admin browser context (S:C) with limited C/I and no availability impact.
Primary rating from Vendor (Wordfence).
CVSS VectorVendor: Wordfence
DescriptionCVE.org
The PDF Invoices & Packing Slips for WooCommerce plugin for WordPress is vulnerable to Stored Cross-Site Scripting via the 'billing_address.first_name / last_name / company, customer_note' parameter in all versions up to, and including, 5.16.4 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 an incomplete fix for CVE-2026-92244: the wp_kses() allow-list introduced in 5.16.2 correctly blocks raw-tag payloads but is bypassed by entity-encoded payloads (e.g., <img onerror=…>) that contain no literal angle-bracket characters and are therefore passed through unmodified before the trailing decode rematerializes them.
Executive ViewAI
The WooCommerce PDF Invoices & Packing Slips plugin (up to 5.16.4) contains a stored cross-site scripting vulnerability that allows attackers to inject malicious scripts via public checkout fields, which then execute in the browsers of shop staff and administrators when they view generated invoices or packing slips. This puts sensitive customer and order data at risk and could lead to unauthorized actions within the WordPress admin. Leadership should prioritize remediation given the high severity and the plugin's role in order processing.
No vendor-released patch identified at time of analysis. Interim mitigations include deploying a WAF rule to block entity-encoded script payloads in checkout fields, restricting access to invoice/packing slip documents to trusted staff, and monitoring for anomalous checkout submissions.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
More in Woocommerce
View allThe WooCommerce plugin through 3.x for WordPress has a Directory Traversal Vulnerability via a /wp-content/plugins/wooco
Unauthenticated remote code execution in Print Invoice & Delivery Notes for WooCommerce through 5.8.0 lets remote attack
Unauthenticated arbitrary file upload in Addify's Request a Quote for WooCommerce plugin, affecting all versions up to a
The WooCommerce Help Scout WordPress plugin before 2.9.1 (https://woocommerce.com/products/woocommerce-help-scout/) allo
WooCommerce 7.1.0 contains a remote code execution vulnerability that allows attackers to execute arbitrary PHP code by
Unauthenticated path traversal in OrderConvo (the "Admin and Customer Messages After Order for WooCommerce" plugin), aff
Unauthenticated remote attackers can seize control of the payment configuration on WordPress stores running the Fundiin
Ultimate WooCommerce Gift Cards 3.0.2 is affected by a file upload vulnerability in the Custom GiftCard Template that ca
Unauthenticated attackers can exploit the Walletdoc Payment Gateway for WooCommerce plugin before version 1.8.5 to execu
Unauthenticated SQL injection in the ELEX WooCommerce Request a Quote WordPress plugin (all versions before 2.4.1) allow
Unauthenticated, network-reachable attackers can read the WooCommerce API consumer key and secret stored by the MgoSync
Stored cross-site scripting in the PDF Invoices & Packing Slips for WooCommerce plugin (5.16.2 up to, but not including,
EUVD-2026-114607
GHSA-wr38-p24w-wp68
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB