● Critical · CVSS 10

How to Fix CVE-2026-45444: Arbitrary File Upload in WP Swings Gift Cards for WooCommerce Pro

By the Sai Kiran Pandrala · Reviewed and edited by Sai Kiran Pandrala, Editor

⚡ At a glance
SeverityCVSS 3.1 base 10.0 - Critical (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
ProductWP Swings Gift Cards for WooCommerce Pro (WordPress plugin)
AffectedAll releases through 4.2.6 (defaultStatus: unaffected for newer if one ships)
Fixed inNo fixed version named in the advisory yet; deactivate and remove the plugin
Actively exploited?SSVC Exploitation: none; not in CISA KEV. Automatable: yes
Type (CWE)CWE-434: Unrestricted Upload of File with Dangerous Type
Disclosed byJoe Bruno (Monarx), coordinated via Patchstack, published 2026-05-20

Exploitation status

CISA's coordinator SSVC assessment records Exploitation: none for CVE-2026-45444, and the CVE is not in the CISA KEV catalog as of this writing. The same assessment flags Automatable: yes and Technical Impact: total, which is the profile mass scanners love: a single unauthenticated request can drop a webshell, and a bot can repeat it across thousands of WooCommerce stores without human steering.

No public proof-of-concept or Metasploit module is referenced in the CVE record yet. For a CWE-434 upload bug that is a thin reassurance, because the exploit primitive (POST a file, then GET it back) is trivial to reconstruct from the advisory once the vulnerable endpoint is known. I would not let "no public PoC" delay removal by even a day.

What is CVE-2026-45444?

CVE-2026-45444 is an unauthenticated arbitrary file upload (CWE-434) in WP Swings' commercial WordPress plugin Gift Cards for WooCommerce Pro, affecting every release up to and including 4.2.6. The plugin accepts a file upload without properly restricting the type, so an attacker can push a dangerous file such as a .php script into a web-served directory and then run it. The vendor's own wording: "Unrestricted Upload of File with Dangerous Type vulnerability in WP Swings Gift Cards For WooCommerce Pro allows Using Malicious Files."

Because the CVSS vector is AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H, the practical translation is blunt: anyone on the internet, with no account and no clicks from a victim, can reach the upload path. The scope is "changed," meaning the impact spills past the plugin into the wider WordPress install and the host. That combination is exactly why this scored a perfect 10.0.

Exploit precondition breakdown

Reading the CVSS vector left to right tells you what an attacker actually needs, and the answer here is "almost nothing." Each metric:

So the threat model is not "a clever insider." It is a scanner that fingerprints the plugin, sends one crafted upload, and requests the resulting file back. CISA's SSVC tag of Automatable: yes confirms that whole chain can be scripted.

Am I affected? Check your installed version

You are affected if Gift Cards for WooCommerce Pro is installed at version 4.2.6 or any earlier release. The advisory marks the whole range "n/a through 4.2.6" as vulnerable and names no fixed build. Confirm your exact version before deciding anything.

# Detect the installed version of this specific plugin (WP-CLI).
# Try the likely plugin slugs; WooCommerce add-ons vary in folder naming.
wp plugin list --fields=name,status,version | grep -i gift

# If you know the slug, query it directly:
wp plugin get woo-gift-cards-lite --field=version 2>/dev/null
wp plugin get gift-cards-for-woocommerce-pro --field=version 2>/dev/null

No shell access? In the WordPress admin go to Plugins → Installed Plugins, find "Gift Cards for WooCommerce Pro" by WP Swings, and read the version under its name. Any value ≤ 4.2.6 means you are exposed. If you cannot tell, assume affected.

How to fix CVE-2026-45444

The honest fix order: there is no patched version named in the Patchstack advisory, so you cannot simply "update and move on." The reliable remediation today is to deactivate and remove the plugin, then watch for a fixed release from WP Swings. Do not assume 4.2.6 is safe: 4.2.6 is the latest affected version, not the fix.

  1. Back up the site (files plus database) before touching anything, so you can recover if checkout flows depend on this plugin.
  2. Deactivate and delete the plugin using the commands below. Deactivation alone stops the vulnerable code from loading; deletion removes the files from disk entirely.
  3. Check for a fixed release directly from WP Swings or on the Patchstack advisory page. Install it only after confirming the version number is higher than 4.2.6 and the advisory marks it fixed.
  4. If you must keep gift-card functionality in the meantime, evaluate a maintained alternative rather than running the vulnerable build behind a firewall and hoping.
  5. Hunt for compromise (see the post-incident checklist) if the store was internet-reachable while running an affected version.

Deactivate and remove the plugin via WP-CLI

# CVE-2026-45444: WP Swings Gift Cards for WooCommerce Pro, all versions <= 4.2.6.
# No fixed version is named in the advisory at time of writing.
# Vendor/advisory: https://patchstack.com/database/wordpress/plugin/giftware/vulnerability/wordpress-gift-cards-for-woocommerce-pro-plugin-4-2-6-arbitrary-file-upload-vulnerability?_s_id=cve

# 1. Find the exact plugin slug installed on this site.
wp plugin list --fields=name,status,version | grep -i gift

# 2. Deactivate it immediately (replace  with the name from step 1).
wp plugin deactivate 

# 3. Delete it from disk so the upload handler is gone, not just dormant.
wp plugin delete 

# 4. Confirm it is gone.
wp plugin list --fields=name,status,version | grep -i gift   # should return nothing
# No WP-CLI? Do the same from the WordPress dashboard:
# Plugins -> Installed Plugins -> Gift Cards for WooCommerce Pro
#   -> Deactivate, then Delete.
# Then re-check Plugins to confirm it is no longer listed.

Confirm the fix actually applied

For a WordPress plugin the verification is filesystem-level, not service-restart. Prove the plugin folder is gone and the upload endpoint no longer responds:

# 1. Confirm the plugin directory no longer exists on disk.
ls wp-content/plugins/ | grep -i gift   # expect: no output

# 2. Confirm WordPress no longer registers the plugin.
wp plugin list --fields=name,status,version | grep -i gift   # expect: no output

# 3. If you installed a vendor fix instead of removing, confirm the version
#    is strictly greater than 4.2.6 AND the advisory marks that build fixed.
wp plugin get  --field=version

# 4. Re-scan with a WordPress-aware scanner (Patchstack, Wordfence, WPScan).
#    It must no longer flag CVE-2026-45444.

If you cannot remove it immediately

If a business owner refuses to drop gift-card functionality before the next change window, these are stopgaps, ranked by how much real protection they buy. None of them is a substitute for removing the vulnerable code:

  1. Deactivate the plugin (keep files, stop the code path). This is the strongest stopgap and takes seconds; reactivate later if a fix ships.
  2. Block the upload endpoint at the WAF / web server: deny anonymous POSTs to the plugin's upload handler and reject requests that carry executable file types (.php, .phtml, .php5).
  3. Disable PHP execution in the WordPress uploads tree with a server config rule, so even a planted script cannot run.
  4. Restrict admin and store endpoints to known IPs where feasible.

Each of these is a delay tactic. Because the bug is unauthenticated and automatable, a WAF rule that is even slightly off from the real exploit shape will be bypassed. Treat removal as the actual fix and the window as days, not weeks.

If the store ran an affected version while exposed

A CWE-434 bug that is unauthenticated and automatable means you should assume opportunistic scanning happened, even with SSVC Exploitation: none. If the site was internet-reachable on 4.2.6 or earlier, fold a compromise check into the remediation instead of treating it as optional. Concretely:

Frequently asked questions

Is there a patched version I can just update to?

Not according to the advisory. Patchstack lists everything up to and including 4.2.6 as affected and names no fixed release. Updating "to the latest" is not a guaranteed fix here, which is why removal is the recommended action until WP Swings ships and documents a fixed build.

Why is 4.2.6 in the page title if 4.2.6 is vulnerable?

4.2.6 is the highest version known to be affected, so it is the boundary of the vulnerable range. It is not the fix. If you see 4.2.6 installed, you are running a vulnerable build.

Will a WAF rule fully protect my store?

No. A WAF can blunt opportunistic scanners, but because the flaw is unauthenticated and the exploit is a simple upload-then-fetch, a rule that is even slightly narrower than the real exploit will be bypassed. Deactivating or deleting the plugin is the only durable fix.

How urgent is this if it is not in CISA KEV?

Treat it as urgent. KEV listing lags real-world abuse, and CISA's own SSVC data marks this Automatable: yes with Technical Impact: total. The cost of removing a plugin is minutes; the cost of a webshell on a checkout site is your entire store.

Why this one is dangerous for online stores specifically

Gift-card plugins sit at the most sensitive point of a WooCommerce store: checkout and payment. A webshell here is not just "a hacked WordPress site." It is code running on the same host that processes orders, stores customer details, and often holds payment-gateway API keys in wp-config.php or the options table. Once an attacker can execute PHP, they can read those secrets, skim card data from the checkout flow, or inject a card-stealer into the storefront (a Magecart-style attack).

That is why I treat any unauthenticated upload bug in an e-commerce plugin as a drop-everything item, even with no public PoC. The plugin's job is to take input from anonymous shoppers, so the attack surface is exposed by design. Pull the plugin, confirm the files are gone, then go hunting for anything that should not be in your uploads directory.

Other WordPress and WooCommerce ecosystem vulnerabilities worth reviewing alongside this one:

References


This guide is grounded in the MITRE/Patchstack CVE record for CVE-2026-45444 (published 2026-05-20, last updated 2026-05-21) and CISA's SSVC vulnrichment. Credit for discovery goes to Joe Bruno of Monarx, coordinated through Patchstack. Always confirm details against the vendor advisory before acting in production.