CVE-2024-43214
Executive Summary
CVE-2024-43214 is a Missing Authorization vulnerability in the myCred WordPress plugin by Wpexperts (Saad Iqbal). This flaw allows unauthenticated attackers to bypass authorization checks, potentially exposing sensitive data or allowing unauthorized actions. The vulnerability affects all versions up to and including 2.7.2. As of this report, no official patch has been released, and the vendor's status is unknown. The CVSS score is 5.3 (Medium), with a low EPSS score of 0.0%, indicating low exploitation likelihood at this time. However, due to the widespread use of WordPress plugins, this vulnerability poses a significant risk to sites using myCred.
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
Supply Chain & Package Security
This vulnerability is specific to the WordPress plugin ecosystem. myCred is a popular points management plugin for WordPress, distributed via the official WordPress plugin repository. The lack of a patch means that all installations of myCred <= 2.7.2 are potentially vulnerable. Site administrators should treat this as a supply chain risk and consider removing the plugin until a fix is available.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
- Base Score: 5.3 (Medium)
- Attack Vector: Network (AV:N)
- Attack Complexity: Low (AC:L)
- Privileges Required: None (PR:N)
- User Interaction: None (UI:N)
- Scope: Unchanged (S:U)
- Confidentiality Impact: Low (C:L)
- Integrity Impact: None (I:N)
- Availability Impact: None (A:N)
Threat Level: Medium. The vulnerability allows unauthorized access to sensitive information but does not allow data modification or denial of service. The low EPSS score suggests limited active exploitation, but the lack of a patch increases long-term risk.
Deep Dive & Mechanics
The vulnerability resides in the myCred plugin's authorization checks. The plugin fails to properly validate user permissions before executing certain actions or exposing data. Specifically, the mycred plugin uses AJAX handlers and REST endpoints that do not enforce capability checks. An unauthenticated attacker can send crafted HTTP requests to these endpoints to:
- Retrieve user points/balances
- View transaction logs
- Access other sensitive configuration data
The missing authorization is likely due to the use of wp_ajax_nopriv_* hooks without proper nonce or capability verification, or the absence of current_user_can() checks in custom REST API routes.
WordPress Ecosystem Note: This is a WordPress plugin vulnerability. The issue is not related to the underlying web server (Apache/Nginx) but is a direct result of insecure coding practices in the myCred plugin.
Vulnerable vs. Patched Code
Since no patch is available, we can only analyze the vulnerable code pattern. The vulnerable code likely resembles:
// Vulnerable pattern (myCred <= 2.7.2)
add_action('wp_ajax_nopriv_mycred_get_balance', 'mycred_get_balance_callback');
function mycred_get_balance_callback() {
$user_id = $_POST['user_id'];
$balance = mycred_get_users_balance($user_id);
wp_send_json_success($balance);
}
A patched version would include authorization checks:
// Patched pattern (hypothetical)
add_action('wp_ajax_mycred_get_balance', 'mycred_get_balance_callback');
add_action('wp_ajax_nopriv_mycred_get_balance', 'mycred_get_balance_callback');
function mycred_get_balance_callback() {
// Verify nonce
if (!wp_verify_nonce($_POST['_wpnonce'], 'mycred_nonce')) {
wp_die('Security check failed');
}
// Check user capability
if (!current_user_can('edit_mycred_balances')) {
wp_die('Unauthorized');
}
$user_id = intval($_POST['user_id']);
$balance = mycred_get_users_balance($user_id);
wp_send_json_success($balance);
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- Target WordPress site with myCred plugin <= 2.7.2
- Network access to the target
Exploitation Steps:
Identify vulnerable endpoints: Use a tool like Burp Suite or curl to enumerate AJAX actions:
curl -s "http://target.com/wp-admin/admin-ajax.php?action=mycred_get_balance&user_id=1"Extract sensitive data:
# Get user balance curl -X POST "http://target.com/wp-admin/admin-ajax.php" \ -d "action=mycred_get_balance&user_id=1" # Get transaction log curl -X POST "http://target.com/wp-admin/admin-ajax.php" \ -d "action=mycred_get_transactions&user_id=1"Automated scanning with Nuclei (if template available):
nuclei -u http://target.com -t mycred-missing-auth.yaml
Note: No public exploit code is available at this time.
Blue Team
Detection & Prevention:
Web Application Firewall (WAF) Rules: Block requests to
admin-ajax.phpwith suspiciousactionparameters related to myCred (e.g.,mycred_get_balance,mycred_get_transactions).Monitor for unauthorized access:
- Look for requests to
/wp-admin/admin-ajax.phpwithactionparameters starting withmycred_from unauthenticated users. - Alert on multiple requests to different
user_idvalues.
- Look for requests to
Temporary mitigation:
- Disable the myCred plugin until a patch is available.
- If disabling is not possible, add the following code to the theme's
functions.phpto block unauthenticated myCred AJAX requests:
add_action('init', function() { if (defined('DOING_AJAX') && DOING_AJAX && !is_user_logged_in()) { $blocked_actions = array('mycred_get_balance', 'mycred_get_transactions'); if (isset($_REQUEST['action']) && in_array($_REQUEST['action'], $blocked_actions)) { wp_die('Unauthorized'); } } });
Indicators of Compromise (IOCs)
Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwithaction=mycred_*parameters from unauthenticated sources. - Repeated requests with varying
user_idparameters.
- HTTP POST requests to
File IOCs:
- Modified or suspicious entries in WordPress debug log (
wp-content/debug.log) showing failed authorization attempts. - Unusual entries in web server access logs for
admin-ajax.phpwith myCred actions.
- Modified or suspicious entries in WordPress debug log (
Log Patterns:
"POST /wp-admin/admin-ajax.php HTTP/1.1" 200 "action=mycred_get_balance&user_id=1"
Detection Engineering
YARA Rule
rule CVE_2024_43214_myCred_Missing_Auth {
meta:
description = "Detects myCred plugin files vulnerable to CVE-2024-43214"
author = "Valters IT"
date = "2024-01-01"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-43214"
strings:
$vuln_func1 = "wp_ajax_nopriv_mycred" nocase
$vuln_func2 = "mycred_get_balance" nocase
$vuln_func3 = "mycred_get_transactions" nocase
$vuln_func4 = "current_user_can" nocase
condition:
($vuln_func1 or $vuln_func2 or $vuln_func3) and not $vuln_func4
}
Sigma Rule
title: CVE-2024-43214 - myCred Missing Authorization Detection
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthenticated access to myCred AJAX endpoints
author: Valters IT
date: 2024/01/01
references:
- https://nvd.nist.gov/vuln/detail/CVE-2024-43214
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-stem: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=mycred_'
condition: selection
falsepositives:
- Legitimate authenticated myCred AJAX requests
level: medium
Suricata Rule
alert http $EXTERNAL_NET any -> $HOME_NET any (
msg:"CVE-2024-43214 - myCred Missing Authorization Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=mycred_"; http_client_body;
classtype:attempted-recon;
sid:1000001;
rev:1;
reference:cve,2024-43214;
)
Remediation & Mitigation
Immediate Actions:
- Disable the myCred plugin until an official patch is released.
- Implement a Web Application Firewall (WAF) rule to block unauthenticated requests to myCred AJAX endpoints.
- Monitor logs for suspicious activity as described in the IOCs section.
Long-term Fix:
- The vendor (Wpexperts) must release a patched version that includes proper authorization checks (nonce verification and capability checks) on all AJAX and REST endpoints.
- Users should update to the latest version once available.
Workaround:
- If the plugin cannot be disabled, apply the code snippet provided in the Blue Team section to block unauthenticated myCred AJAX requests.
Valters IT - DevSecOps & Cyber Threat Intelligence Report
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.