CVE-2024-54310
Executive Summary
CVE-2024-54310 is a Missing Authorization vulnerability in the WordPress plugin Gou Manage My Account Menu (slug: gou-wc-account-tabs), developed by Aslam Khan Gouran. This flaw allows unauthenticated attackers to access functionality that should be protected by Access Control Lists (ACLs). The vulnerability affects all versions up to and including 1.0.1.8. With a CVSS score of 5.3 (Medium), the primary impact is the unauthorized access to WooCommerce account tabs, potentially exposing sensitive user account information or allowing manipulation of account-related features. No public exploit code or patch is currently available, making this a high-priority issue for WordPress site administrators.
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 resides in a WordPress plugin distributed via the official WordPress Plugin Directory. The plugin is not managed through NPM, PyPI, Go, or Ruby ecosystems. The risk is primarily to WordPress sites that have this plugin installed. Since the patch status is unknown, site administrators must rely on manual mitigation or disabling the plugin.
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) – The vulnerability can be exploited remotely.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – No authentication is needed.
- User Interaction: None (UI:N) – The attacker does not need to trick a user.
- Scope: Unchanged (S:U) – The vulnerable component and the impacted component are the same.
- Confidentiality Impact: Low (C:L) – Limited unauthorized access to information.
- Integrity Impact: None (I:N) – No data modification is possible.
- Availability Impact: None (A:N) – No denial of service.
Threat Level: Medium. The low EPSS score (0.0%) suggests active exploitation is not widespread, but the ease of exploitation and lack of a patch make it a significant risk for affected sites.
Deep Dive & Mechanics
The vulnerability stems from a Missing Authorization check in the plugin's AJAX handlers or REST endpoints that manage WooCommerce account tabs. The plugin likely registers custom endpoints or AJAX actions to allow users to view or modify their account menu tabs. Due to a missing current_user_can() or similar capability check, these endpoints are accessible to unauthenticated users.
Root Cause: The plugin fails to verify that the requesting user has the necessary permissions (e.g., read, edit_account, or a custom capability) before executing the requested action. This allows an attacker to directly call the vulnerable function without authentication.
Attack Vector: An attacker can craft a direct HTTP request to the vulnerable endpoint, bypassing the intended access controls. For example, if the plugin exposes an AJAX action like wc_account_tabs_get_data, an attacker can send a POST request with the action parameter and retrieve sensitive data.
Impact: Unauthorized access to WooCommerce account tabs could expose:
- User order history
- Shipping and billing addresses
- Account settings (e.g., email, password change forms)
- Subscription or membership details
Vulnerable vs. Patched Code
Since no patch is available, the following is a hypothetical comparison based on common WordPress plugin authorization patterns.
Vulnerable Code (Example):
add_action('wp_ajax_nopriv_wc_account_tabs_get_data', 'handle_get_data');
add_action('wp_ajax_wc_account_tabs_get_data', 'handle_get_data');
function handle_get_data() {
// No capability check
$user_id = $_POST['user_id'];
$data = get_user_meta($user_id, 'wc_account_tabs', true);
wp_send_json_success($data);
}
Patched Code (Hypothetical):
add_action('wp_ajax_nopriv_wc_account_tabs_get_data', 'handle_get_data');
add_action('wp_ajax_wc_account_tabs_get_data', 'handle_get_data');
function handle_get_data() {
// Added authorization check
if (!current_user_can('read') || get_current_user_id() != $_POST['user_id']) {
wp_die('Unauthorized', 403);
}
$user_id = intval($_POST['user_id']);
$data = get_user_meta($user_id, 'wc_account_tabs', true);
wp_send_json_success($data);
}
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with the vulnerable plugin (version <= 1.0.1.8) installed and active.
- Knowledge of the vulnerable endpoint (e.g., via plugin source code analysis or fuzzing).
Exploitation Steps:
- Identify the vulnerable endpoint: Analyze the plugin's source code to find AJAX actions or REST routes that lack authorization checks. Common patterns include
wp_ajax_nopriv_*hooks orrest_routeregistrations withoutpermission_callback. - Craft the exploit request: Use
curlor a tool like Burp Suite to send a request to the vulnerable endpoint. For example:curl -X POST 'http://target-site/wp-admin/admin-ajax.php' \ -d 'action=wc_account_tabs_get_data&user_id=1' - Extract data: The response will contain sensitive user data if the request is successful.
No public exploit code is available for this CVE.
Blue Team (Detection & Defense)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwith parameters related to the plugin (e.g.,action=wc_account_tabs_*). - Look for requests from unauthenticated users to endpoints that should require authentication.
- Use the Sigma and Suricata rules provided in the Detection Engineering section.
Defense:
- Immediate: Disable the plugin if it is not essential.
- Mitigation: Implement a Web Application Firewall (WAF) rule to block requests to the plugin's AJAX actions from unauthenticated users.
- Long-term: Monitor the plugin's page for a security update and apply it as soon as it becomes available.
Indicators of Compromise (IOCs)
- Network IOCs:
- HTTP POST requests to
/wp-admin/admin-ajax.phpwithactionparameter containingwc_account_tabs_(e.g.,wc_account_tabs_get_data,wc_account_tabs_update). - Unusual
user_idparameters in AJAX requests from unauthenticated IPs.
- HTTP POST requests to
- File IOCs:
- Presence of the plugin directory:
/wp-content/plugins/gou-wc-account-tabs/ - Plugin version file:
/wp-content/plugins/gou-wc-account-tabs/readme.txtshowing version <= 1.0.1.8.
- Presence of the plugin directory:
- Log IOCs:
- WordPress debug log entries showing failed capability checks or unauthorized access attempts to plugin endpoints.
Detection Engineering
YARA Rule
rule CVE_2024_54310_WordPress_Plugin_Missing_Auth {
meta:
description = "Detects the vulnerable Gou Manage My Account Menu plugin files"
author = "Valters IT"
date = "2025-04-10"
cve = "CVE-2024-54310"
strings:
$plugin_slug = "gou-wc-account-tabs"
$vuln_version = "Version: 1.0.1.8"
$ajax_hook = "wp_ajax_nopriv_wc_account_tabs"
condition:
$plugin_slug and ($vuln_version or $ajax_hook)
}
Sigma Rule
title: CVE-2024-54310 - Missing Authorization in Gou Manage My Account Menu
id: 7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d
status: experimental
description: Detects unauthenticated AJAX requests to the vulnerable plugin endpoints
author: Valters IT
date: 2025-04-10
logsource:
category: webserver
product: apache
service: access_combined
detection:
selection:
cs-method: 'POST'
cs-uri-query|contains: 'admin-ajax.php'
cs-uri-query|contains: 'action=wc_account_tabs_'
sc-status: 200
condition: selection
falsepositives:
- Legitimate authenticated users accessing their own account tabs
level: high
Suricata Rule
alert http any any -> $HOME_NET any (
msg:"CVE-2024-54310 - Missing Authorization in Gou Manage My Account Menu";
flow:to_server,established;
content:"POST"; http_method;
content:"admin-ajax.php"; http_uri;
content:"action=wc_account_tabs_"; http_client_body;
classtype:attempted-recon;
sid:1000001;
rev:1;
reference:cve,2024-54310;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if it is not critical to business operations.
- Implement a WAF rule to block unauthenticated requests to any endpoint containing
wc_account_tabs_. - Monitor logs for exploitation attempts using the provided detection rules.
Long-term Actions:
- Check for updates on the WordPress Plugin Directory page for
gou-wc-account-tabs. - Apply the patch as soon as it becomes available.
- Conduct a security audit of all WordPress plugins to identify similar missing authorization vulnerabilities.
Workaround: If the plugin must remain active, consider adding a custom function to your theme's functions.php to enforce authorization:
add_action('init', function() {
if (defined('DOING_AJAX') && DOING_AJAX) {
if (isset($_POST['action']) && strpos($_POST['action'], 'wc_account_tabs_') === 0) {
if (!is_user_logged_in()) {
wp_die('Unauthorized', 403);
}
}
}
});
Valters IT
Securing Digital Frontiers
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.