CVE-2026-109220
9.8 CRITICALPublished 2026-10-31 · Updated 2026-10-31
AI risk analysis
- Summary
- The PDF Invoice for WooCommerce plugin suffers from a PHP Object Injection vulnerability (CWE-502) due to unsanitized user input ('customer_note') being processed through HTML parsing and PDF generation libraries that ultimately call unserialize() on attacker-controlled data, enabling unauthenticated remote code execution.
- Exploitability
- Exploitation is straightforward for unauthenticated attackers: they can trigger the vulnerable code path by submitting a malicious checkout request via the public Store API using any payment method that transitions the order to 'on-hold' status, such as Direct Bank Transfer or cheque.
- Blast radius
- Successful exploitation would allow full compromise of the affected WordPress site, including server-side code execution, data exfiltration, and potential lateral movement within the hosting environment.
- Detection
- No reliable host or network indicator is derivable from the published description.
- Prioritized remediation
- Upgrade to version 7.1.2 or later, where the plugin vendor has patched the unsanitized 'customer_note' handling.
Analysis generated locally by garnet-coder (no data left the box). AI-assisted — verify against primary sources before acting.
NVD description
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.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weaknesses
CWE-502
All references
- https://downloads.wordpress.org/plugin/pdf-for-woocommerce.7.2.0.zip
- https://plugins.trac.wordpress.org/browser/pdf-for-woocommerce/tags/7.1.1/frontend/index.php#L378
- https://plugins.trac.wordpress.org/browser/pdf-for-woocommerce/tags/7.1.1/libs/HtmlDocument.php#L300
- https://plugins.trac.wordpress.org/browser/pdf-for-woocommerce/tags/7.1.1/libs/HtmlNode.php#L1266
- https://plugins.trac.wordpress.org/browser/pdf-for-woocommerce/tags/7.1.1/vendor/mpdf/mpdf/src/Mpdf.php#L9105
- https://plugins.trac.wordpress.org/browser/pdf-for-woocommerce/tags/7.1.1/woocommerce/emails/index.php#L70
- https://plugins.trac.wordpress.org/browser/pdf-for-woocommerce/tags/7.1.1/woocommerce/shortcodes.php#L708
- https://www.wordfence.com/threat-intel/vulnerabilities/id/1bc3529c-6161-4b89-8a35-c3a9b7b8c308?source=cve
Source data: NVD (nvd.nist.gov), public domain. Exploit-DB.ai adds local AI analysis for defensive use only.
Related CVEs
- HIGHCVE-2026-104932
- CRITICALCVE-2026-115806
- CRITICALCVE-2026-19658
- CRITICALCVE-2026-42716
- CRITICALCVE-2026-42718
- CRITICALCVE-2026-54856
- CRITICALCVE-2026-54857
- CRITICALCVE-2026-62004
Related by shared AI tags and CWE weakness class. Browse the full archive.