WordPress

CVE-2026-109220: PDF Invoice for WooCommerce RCE (9.8)

A critical flaw in the PDF Invoice for WooCommerce + Drag and Drop Template Builder plugin allows unauthenticated PHP object injection through a checkout note field. All versions up to 7.1.1 are listed as affected.

CVE-2026-109220: PDF Invoice for WooCommerce RCE (9.8) - Webforta security news

A critical vulnerability, CVE-2026-109220, has been published for the PDF Invoice for WooCommerce + Drag and Drop Template Builder plugin. According to the GitHub Advisory Database entry, all versions up to and including 7.1.1 are affected, and the flaw scores 9.8 out of 10 on CVSS v3.

If you run a WooCommerce store that generates PDF invoices with this plugin, this one deserves attention today. The advisory says an unauthenticated visitor can reach the vulnerable code simply by placing an order, with no account and no special setup.

What happened

The advisory was published to the GitHub Advisory Database and the National Vulnerability Database on October 31, 2026. It describes a PHP Object Injection weakness that, in the advisory's words, makes it possible for unauthenticated attackers to execute code on the server.

Coverage is thin so far. The research behind this article rests on one advisory, and the NVD record repeats the same text rather than confirming it independently. The GitHub entry is also marked as unreviewed. Treat the details below as the advisory's claims, not as independently verified findings.

Technical details

The weakness is classified as CWE-502, deserialization of untrusted data. In plain terms, PHP can turn a stored string back into a live object using unserialize(). If an attacker controls that string, they may be able to make the application build objects it never intended to, which can lead to code execution depending on what classes are available.

Per the advisory, the data path works like this:

  • The customer_note checkout field is not sufficiently sanitized and is placed verbatim into the invoice HTML.
  • The simplehtmldom library entity-decodes that content back into a live tag.
  • The mPDF library reassembles it into raw bytes.
  • The result is passed to unserialize() in _getObjAttr without validation.

What makes this notable is the trigger. The advisory states that an unauthenticated attacker can reach the code path on a default install by placing an anonymous checkout through WooCommerce's public Store API, using the Direct Bank Transfer or cheque payment method. Those methods move the order to on-hold status automatically, which fires the plugin's invoice-generation hook.

Key facts from the advisory
ItemDetail
CVECVE-2026-109220 (GHSA-5f8r-hw67-6cx4)
CVSS v39.8 critical, CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
WeaknessCWE-502, deserialization of untrusted data
AffectedAll versions up to and including 7.1.1
AuthenticationNone required
Fixed versionNot stated in the advisory

We are deliberately not describing payload contents or request construction. The point for defenders is the exposure, not the exploit.

Who is affected

Any WordPress site running this plugin at version 7.1.1 or earlier with WooCommerce checkout enabled should be considered exposed. The advisory says the issue works on a default install, so you should not assume a custom configuration protects you.

The advisory names Direct Bank Transfer and cheque as the payment methods that trigger the invoice hook in the described scenario. If you have those methods disabled, that may narrow the described path, but the advisory does not say it eliminates risk, so do not rely on it as a fix.

Exploitation status is unknown. The research does not report attacks in the wild, and it shows no CISA Known Exploited Vulnerabilities listing for this CVE. That can change quickly for unauthenticated, network-reachable flaws, so act as if scanning is likely.

How to check your exposure

  1. In the WordPress admin, open Plugins and look for PDF Invoice for WooCommerce + Drag and Drop Template Builder. Note the installed version.
  2. If the version is 7.1.1 or lower, treat the site as vulnerable.
  3. Check the plugin directory slug on the server. The advisory's code references use pdf-for-woocommerce.
  4. Review recent orders for unusual customer notes, especially long, encoded or strangely formatted text, and for on-hold orders you do not recognize.
  5. Check web server logs for repeated anonymous POST requests to the WooCommerce Store API checkout endpoint from the same addresses.

You can also look up the plugin on our known WordPress plugin vulnerabilities page, and our guide on whether a WordPress plugin is vulnerable explains how to read advisories like this one.

What to do now

The advisory lists patched versions as unknown. Its references include a download link for version 7.2.0 of the plugin, but the advisory does not say that release fixes the issue, so we cannot confirm it. Check the plugin's changelog on WordPress.org and any vendor notice before assuming an update resolves this.

  1. Back up the site and database first, so you can recover if something goes wrong.
  2. Look for a newer plugin release than 7.1.1 and read its changelog. If the vendor states the issue is fixed, update promptly, ideally on staging first.
  3. If no confirmed fix exists, deactivate the plugin until one does. Losing automatic PDF invoices for a while is far cheaper than a server compromise.
  4. If you must keep the plugin active, consider a web application firewall rule that restricts or inspects anonymous checkout requests. This reduces risk but is not a guaranteed fix. See what a WAF is for what it can and cannot do.
  5. Review the site for signs of compromise (see below) if the plugin was active and publicly reachable after the advisory date.

Detection and monitoring

Code execution on a store is serious because the server holds customer data and order information. After mitigating, look for unexpected admin users, new or modified PHP files in uploads and plugin directories, unfamiliar scheduled tasks, and changes to checkout page scripts. Our guides on checking whether a website is hacked and what to do if your website is hacked walk through the steps.

For ongoing coverage, Webforta Monitor can alert you to uptime, certificate, DNS and header changes, which helps you notice unexpected behavior sooner. It does not detect or block this specific vulnerability, so keep plugin updates and backups as your primary defense.

What we still do not know

  • Whether a patched release exists and which version it is.
  • Whether the flaw is being exploited in the wild.
  • Whether a working exploit is public.
  • Whether the vendor has issued its own advisory.

We will not guess at these. Check the plugin's page on WordPress.org and the Wordfence entry linked from the advisory for updates. If you manage several WooCommerce sites, the approach is the same each time: take inventory, update or disable, then review. Our WordPress security checklist covers the routine habits that make this faster.

Sources

This article is based on the public sources below. Details can change as vendors and researchers publish more; check the original advisories before acting on version numbers.

Tags: WooCommerce, WordPress plugin, PHP object injection, CVE-2026-109220, CWE-502

Frequently asked questions

What is CVE-2026-109220?

It is a critical PHP Object Injection vulnerability (CVSS 9.8) in the PDF Invoice for WooCommerce + Drag and Drop Template Builder plugin. The advisory says unauthenticated attackers can use it to execute code on the server, via the customer_note checkout field.

Which versions of the plugin are vulnerable?

All versions up to and including 7.1.1, according to the GitHub advisory. The advisory does not list a patched version, so confirm the fix status with the plugin's changelog or the vendor.

Do attackers need a WordPress account to exploit it?

No. The advisory says an unauthenticated attacker can reach the vulnerable code by placing an anonymous WooCommerce checkout through the public Store API using Direct Bank Transfer or cheque payment.

Is CVE-2026-109220 being exploited in the wild?

The research does not report any exploitation, and it shows no CISA KEV listing. That is not proof of safety, so mitigate promptly.

What should I do if there is no confirmed patch?

Back up your site, then deactivate the plugin until the vendor confirms a fixed release. If you cannot, add firewall protections as a partial measure and review your site for signs of compromise.

See what your website shows attackers

Webforta scans websites you verify for exposed files, weak HTTPS, missing headers and signs of compromise, and keeps watching uptime, certificates and DNS. A clean scan is not a guarantee, and we never say it is.