Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit anonymous Store API checkout
-
DeliveryEmbed serialized object in customer_note
-
ExploitSelect bank-transfer/cheque payment
-
ExecutionOrder transitions to on-hold
-
PersistInvoice hook calls unserialize()
-
ImpactObject injection executes code on server
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitable against a default install, but with concrete prerequisites drawn from the description: the store must have an offline payment gateway enabled that moves orders to 'on-hold' - specifically Direct Bank Transfer (BACS) or cheque - because that status transition is what fires the plugin's invoice-generation hook that reaches unserialize(). The malicious payload must be delivered in the customer_note checkout field via the public Store API checkout endpoint. The key limiting factor beyond this is that object injection converts to code execution only where an exploitable PHP POP gadget chain is loadable in the environment; without a suitable gadget the impact may be limited to object instantiation rather than full RCE. No authentication and no user interaction are required (PR:N/UI:N). |
| Impact | All exploitability signals point the same direction and are mutually consistent: the CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N) describes a remote, unauthenticated, low-complexity attack with no user interaction, and the description confirms the trigger is reachable on a default install via the public WooCommerce Store API - so this is not a theoretical high-CVSS flaw. The vuln.today Decision label is act_now, and Wordfence (the reporting source) classifies it as a critical PHP Object Injection reaching unserialize(). The one nuance: CWE-502 object injection yields reliable remote code execution only when a usable POP gadget chain is present in the plugin, WordPress core, or another loaded component; the description asserts code execution is possible, but whether a gadget chain ships by default is not demonstrated in the supplied evidence. No EPSS score and no CISA KEV entry are present in the input, so exploitation-probability and active-exploitation data are MISSING rather than negative - absence here does not downgrade priority given act_now plus an unauthenticated network path. Net: treat as a genuine high priority, with the single caveat that worst-case RCE hinges on gadget-chain availability not proven in these sources. |
| Exploit ScenarioDerived | An unauthenticated attacker submits an anonymous WooCommerce checkout to the public Store API (POST /wc/store/v1/checkout) selecting Direct Bank Transfer or cheque, embedding a serialized PHP object payload in the customer_note field. The order auto-transitions to 'on-hold', firing the plugin's invoice-generation hook, which inlines the note into invoice HTML where mPDF/simplehtmldom reassembles it and passes it to unserialize(), instantiating attacker-controlled objects. No public exploit identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 31, 2026
Unauthenticated PHP object injection in the PDF Invoice for WooCommerce + Drag and Drop Template Builder plugin (all versions up to and including 7.1.1) lets remote attackers place an anonymous WooCommerce Store API checkout whose customer_note is carried verbatim into the generated invoice HTML and ultimately into unserialize() inside the bundled mPDF library, opening the path to server-side code execution. The described trigger works on a default install only when an offline gateway such as Direct Bank Transfer (BACS) or cheque is enabled, because the resulting 'on-hold' order status is what fires the invoice-generation hook; whether object injection escalates to full code execution depends on an exploitable PHP POP gadget chain being loadable in the target environment. No public exploit code was identified at time of analysis, but the vendor has shipped version 7.2.0 and the priority decision is act_now given the remote, unauthenticated, low-complexity profile reflected in the CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N).
RemediationAI
Upgrade the plugin to version 7.2.0, the fixed release available from WordPress.org at https://downloads.wordpress.org/plugin/pdf-for-woocommerce.7.2.0.zip (vendor advisory: https://www.wordfence.com/threat-intel/vulnerabilities/id/1bc3529c-6161-4b89-8a35-c3a9b7b8c308?source=cve), and confirm the update through the WordPress plugin list before treating the site as remediated. Where the update cannot be applied immediately, remove the exposure described for this flaw: the attack path requires an offline payment gateway that moves an anonymous order to 'on-hold' - specifically Direct Bank Transfer (BACS) or cheque - so disabling those gateways on the store closes the described trigger, at the cost of losing offline payment options for customers; alternatively, stop the invoice generation that fires on that status transition (for example by suspending automatic invoice creation for on-hold orders), which shifts invoicing to a manual process. Note that neither workaround removes the underlying unserialize() flaw, and that even after the code path is reached the outcome depends on the availability of an exploitable PHP POP gadget chain in the hosting environment, so removing unused plugins and PHP libraries reduces residual risk.
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 the addonsorg 'pdf-for-woocommerce' WordPress plugin, which builds PDF invoices from WooCommerce order data using the simplehtmldom HTML parser and the mPDF rendering library. The root cause is CWE-502 (Deserialization of Untrusted Data): the customer_note checkout field is not sufficiently sanitized before it is inlined verbatim into invoice HTML; simplehtmldom then entity-decodes the stored text back into a live tag (HtmlDocument.php / HtmlNode.php in the referenced source), mPDF reassembles that content into raw bytes (Mpdf.php around the _getObjAttr handling at line 9105), and the resulting string is passed to unserialize() without validation. Because unserialize() instantiates whatever classes the attacker names in a serialized payload, impact ranges from arbitrary object creation to code execution when a suitable POP gadget chain from the plugin's own dependencies or other active PHP code is available. The entry point is the plugin's frontend and email/shortcode invoice generation path (frontend/index.php, woocommerce/emails/index.php, woocommerce/shortcodes.php in the tagged source), reached through WooCommerce's public Store API checkout endpoint (POST /wc/store/v1/checkout) by an unauthenticated visitor. The CPE cpe:2.3:a:addonsorg:pdf_invoice_for_woocommerce_+_drag_and_drop_template_builder identifies this plugin as the sole affected product; the trigger sequence described by the source does not specify any further exploitation detail beyond the customer_note-to-unserialize chain.
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:U/C:H/I:H/A:H
Remote unauthenticated checkout on a default install reaches unserialize() with no user interaction (AV:N/AC:L/PR:N/UI:N); object injection to code execution supports full C/I/A impact.
Primary rating from Vendor (Wordfence).
CVSS VectorNVD
DescriptionNVD
The PDF Invoice for WooCommerce + Drag and Drop Template Builder plugin for WordPress is vulnerable to PHP Object Injection in all versions up to, and including, 7.1.1 via the 'customer_note' parameter parameter. This is due to insufficient sanitization of the customer_note checkout field, which is inlined verbatim into invoice HTML, entity-decoded back into a live tag by simplehtmldom, reassembled into raw bytes by mPDF, and passed to unserialize() in _getObjAttr without validation. This makes it possible for unauthenticated attackers to execute code on the server. An unauthenticated attacker can trigger the vulnerable code path on a default install by placing an anonymous WooCommerce checkout via the public Store API (POST /wc/store/v1/checkout) using a Direct Bank Transfer or cheque payment method, which automatically transitions the order to 'on-hold' status and fires the plugin's invoice-generation hook.
Articles & Coverage 1
Executive ViewAI
A critical unauthenticated object injection vulnerability in the PDF Invoice for WooCommerce + Drag and Drop Template Builder plugin (versions ≤7.1.1) allows remote attackers to potentially execute server-side code, but only when offline payment methods like Direct Bank Transfer or Cheque are enabled. This puts e-commerce operations at severe risk, as attackers could compromise customer data and disrupt order processing; leadership should prioritize immediate remediation.
Apply vendor patch: update to version 7.2.0. If unable to patch immediately, disable offline payment gateways (e.g., Direct Bank Transfer, Cheque) to prevent the invoice-generation hook from being triggered by unauthenticated attackers.
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
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
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
Blind SQL injection in the WBW Product Filter WordPress plugin (woo-product-filter) through 3.4.6 lets remote attackers
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
Stored cross-site scripting in the PDF Invoices & Packing Slips for WooCommerce plugin (5.16.2 up to, but not including,
EUVD-2026-114594
GHSA-5f8r-hw67-6cx4
NVD
CVE.org
EPSS
Exploit-DB