Executive Summary
A high-severity insecure deserialization vulnerability (CVE-2026-87067, CVSS 8.5) has been disclosed in Forminator Forms, a popular WPMU DEV form-builder plugin for WordPress. Versions before 1.57.2.1 do not restrict which PHP classes may be instantiated when deserializing a value taken from an XML-RPC request, allowing any user who holds the plugin's forms-management permission to write an arbitrary file to the server and execute code.
That permission belongs to administrators by default — but is reachable by lower roles on any site that has granted it through the plugin's own settings, meaning the effective attack surface extends below the admin tier wherever that feature is used.
Vulnerability Overview
| Attribute | Value |
|---|---|
| CVE ID | CVE-2026-87067 |
| CVSS Score | 8.5 (High) |
| Type | Improper Control of Code Generation / Code Injection (CWE-94) |
| Attack Vector | Network, via the site's XML-RPC endpoint |
| Privileges Required | Forminator forms-management permission |
| Assigner | WPScan |
| Published | September 20, 2026 |
Root Cause
Forminator processes certain XML-RPC requests by deserializing a value directly from the request without validating or whitelisting which PHP classes are permitted to be instantiated. Without strict class checking, an attacker who can reach the forms-management functionality can craft a serialized payload that instantiates classes with useful side effects in their constructors, destructors, or wakeup methods — in this case, enough to write a file of the attacker's choosing to a web-accessible path and subsequently execute it.
A companion issue, CVE-2026-87068, was disclosed alongside this one: it allows a user permitted to import quizzes to smuggle a registration form inside the import that grants any submitter an arbitrary role, including administrator — bypassing the role restriction enforced by the plugin's normal form editor.
Affected Versions
| Plugin | Affected Versions | Fixed Version |
|---|---|---|
| Forminator Forms | < 1.57.2.1 | 1.57.2.1 |
Attack Vector
1. Attacker holds (or is granted) Forminator's forms-management permission
2. Attacker sends a crafted XML-RPC request containing a malicious serialized payload
3. Plugin deserializes the value without class whitelisting
4. Instantiated object's side effects write an attacker-controlled file to disk
5. Attacker requests the written file over HTTP to achieve code executionImpact of Successful Exploitation
| Impact | Description |
|---|---|
| Remote Code Execution | Arbitrary file write leads directly to PHP execution |
| Privilege Escalation | Chainable with CVE-2026-87068's role-injection flaw |
| Full Site Compromise | Database credentials, content, and user data exposure |
Immediate Remediation
Step 1: Update to Version 1.57.2.1
wp plugin update forminator
wp plugin get forminator --field=versionStep 2: Restrict XML-RPC Access
If XML-RPC is not required for legitimate integrations, disable it entirely:
# Block XML-RPC at the web server level (Nginx example)
location = /xmlrpc.php {
deny all;
}Step 3: Audit Forms-Management Permission Grants
wp user list --fields=user_login,rolesConfirm forms-management permission is limited to trusted administrators only, and review the plugin's own role-permission settings for any non-default grants.
If Immediate Patching Is Not Possible
- Disable XML-RPC at the web server or WAF level
- Revoke forms-management permission from any role below administrator
- Scan for unexpected PHP files written after the disclosure date
find /path/to/wordpress/wp-content/uploads/ -name "*.php" -newer /path/to/wordpress/wp-includes/version.php -type f