CVE-2025-14364: Demo Importer Plus Site Reset & Privilege Escalation
Overview
- CVE: CVE-2025-14364
- Plugin: Demo Importer Plus
- Affected Versions: <= 2.0.8
- Patched Version: 2.0.9
- CVSS: High
- Authentication: Subscriber role or higher required
- Type: Missing Authorization - Site Reset and Role Takeover
Demo Importer Plus is a WordPress plugin with approximately 10,000 active installs that lets site administrators import pre-built demo content and themes in bulk. In November 2025, a missing authorization vulnerability was discovered that allows any authenticated user with at least Subscriber privileges to trigger a complete WordPress site reset and seize the administrator role in a single operation. The issue was reported on November 27, 2025 through the Wordfence Bug Bounty Program.
What Happened
Demo Importer Plus registers an AJAX handler to support its site-reset workflow, which is intended for administrators who want to wipe demo content before importing a new demo set. The handler is meant to be administrator-only, but the plugin omitted the necessary capability check.
Because WordPress's wp_ajax_ hook fires for any logged-in user regardless of role, the omission meant that the privileged reset action was reachable by anyone holding an account — including Subscribers, the lowest default WordPress role. There was no nonce validation that was role-scoped, and no secondary confirmation step that would have limited the operation to administrators.
The result was a complete authorization bypass: a Subscriber could instruct the server to perform a destructive, administrator-level operation using only a standard authenticated request.
How the Attack Works
The attack is straightforward and requires no special tooling:
-
Register or obtain a Subscriber account: On sites that allow open user registration (a common configuration), an attacker creates a free account. On sites without open registration, a compromised or socially engineered low-privilege account is sufficient.
-
Send the AJAX reset request: With an active session cookie, the attacker issues an HTTP POST request to
wp-admin/admin-ajax.phpspecifying the vulnerable action name. No administrator credentials are required — the Subscriber session cookie alone is accepted. -
Site reset executes: The plugin processes the request as if it came from an administrator. All posts, pages, settings, widgets, and customizations are wiped. The database is rolled back to a blank state matching the plugin's demo baseline.
-
Role reassignment: As part of the reset sequence, Demo Importer Plus reassigns the administrator role. Because the attacker controls the request context, they can direct this reassignment to their own account, granting themselves full administrator access on the now-empty site.
-
Full control: The attacker now holds an administrator session on the reset site. They can install plugins, inject backdoors, exfiltrate any remaining data, or redirect the site entirely. The original site content is irretrievably destroyed unless an external backup exists.
The entire attack can be completed in seconds from a single HTTP request.
Real-World Impact
The impact profile of this vulnerability is unusually severe for two compounding reasons.
First, the reset operation is destructive and immediate. Unlike a typical privilege escalation that grants access to existing data, this attack first destroys the site and then grants control. Even if an administrator detects the intrusion and revokes the attacker's new privileges, the site content has already been wiped. Recovery depends entirely on whether an off-site backup exists.
Second, open user registration significantly lowers the barrier to exploitation. Many WordPress sites allow visitors to register for membership access, WooCommerce accounts, forum participation, or other features. Any of these registration flows creates a valid Subscriber account that is sufficient to launch the attack.
With 10,000 active installs and many sites having open registration enabled by default, the exposure was meaningful. Sites without any backup mechanism faced the prospect of total, permanent content loss.
Fix and Lessons
Fix: Version 2.0.9 adds the required capability check to the AJAX handler, verifying that the requesting user holds the manage_options capability before allowing the reset action to proceed. Users on version 2.0.8 or earlier should update immediately.
Lessons:
-
Every AJAX handler needs a capability check: WordPress's
wp_ajax_system does not apply any default role restrictions. Every handler must explicitly callcurrent_user_can()to enforce its own access control. Omitting this check means any logged-in user can invoke the handler. -
Destructive operations require extra guards: Actions that permanently alter or delete site data should require both a capability check and a nonce that encodes the administrator's intent. A two-step confirmation or an administrator-specific token adds a meaningful barrier against accidental or malicious invocation.
-
Low-privilege users are an attack surface: Subscriber is the lowest WordPress role, but it still represents authenticated access. Any action restricted to administrators must verify the role explicitly rather than relying on the assumption that low-privilege users will only use expected UI flows.
-
Backup strategy is a last line of defense: When an attack is destructive rather than stealthy, the ability to recover depends entirely on backup hygiene. Automated, off-site, regularly-tested backups are essential for any production WordPress site.
-
Plugin scope creep creates risk: Importer plugins that also manage site state — resetting databases, reassigning roles — carry a much larger attack surface than their primary use case suggests. High-privilege operations bundled into plugins should be audited with the same rigor applied to core WordPress.
Detection with Nyambush
Nyambush detects installed WordPress plugins and their versions, and flags plugins with known vulnerabilities against its vulnerability database. When Demo Importer Plus version 2.0.8 or earlier is detected, Nyambush reports a High-severity finding and recommends immediate update to 2.0.9 or later.
Because this vulnerability requires only Subscriber-level authentication rather than an administrator account, it poses an elevated risk on any site with user registration enabled. Nyambush's scheduled scans continuously monitor plugin versions so that newly disclosed vulnerabilities like CVE-2025-14364 are surfaced as soon as they are added to the database, without requiring a manual audit of each installed plugin.