CVE-2026-53738
Executive Summary
CVE-2026-53738 is an unpatched privilege escalation vulnerability in the "Copy & Delete Posts" WordPress plugin, version 1.5.4 and earlier, allowing any authenticated user with a plugin-enabled role to invoke arbitrary operations in the cdp_action_handling AJAX handler. The flaw bypasses per-function capability checks by failing to validate user permissions at the handler level, enabling a low-privilege attacker (e.g., subscriber or contributor) to delete arbitrary posts, overwrite plugin settings, and alter site configuration. With a CVSS score of 7.2 (High), an EPSS probability of 0.00248, and no available patch, affected WordPress sites remain exposed to unauthorized content destruction and configuration tampering.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Technical Analysis
The "Copy & Delete Posts" plugin registers an AJAX action handler for both authenticated and unauthenticated users via wp_ajax_cdp_action_handling and wp_ajax_nopriv_cdp_action_handling. The handler cdp_action_handling() is responsible for routing multiple sub-operations based on a f parameter passed in the request. These sub-operations include post copying, post deletion, and plugin settings updates.
The root cause of CVE-2026-53738 is the absence of a centralized permission check at the entry point of the AJAX handler. While individual sub-functions may invoke capability checks (e.g., current_user_can('delete_posts')), the routing mechanism does not enforce these checks uniformly. Specifically, the f parameter determines which internal function executes, and several critical functions — particularly those handling post deletion and settings serialization — execute without verifying that the current user possesses the appropriate WordPress capability.
Attack surface characterization:
- Attack vector: Network (AJAX POST request to
/wp-admin/admin-ajax.php) - Required privileges: Low (any authenticated role that has the plugin enabled)
- Authentication: Required (though the
noprivhook suggests an additional unauthenticated exposure variant) - The vulnerability is triggered via a crafted POST request with
action=cdp_action_handlingand a maliciousfparameter value
From a code-level perspective, the vulnerable flow resembles:
function cdp_action_handling() {
$f = sanitize_text_field($_POST['f']);
switch ($f) {
case 'delete_post':
// Missing capability check — any logged-in user can delete
$this->delete_post_handler($_POST['post_id']);
break;
case 'update_settings':
// Missing capability check — any logged-in user can overwrite
$this->update_settings_handler($_POST['settings']);
break;
}
}
The plugin fails to call current_user_can() or wp_verify_nonce() before routing to the handler functions. Because WordPress's check_ajax_referer() is not invoked, nonce validation is also absent, further lowering the exploitation barrier.
The CWE-269 classification reflects that the software does not properly manage privileges, allowing a lower-privileged principal to execute functions reserved for administrators. The CVSS vector AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:N indicates network exploitability with low attack complexity, low privilege requirement, no user interaction, significant scope change (compromising resources beyond the vulnerable component), complete confidentiality and integrity impact, but no availability impact.
No patch, vendor fix, or workaround is currently available. Public PoC code exists, although no active exploitation campaigns (CISA KEV: NO) or exploit-in-the-wild reports have been documented.
Exploitation Scenarios
The following step-by-step attack chain describes precisely how an attacker exploits CVE-2026-53738 in a real-world scenario:
Step 1 — Reconnaissance and Target Identification The attacker identifies a WordPress site running the "Copy & Delete Posts" plugin version 1.5.4 or earlier. Common reconnaissance techniques include:
- Scanning for the plugin identifier in page source:
GET /wp-content/plugins/copy-delete-posts/and checking the version inreadme.txtor via the plugin's CSS/JS file hashes - Fingerprinting via Shodan using the dorks:
http.html:"wp-content/plugins/copy-delete-posts"orhttp.title:"Copy & Delete Posts" - Determining whether the plugin is active by checking
/wp-json/wp/v2/API for plugin-related behavior or loading the plugin's main JS file
Step 2 — Credential Acquisition for a Low-Privilege Account The attacker obtains valid credentials for any account with an enabled role (subscriber, contributor, or author). Common methods:
- Credential stuffing against leaked password databases
- Brute-force on WordPress login using weak passwords for existing users
- Phishing campaigns targeting site members
- Exploiting a separate, unrelated vulnerability to obtain a low-privilege session cookie
Step 3 — Session Establishment and Handler Invocation
The attacker logs into the WordPress site and crafts a POST request to http://target/wp-admin/admin-ajax.php:
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target
Content-Type: application/x-www-form-urlencoded
Cookie: [valid authenticated session cookie]
action=cdp_action_handling&f=delete_post&post_id=123
This request invokes the cdp_action_handling handler with the f parameter set to delete_post, which routes to the deletion function without any capability check.
Step 4 — Payload Delivery and Execution Per Variant
Variant A — Post Deletion (Content Destruction):
action=cdp_action_handling&f=delete_post&post_id=456
The attacker iterates through post IDs, deleting published articles, pages, and media attachments. The handler calls the WordPress wp_delete_post() function or equivalent, permanently removing content without verification of delete_posts or delete_others_posts capability.
Variant B — Plugin Settings Overwrite (Configuration Tampering):
action=cdp_action_handling&f=update_settings&settings[]={"option_name":"cdp_settings","option_value":"<malicious serialized payload>"}
The attacker overwrites the plugin's configuration stored in wp_options, potentially setting values that cause the plugin to:
- Enable debug mode exposing stack traces
- Redirect copied posts to attacker-controlled URLs
- Disable internal action logging
- Reinject malicious JavaScript via settings fields that echo unsanitized data
Variant C — Post Copying as Reconnaissance:
action=cdp_action_handling&f=copy_post&post_id=789
Even benign operations (copying posts) leak content and data to attacker-controlled locations or expose drafts and private posts that should be inaccessible to low-privilege roles.
Step 5 — Post-Exploitation Impact After executing the deletion or settings-overwrite attack:
- Content Destruction: The attacker can wipe the entire blog content, including published posts, drafts, and attachments. The
I:Hintegrity impact of CVSS confirms total loss of content integrity. - Configuration Persistence: Overwriting plugin settings can result in persistent site defacement or client-side attacks if the settings render into front-end content.
- Lateral Movement: Since the CVSS scope is Changed (S:C), a successful exploit affects resources beyond the vulnerable plugin, including the entire WordPress database (
wp_posts,wp_optionstables) and the application's broader integrity. - Reputation Damage: A site with deleted content or compromised configuration suffers immediate operational and reputational impact. There is also the potential for further privilege escalation if the attacker chains this with another vulnerability to reach administrative access.
The attack does not require physical access and is fully remotely exploitable. The lack of nonce validation means no CSRF token is needed, and the only prerequisite is an authenticated session for any plugin-enabled role. Since the plugin defaults to enabling all roles, the majority of WordPress default roles qualify.
Impact Assessment
Business Impact:
- Confidentiality (High): A low-privilege attacker can read draft, private, and scheduled posts by copying them. The CVSS confidentiality subscore of HIGH reflects full disclosure of all site content.
- Integrity (High): The attacker can permanently delete posts and pages, destroying content with no recovery mechanism unless backups exist. Plugin settings can be overwritten, altering site behavior. The CVSS integrity subscore of HIGH confirms this.
- Availability (None): This specific flaw does not cause denial of service (CVSS availability subscore: NONE), though the deletion of posts may effectively render the site content unavailable to readers — an indirect adjacent impact.
Affected Systems:
- WordPress instances running
copy-delete-postsplugin version ≤ 1.5.4 - Any site where the plugin is active and default role permissions are unchanged
- Sites where the
noprivhook is active, exposing the handler to unauthenticated users (though this variant requires confirmation during testing)
Blast Radius:
- The scope change (S:C) in the CVSS vector means successful exploitation compromises resources beyond the plugin's boundaries — specifically the entire WordPress content database and site options table.
- Attackers with a single low-privilege account (subscriber) can destroy the primary content of an enterprise blog, marketing site, or knowledge base, causing business disruption and data loss.
- Plugin settings overwrites can lead to persistent defacement or serve as a foothold for further exploitation, though the EPSS score of 0.00248 suggests low immediate exploit likelihood, the public PoC lowers the barrier to entry for opportunistic attackers.
Mitigating Factors:
- Requires valid authentication credentials (though these are often obtainable via credential stuffing)
- No availability impact directly
- No CISA KEV listing indicates no active federal agency exploitation
Detection Guidance
Sigma Rule
title: WordPress Copy Delete Posts Plugin Privilege Escalation Attempt
id: 56a8f3e2-cd1a-4b9a-9f3e-7d1c4b8a2e5f
status: experimental
description: Detects AJAX requests targeting cdp_action_handling with privileged operations from low-privilege roles
author: Valtersit Threat Intelligence
date: 2026/06/01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2026-53738
logsource:
category: webserver
product: apache
definition: 'WordPress access log with POST body captured'
detection:
selection_action:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
selection_body:
cs-body|contains|all:
- 'action=cdp_action_handling'
- 'f=delete_post'
filter_subscriber_anonymous:
cs-username|contains:
- 'subscriber'
- 'contributor'
- 'author'
condition: selection_action and selection_body and not filter_subscriber_anonymous
falsepositives:
- Legitimate admin operations using the plugin
level: high
tags:
- attack.privilege_escalation
- attack.t1068
- cve.2026-53738
YARA Rule
rule WordPress_Copy_Delete_Posts_CVE_2026_53738 {
meta:
author = "Valtersit Threat Intelligence"
description = "Detects payloads targeting cdp_action_handling privilege escalation"
cve = "CVE-2026-53738"
date = "2026-06-01"
strings:
$action = "cdp_action_handling" ascii wide nocase
$param_f = "f=delete_post" ascii wide nocase
$param_f2 = "f=update_settings" ascii wide nocase
$ajax = "admin-ajax.php" ascii wide nocase
$post = "post_id=" ascii wide nocase
$settings = "settings=" ascii wide nocase
condition:
uint16(0) == 0x0d0a or
($ajax and $action and ($param_f or $param_f2) and ($post or $settings))
}
Suricata IDS Rule
alert http any any -> $HOME_NET any (msg:"ET WEB_SPECIFIC_APPS WordPress Copy Delete Posts Plugin Privilege Escalation Attempt (CVE-2026-53738)"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/wp-admin/admin-ajax.php"; http.request_body; content:"action=cdp_action_handling"; fast_pattern; content:"f="; http.request_body; pcre:"/f=(delete_post|update_settings|copy_post)/i"; classtype:attempted-user; reference:cve,2026-53738; reference:url,https://nvd.nist.gov/vuln/detail/CVE-2026-53738; sid:2026538; rev:1;)
Elastic Detection
any where process.name == "httpd" or process.name == "nginx" or process.name == "apache2"
| network where true
| filter event.dataset == "nginx.access" or event.dataset == "apache.access"
| where wildcard(http.request.body, "*action=cdp_action_handling*")
| where (
wildcard(http.request.body, "*f=delete_post*") or
wildcard(http.request.body, "*f=update_settings*") or
wildcard(http.request.body, "*f=copy_post*")
)
| where http.request.method == "POST"
| where wildcard(url.path, "*admin-ajax.php*")
| where user.name not in ("admin", "administrator")
Splunk SPL Query
index=web sourcetype="apache:access" OR sourcetype="nginx:access"
| regex form_data="action=cdp_action_handling"
| regex form_data="f=(delete_post|update_settings|copy_post)"
| where method="POST"
| where like(uri_path, "%admin-ajax.php%")
| where NOT user IN ("admin", "administrator", "root")
| stats count by src_ip, uri_path, form_data, user
| where count > 1
| sort - count
Wazuh OSSEC Rule
<rule id="100537" level="12">
<if_sid>31122</if_sid>
<match>action=cdp_action_handling</match>
<regex>f=(delete_post|update_settings|copy_post)</regex>
<description>WordPress Copy & Delete Posts plugin privilege escalation attempt (CVE-2026-53738)</description>
<group>wordpress,privilege_escalation,attack.t1068,</group>
<mitre>
<id>T1068</id>
</mitre>
<var name="srcip">srcip</var>
</rule>
Mitigation & Patch Guidance
Patch Confidence Level: 0/4 — UNPATCHED. No patch evidence exists from any tracked source. No vendor fix or official workaround has been published.
Immediate Mitigations (implement these now):
- Disable the plugin: Deactivate "Copy & Delete Posts" on all WordPress installations. This is the only guaranteed mitigation currently available.
- Restrict plugin access: If the plugin must remain active, restrict the
cdp_action_handlingAJAX action to administrators only via a customfunctions.phpsnippet:add_action('wp_ajax_cdp_action_handling', function() { if (!current_user_can('manage_options')) { wp_die('Unauthorized'); } }, 0); - Revoke plugin-enabled roles: In the plugin settings, deselect all roles except Administrator. If the plugin uses a checkbox list for role activation, ensure only administrative roles retain access.
- Block the AJAX action via WAF: Add a web application firewall rule to block POST requests to
admin-ajax.phpcontaining bothaction=cdp_action_handlingandf=delete_postorf=update_settings.
Patch/Upgrade Steps:
- Check for plugin updates daily: Monitor the WordPress plugin repository and the vendor's advisory channels (https://wordpress.org/plugins/copy-delete-posts/) for version releases beyond 1.5.4.
- Apply vendor patch when available: When a patched version (≥1.5.5) is released, upgrade immediately. Verify the changelog explicitly references CVE-2026-53738 and includes capability checks in
cdp_action_handling. - Do NOT downgrade: If on an even older version, moving to 1.5.4 does not improve security; the flaw affects all versions ≤1.5.4.
Long-Term Hardening:
- Implement a WordPress hardening baseline:
- Enforce least-privilege role assignments — do not enable roles for non-administrative users on any plugin
- Use a security plugin (e.g., Wordfence, Sucuri) to monitor AJAX requests and block anomalous patterns
- Enable WordPress automatic updates for plugins to receive future patches promptly
- Audit user roles regularly: Review all roles and capabilities quarterly to ensure no low-privilege account has plugin-enabled access that could be abused
- Harden authentication:
- Enforce strong password policy and multi-factor authentication (MFA) for all accounts, particularly at the subscriber and contributor levels, since these are the attack entry points
- Implement rate limiting on login endpoints to mitigate credential stuffing
- Maintain backup discipline:
- Implement daily automated backups of the WordPress database (including
wp_postsandwp_optionstables) and the webroot file system - Test restoration procedures monthly
- Implement daily automated backups of the WordPress database (including
- Monitor threat intelligence feeds: Subscribe to CVE monitoring services (e.g., CISA KEV, NVD notification) for future updates on CVE-2026-53738 patch availability or emerging exploit campaigns
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2026-53738 — Official CVE description, CVSS vector (7.2 High), CWE-269 classification
- WordPress Plugin Repository: https://wordpress.org/plugins/copy-delete-posts/ — Vendor distribution channel; monitor for patched versions beyond 1.5.4
- VulnCheck Advisory (CNA): https://vulncheck.com/advisories/CVE-2026-53738 — Original responsibility holder; contains technical details of the flawed handler routing
- MITRE ATT&CK Framework: https://attack.mitre.org/techniques/T1068/ — Privilege escalation technique mapped to this vulnerability
- CISA Known Exploited Vulnerabilities Catalog: https://www.cisa.gov/known-exploited-vulnerabilities-catalog — Confirms CVE-2026-53738 is NOT currently listed; monitor for future inclusion
Threat Actor Campaigns / Exploit-in-the-Wild Evidence: No active exploitation campaigns or in-the-wild exploits have been officially documented as of this report date. The presence of public PoC code and the low EPSS percentile (16.3%) indicates a currently low but nontrivial risk of opportunistic exploitation by automated scanners. Since no patch exists, the window for exploitation remains open and the risk profile is expected to rise as more threat actors discover and weaponize the vulnerability.
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.