Home/ Blog/ Security news/ Article
Blog · Security news

Forminator WordPress plugin flaw lets attackers run code with no login (CVE-2026-15748)

CVE-2026-15748 is a CVSS 9.8 unauthenticated file-upload RCE in the Forminator WordPress plugin. Affects versions up to 1.56.1. Update to 1.56.2 now.

Geometric parcels falling through a slotted filter, one slipping past the bars

A form-builder plugin on more than 600,000 WordPress sites shipped a quiet fix on July 31. The technical writeup landed on August 17. That gap is the whole story. CVE-2026-15748 lets an unauthenticated visitor upload a PHP file through a vulnerable Forminator form and run code on the server, and it carries a CVSS score of 9.8. Sites still on version 1.56.1 or earlier are the exposed set, and the exploitation clock did not start on patch day. It started when the details went public.

CVE-2026-15748 at a glance
9.8
CVSS severity
Critical, no login needed
600,000+
Active installs
Forminator Forms
1.56.2
Fixed version
Shipped July 31, 2026
Source: NVD, Wordfence, The Hacker News.

Two things narrow and sharpen the risk at the same time. The flaw only fires where a form combines a dropdown menu with a file-upload field, so not every Forminator install is reachable. But where a form matches that shape, no login, no user account, and no social engineering are needed. As of publication there is no public proof-of-concept and no confirmed exploitation in the wild, which is exactly the window a defender wants to use.

How the upload filter gets bypassed

Forminator tries to block dangerous uploads with a denylist of file extensions. The problem sits in how that list is checked. According to the disclosure, the handle_file_upload function matches the denylist by exact key, and an attacker can slip past it with a compound MIME type key that uses a pipe-alternative form the lookup never anticipated. The public submission handler then trusts the upload-field configuration the request supplies, so the attacker controls the parameters that were meant to constrain them.

This is a denylist failure, and denylists fail this way over and over. Anything not explicitly forbidden is permitted, so the defender has to predict every dangerous encoding in advance. The durable fix is the opposite posture: an allowlist of permitted types plus server-side inspection of the actual file contents, not a string match on a label the client can shape.

The .htaccess guard is not the guarantee it looks like

On a default install, Forminator drops a .htaccess file into its upload directory that stops the server from executing anything there, so an uploaded PHP file sits inert. That protection is real, but it is conditional in two ways worth understanding before you assume you are safe. First, it only works on a web server that honors .htaccess at runtime. Second, it only covers the default storage path.

Here is the trap. Moving uploads off the default directory is something operators do to harden a site. With this bug, that same move can strip away the one control keeping an uploaded shell from running. A custom storage path that lacks the .htaccess drop turns a blocked upload into a live one. A hardening instinct inverts into exposure, which is why patching, not directory hygiene, is the fix.

Why the danger starts now, not on patch day

Patched first, disclosed laterJul 31, 2026: Fix ships. Aug 17, 2026: Details public. Aug 18, 2026: CVE published.Patched first, disclosed laterJul 31, 2026Fix shipsAug 17, 2026Details publicAug 18, 2026CVE published
Source: The Hacker News, Wordfence, NVD.

The 1.56.2 release closed the hole on July 31, but a fix in an open-source plugin is also a map. The change that repairs a denylist bypass is small and readable, and the difference between the vulnerable and fixed code points straight at the trick. Once the writeup went public on August 17, reproducing the bypass became a matter of reading a diff, not original research. For any site still on 1.56.1, the practical exposure is higher today than it was the day the patch shipped.

A pattern worth naming in WordPress plugin code

This is the third file-handling weakness in a widely installed WordPress plugin we have covered this month. We wrote up a set of plugins found to contain a hidden admin web shell and an unauthenticated stored cross-site scripting bug in Bookly. The common thread is not one vendor. It is that plugins accept attacker-influenced input at the edge of the site, and the validation between that input and the filesystem or the page is where the bodies are buried. A pre-auth flaw in WordPress itself earlier this month made the same point from the core side.

Update to 1.56.2, then watch the upload directories

The first action is the update. Move every site running Forminator to 1.56.2 or later. If you cannot patch at once, the interim step is to check whether any live form combines a file-upload field with a dropdown, and remove the upload field until you can update.

Patching closes the hole, but it does not tell you whether someone reached a form in the window before you updated. That is a detection question, and it has a clean answer if you run WordPress on servers you can watch. The payload here is a file written to disk under the uploads path. File integrity monitoring flags a new executable file appearing where only user uploads should live, whatever plugin or bug let it in. A managed detection setup ties that file-write event to an alert an analyst actually sees, mapped to the relevant attacker technique, so a dropped web shell surfaces as a signal rather than sitting quietly until it is used.

The vulnerable population here is not defined by who runs Forminator. It is defined by who runs Forminator with a matching form and has not read a changelog in three weeks. That describes a lot of sites. Treat the quiet July fix as the loud August problem, and get to 1.56.2 before someone else reads the same diff you could.

Topics

Frequently asked questions

What is CVE-2026-15748?

CVE-2026-15748 is a critical arbitrary file upload vulnerability in the Forminator Forms plugin for WordPress, rated CVSS 9.8. It lets an unauthenticated attacker upload a PHP file through a vulnerable form and run code on the server. All versions up to and including 1.56.1 are affected.

Which Forminator versions are affected and what is the fix?

Every Forminator version up to and including 1.56.1 is vulnerable. The fix is version 1.56.2, released on July 31, 2026. Update any site running the plugin to 1.56.2 or later. No workaround matches patching for closing the flaw completely.

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

As of publication, no public proof-of-concept and no confirmed exploitation in the wild had been reported. That window is temporary. The fix shipped on July 31 and technical details went public on August 17, so the risk to unpatched sites grows as the bypass becomes easy to reproduce.

Does every Forminator form put a site at risk?

No. The flaw only triggers where a form combines a dropdown menu with a file-upload field. Sites without that combination are not reachable through this bug. If you cannot patch at once, removing the file-upload field from matching forms is a reasonable interim step.

How can I tell if my site was already compromised?

The attack drops a file onto disk under the plugin's upload path. File integrity monitoring on those directories flags a new executable file that should not be there, regardless of the entry point. Review upload folders for unexpected PHP files and check web server logs for suspicious uploads to form endpoints.

Ready to meet the Guardians?

Deploys fast - agentless for monitoring and cloud, a lightweight agent for deep endpoint security. Just Suriq, standing watch.