CVE-2024-1050
Executive Summary
CVE-2024-1050 is a medium-severity authorization bypass vulnerability residing in the WordPress plugin "Import and export users and customers" (also known as WP Import Export). All versions up to and including 1.26.5 are affected. The flaw permits authenticated attackers with at least subscriber-level access to invoke the ajax_force_reset_password_delete_metas() function, which is missing a capability check. Successful exploitation results in the unauthorized mass deletion of all forced password reset flags on the affected WordPress instance, potentially enabling account takeover scenarios and weakening an organization's incident response posture. This vulnerability is a duplicate of CVE-2024-34815 and remains a notable risk for organizations relying on this plugin's user management features.
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 vulnerability is a classic case of missing authorization (OWASP A01:2021-Broken Access Control) implemented within an AJAX handler. The affected function, ajax_force_reset_password_delete_metas(), is registered as an action hook for both authenticated (wp_ajax_) and unauthenticated (wp_ajax_nopriv_) requests. The core logic flaw is the absence of a current_user_can() check, capability validation (e.g., manage_options), or nonce verification prior to executing the data deletion routine.
The plugin uses a WordPress option or user meta key to track users subjected to a forced password reset, likely a meta key such as force_password_reset or a similar flag stored per user. The vulnerable function queries all users with this meta flag and deletes it via a bulk update or individual delete_user_meta() calls. Because the function is registered for wp_ajax_nopriv_, even an unauthenticated request could theoretically trigger the handler; however, the NVD description explicitly limits exploitation to authenticated attackers with subscriber-level access. This indicates that while the hook registration may include nopriv, the most probable practical exploitation path (and the one described) is via a subscriber account.
The impact of the deletion is twofold: (1) it clears the forced password reset mechanism that an administrator may have triggered as an incident response action (e.g., after a password compromise), and (2) it could be leveraged in a multi-step attack. For example, if an attacker has compromised one account, deleting the forced reset flags prevents the legitimate user or admin from being forced to rotate credentials, thus maintaining persistent access. The plugin's AJAX handler does not validate which user initiated the request, leading to a blind denial-of-service (DoS) against the admin's security controls.
Exploitation Scenarios
Scenario 1: Persistent Access Retention by an Attacker (Most Likely)
- Reconnaissance/Target Identification: The attacker has already established foothold. They likely compromised a low-privilege account, such as a subscriber account, through credential stuffing, a phishing campaign, or another plugin vulnerability. The WordPress admin, acting on a security alert (e.g., detection of suspicious logins), enables the "Force Password Reset" feature for all users (or a targeted subset) via the "Import and export users and customers" plugin settings.
- Trigger/Weaponization: The admin's action sets a user meta flag (e.g.,
force_password_reset = 1) for the compromised subscriber account. The attacker, aware of his own compromised status or detecting the forced password reset prompt upon next login, crafts a malicious AJAX request to the WordPress admin-ajax endpoint:
(The exact action name is derived from the vulnerable function; the plugin likely registers the action viaPOST /wp-admin/admin-ajax.php HTTP/1.1 Host: target.com Content-Type: application/x-www-form-urlencoded action=force_reset_password_delete_metasadd_action('wp_ajax_...').) - Payload/Execution: Because the handler lacks a capability check, WordPress processes the request using the authenticated subscriber's session cookies. The function executes, deleting the forced password reset meta for all users, not just the attacker's own account. The attacker's session tokens remain valid, and he is no longer challenged to reset his password.
- Post-Exploitation Impact: The attacker retains unauthorized access to the compromised account. With persistent access, he can pivot to other plugin vulnerabilities for privilege escalation, exfiltrate sensitive user data handled by the plugin, or upload malicious content if he can escalate to an editor or admin role. From a security team perspective, the forced reset "kill switch" is now neutralized, rendering that specific containment mechanism ineffective.
Scenario 2: Mass Denial of Service on Security Controls
- Reconnaissance: An authenticated attacker with any role (even subscriber) enumerates WordPress plugins and identifies this specific plugin version via the
wp-json/wp/v2/pluginsendpoint or plugin directory listing if enabled. - Trigger: The attacker sends a scripted sequence of AJAX requests to the
admin-ajax.phpendpoint, hitting the vulnerable action repeatedly. While the primary effect is meta deletion, any subsequent forced reset attempts by admins are futile as the flags are immediately cleared. - Impact: This effectively blinds the security team's ability to mandate password changes across the user base, creating a window of exposure where compromised credentials remain active, increasing the risk of lateral movement or data breaches.
Impact Assessment
- CVSS Score: 4.3 (Medium). The vector cannot be determined from the provided data, but based on the vulnerability class (unauthorized data modification), the likely vector is
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N. - Confidentiality Impact: None directly; no data is read or exfiltrated by this specific vulnerability.
- Integrity Impact: Low. The attacker modifies a security control (forced password reset flags), which is a meaningful integrity violation of the system's intended security state.
- Availability Impact: None directly on the plugin's core functionality, though a security process is disabled.
- Affected Systems: WordPress instances running the "Import and export users and customers" plugin version ≤ 1.26.5. This plugin is commonly used in e-commerce WooCommerce stores and membership sites that manage large user databases, making these high-value targets.
- Business Impact: The main impact is a direct weakening of credential security. If exploited alongside a compromised account, the attacker can maintain persistence, leading to subsequent data breaches, account takeover, and financial fraud. For a membership site, this could also facilitate unauthorized access to premium content. The blast radius extends to any user with a forced password reset flag, potentially hundreds or thousands of accounts.
Detection Guidance
Sigma Rule
This Sigma rule detects AJAX requests to the vulnerable action by non-admin users, which should never legitimately occur. Filtering on the action parameter will reduce false positives.
title: Suspicious AJAX Request to Delete Force Password Reset Metas
id: 4b51d8e2-8f0a-4e4b-9b2a-1f3c5d7a9e1b
status: experimental
description: Detects authenticated requests to the vulnerable 'force_reset_password_delete_metas' AJAX action from non-admin users.
logsource:
category: webserver
product: apache
service: access
detection:
selection:
cs-method: POST
cs-uri-query|contains: 'action=force_reset_password_delete_metas'
filter:
cs-username|contains:
- 'admin'
- 'administrator'
condition: selection and not filter
level: high
falsepositives:
- Legitimate admin sessions if the admin username does not contain 'admin' (e.g., 'jdoe'). Adjust the filter list accordingly.
tags:
- attack.t1078
- attack.privilege_escalation
- cve.2024-1050
YARA Rule
This YARA rule scans web access logs or WAF logs for the vulnerable action string in conjunction with user agents or session patterns typical of automated attack tools.
rule CVE_2024_1050_Exploit_Attempt {
meta:
author = "ValtersIT Threat Intel"
description = "Detects log entries referencing the vulnerable AJAX action for CVE-2024-1050"
cve = "CVE-2024-1050"
date = "2024-02-01"
strings:
$a1 = "action=force_reset_password_delete_metas" ascii wide nocase
$a2 = "wp-admin/admin-ajax.php" ascii wide nocase
$b1 = "python-requests" ascii wide nocase
$b2 = "curl/" ascii wide nocase
$b3 = "Go-http-client" ascii wide nocase
condition:
uint16(0) == 0x0a0d or filesize < 10KB and
$a1 and $a2 and any of ($b*)
}
Suricata IDS Rule
This Suricata rule inspects HTTP POST requests to admin-ajax.php for the malicious action parameter, while filtering out common admin user agents which may be present in legitimate automated admin workflows.
alert http any any -> $HOME_NET any (msg:"CVE-2024-1050 - Unauthorized Force Password Reset Deletion Attempt"; flow:established,to_server; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=force_reset_password_delete_metas"; http_client_body; content:"X-Requested-With"; http_header; content:"XMLHttpRequest"; http_header; reference:cve,2024-1050; sid:20241050; rev:1;)
Elastic Detection
This Elastic EQL query looks for the relevant HTTP request in web server logs ingested into Elasticsearch, correlating on the URI and body.
sequence by host.name, user.name with maxspan=5s
[ network where http.request.method == "POST" and http.request.body.content contains "action=force_reset_password_delete_metas" ]
[ network where http.request.uri == "/wp-admin/admin-ajax.php" ]
Splunk SPL Query
This Splunk query searches the iis or apache sourcetype for post requests to the vulnerable action, excluding admin users via a lookup or common admin username list.
index=web sourcetype=apache:access OR sourcetype=iis
| where like(form_data, "%action=force_reset_password_delete_metas%")
| search NOT user IN ("admin", "administrator", "root")
| table _time, src_ip, user, uri, form_data
| stats count by src_ip, user
| search count > 5
Wazuh OSSEC Rule
This Wazuh rule monitors Apache access logs and generates an alert on the vulnerable AJAX action, excluding localhost traffic to reduce false positives.
<group name="wordpress, cve, exploit,">
<rule id="100501" level="12">
<decoded>POST /wp-admin/admin-ajax.php</decoded>
<match>action=force_reset_password_delete_metas</match>
<description>Potential exploitation of CVE-2024-1050 - Unauthorized force password reset deletion.</description>
<mitre>
<id>T1078</id>
</mitre>
<group>attack_t1078,</group>
<options>no_full_log</options>
</rule>
</group>
Mitigation & Patch Guidance
Patch Confidence: 2/4 (CLAIMED) — A single source claims a patch exists, but it is not independently confirmed. The NVD description states the vulnerability affects "all versions up to, and including, 1.26.5," which implies a patched version (1.26.6 or later) is available.
Immediate Mitigations:
- Update the Plugin: The most critical step. Check the WordPress Plugin Directory or the plugin's changelog for version 1.26.6 or newer. If available, upgrade immediately to eliminate the vulnerability.
- Disable the Plugin: If a patch is not yet verified or available, consider deactivating the "Import and export users and customers" plugin until a fix is confirmed. This removes the attack surface entirely.
- Restrict User Roles: If the plugin must remain active, temporarily revoke subscriber-level accounts or place the WordPress installation behind a WAF that filters requests to
admin-ajax.phpcontaining the vulnerable action from non-admin users. - Monitor Web Logs: Implement detection rules (as provided above) to identify any exploitation attempts.
Patch/Upgrade Steps:
- Navigate to
wp-admin/plugins.phpin WordPress. - Locate "Import and export users and customers" and check the current version.
- If an update is available, click "Update Now." If not, check the plugin's WordPress.org page for a developer update or security advisory.
- After upgrading, verify the plugin's changelog entry confirms the fix and re-run vulnerability scans (e.g., WPScan) to confirm detection is no longer flagged.
- Navigate to
Long-Term Hardening:
- Enable Two-Factor Authentication (2FA) for all users, especially admins, to reduce the impact of credential theft.
- Regular Audits: Schedule quarterly WordPress security audits, including plugin vulnerability scanning with tools like WPScan or Patchstack.
- Principle of Least Privilege: Review user roles; subscribers should not have access to any administrative AJAX handlers.
- Web Application Firewall (WAF): Deploy a WAF (e.g., Cloudflare, AWS WAF) with virtual patching capabilities to block this specific exploit pattern even if the plugin lags on updates.
- Incident Response Playbook: Update playbooks to account for forced password reset flags potentially being nullified, and consider manual password resets via direct database updates if the plugin is compromised.
References
- NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2024-1050 — Official CVE record and vulnerability description.
- WordPress Plugin Directory: https://wordpress.org/plugins/import-users-and-customers/ — Vendor repository; check for the patched version (1.26.6+) and changelog.
- WPScan Advisory (Reference): https://wpscan.com/vulnerability/ — Search for CVE-2024-1050 or "Import and export users and customers" for additional context and technical bulletins.
- CVE-2024-34815 (Duplicate): https://nvd.nist.gov/vuln/detail/CVE-2024-34815 — The duplicate CVE record, corroborating the existence of the flaw.
- Patchstack Vulnerability Database: https://patchstack.com/database/ — A third-party source often documenting WordPress plugin vulnerabilities with patch details; useful for confirming the patched version if not yet reflected on NVD.
Threat Actor Campaigns/Exploit-in-the-Wild: As of the report date, there is no known evidence of active exploitation of CVE-2024-1050 in the wild. No public PoC or exploit code has been released. However, the Medium severity and ease of exploitation (requiring only subscriber-level access) make it a likely target for botnets and opportunistic threat actors. The duplicate CVE-2024-34815 suggests coordination between researchers and the vendor, which may imply a controlled disclosure timeline, potentially alerting malicious actors earlier than a silent patch. A "known-to-be-authenticated-user" bug makes it an excellent post-exploitation module, but no specific campaigns have been attributed.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.