CVE-2026-9187: Abandoned Contact Form 7 WordPress Plugin Unauthenticated Post Deletion
An unauthenticated attacker can permanently delete any post, page, or other content on a WordPress site running the Abandoned Contact Form 7 plugin up to version 2.2. The plugin fails to verify that requests come from authorized users and fails to validate that deletion requests are legitimate. This allows an attacker to send a simple request to the site's admin interface and destroy content without needing any credentials or password.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Weaknesses (CWE)
- CWE-862
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-06-16 / 2026-06-17
NVD description (verbatim)
The Abandoned Contact Form 7 plugin for WordPress is vulnerable to unauthorized arbitrary post deletion in versions up to, and including, 2.2. This is due to a missing capability check and missing nonce validation in the action__remove_abandoned() function, which is registered to both the wp_ajax_remove_abandoned and wp_ajax_nopriv_remove_abandoned hooks. The handler takes a user-supplied recover_id parameter from $_POST and passes it directly to wp_delete_post() with the force-delete flag set to true, without verifying that the ID belongs to the plugin's own cf7af_data post type. This makes it possible for unauthenticated attackers to permanently delete arbitrary posts, pages, or other content on the affected site by sending a single admin-ajax.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The Abandoned Contact Form 7 plugin registers the action__remove_abandoned() function to handle AJAX requests via both wp_ajax_remove_abandoned and wp_ajax_nopriv_remove_abandoned hooks. The wp_ajax_nopriv variant permits unauthenticated access. The function accepts a recover_id parameter from POST data and passes it directly to wp_delete_post() with force deletion enabled, without verifying: (1) the user possesses delete capabilities, (2) a valid nonce token accompanies the request, or (3) the post ID actually belongs to the plugin's cf7af_data post type. This permits attackers to supply arbitrary post IDs and permanently remove any content from the WordPress installation.
Business impact
An attacker can selectively or indiscriminately destroy site content, including published posts, pages, portfolio items, or other critical information. This can damage reputation, disrupt service delivery, trigger data loss compliance issues, and require recovery from backups if available. Sites without frequent backups face permanent loss of content and SEO equity. The attack requires no authentication and can be automated, making large-scale attacks feasible.
Affected systems
WordPress installations running the Abandoned Contact Form 7 plugin in version 2.2 or earlier are vulnerable. Any WordPress site using this plugin for contact form data recovery functionality is at risk.
Exploitability
Exploitability is high. The attack requires no authentication, no user interaction, and only a single HTTP POST request to the WordPress admin-ajax endpoint. An attacker needs only to discover the target WordPress site and craft a POST request with an arbitrary post ID. Network accessibility to the WordPress installation is the only prerequisite, making this a low-friction attack surface. However, CVSS scoring reflects limited impact scope—the vulnerability enables integrity compromise (content deletion) but not confidentiality breaches or availability of the WordPress service itself.
Remediation
Update the Abandoned Contact Form 7 plugin to a version that includes the security patches addressing missing capability checks and nonce validation. Verify the patched version properly restricts the delete action to authenticated users with appropriate post deletion capabilities and validates nonce tokens on all AJAX requests.
Patch guidance
Check the plugin's official WordPress plugin repository or vendor advisory for the first patched version after 2.2 that resolves this vulnerability. Apply the update as soon as testing confirms compatibility with your site's theme and other plugins. If updating is delayed, consider temporarily deactivating the plugin to eliminate the attack surface.
Detection guidance
Monitor admin-ajax.php logs for POST requests to the remove_abandoned action from unauthenticated users or unusual IP ranges. Look for requests containing numeric recover_id parameters followed by posts being deleted without corresponding author activity or admin login sessions. Website integrity monitoring tools can detect unexpected post deletions. Consider enabling WordPress audit logging if available and reviewing post deletion events in WordPress activity logs. A sudden spike in deleted posts unrelated to site maintenance warrants immediate investigation.
Why prioritize this
Although rated MEDIUM severity due to limited impact scope, prioritize this vulnerability for rapid remediation because: (1) it requires zero authentication and zero user interaction, (2) the attack is trivial to execute and automate, (3) content destruction is permanent and difficult to reverse without backups, (4) the attack surface is present on any WordPress site using this plugin, and (5) attackers can easily enumerate and target many sites simultaneously. The combination of ease of exploitation and real business damage justifies urgent patching.
Risk score, explained
CVSS 5.3 (MEDIUM) reflects: network-based attack vector (AV:N), low attack complexity with no special conditions (AC:L), no privilege requirements (PR:N), no user interaction needed (UI:N), impact isolated to the affected system (S:U). The score penalizes the vulnerability because it does not compromise confidentiality (C:N) and affects integrity only in limited scope (I:L). However, CVSS does not account for the triviality of exploitation or the ease of attacking multiple targets; security teams should weight practical exploitability heavily in their risk assessment.
Frequently asked questions
Does this vulnerability affect WordPress multisite installations?
Yes. The vulnerability exists in the plugin's AJAX handler regardless of WordPress configuration. On multisite installations, an attacker could potentially delete posts across the entire network or specific sites depending on the plugin's post type registrations and how WordPress handles post deletion across sites.
Can an attacker delete only specific posts or content types?
The vulnerability allows deletion of any post type, not just contact form data. An attacker can target posts, pages, custom post types, and any other content registered with WordPress by supplying the corresponding post ID. This makes the attack more dangerous than if it were limited to the plugin's own data.
What is the difference between the wp_ajax_remove_abandoned and wp_ajax_nopriv_remove_abandoned hooks?
The wp_ajax_remove_abandoned hook allows only authenticated users to access the action, while wp_ajax_nopriv_remove_abandoned explicitly permits unauthenticated users. By registering to both hooks, the plugin unintentionally allows anyone—authenticated or not—to trigger the vulnerable deletion function.
If I disable the Abandoned Contact Form 7 plugin, am I protected?
Yes. Deactivating or uninstalling the plugin completely removes the vulnerable AJAX handler from your WordPress installation. This is a valid interim mitigation if updating the plugin is delayed, but you will lose any contact form recovery functionality the plugin provided.
This analysis is provided for informational purposes by SEC.co and does not constitute professional security advice. Security assessments and remediation decisions must account for your specific environment, business risk tolerance, and operational constraints. Test all patches in non-production environments before deployment. Verify patch information against official vendor advisories and security bulletins. SEC.co makes no warranties regarding the completeness or accuracy of vulnerability details and recommends consulting vendor documentation and security professionals for definitive guidance. Source: NVD (public-domain), retrieved 2026-07-24. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2022-42479MEDIUMMissing Authorization in TemplateHouse Soledad – MEDIUM Severity Access Control Bypass
- CVE-2022-45813MEDIUMBeRocket Advanced AJAX Product Filters Missing Authorization Flaw
- CVE-2023-25969MEDIUMMissing Authorization in ThemeHunk Contact Form Plugin
- CVE-2023-32959MEDIUMMetroStore Missing Authorization Vulnerability – Patch Guide
- CVE-2025-12714MEDIUMRank Math SEO Plugin Unauthenticated Metadata Injection Vulnerability
- CVE-2025-52766MEDIUMMissing Authorization in Printeers Print & Ship – CVSS 6.5
- CVE-2025-53302MEDIUMMissing Authorization in Anton Shevchuk Constructor Framework
- CVE-2025-53346MEDIUMMissing Authorization in ThimPress Thim Core 2.3.3