CVE-2024-7605
Executive Summary
CVE-2024-7605 is a medium-severity vulnerability in the HelloAsso WordPress plugin (versions up to and including 1.1.10). The flaw resides in the ha_ajax function, which lacks a proper capability check, allowing authenticated attackers with at least Contributor-level access to modify plugin options. This can lead to service disruption or misconfiguration of the HelloAsso integration. The vulnerability is currently unpatched, and no public exploit code or proof-of-concept is available. The EPSS score is 0.0%, indicating low exploitation likelihood in the wild, but the risk remains for sites with untrusted contributors.
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 affects a WordPress plugin distributed via the official WordPress plugin repository. No supply chain compromise has been reported, but the lack of a patch increases the risk of malicious actors forking or distributing modified versions. Administrators should verify plugin integrity via checksums and monitor for unauthorized updates.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L
- Base Score: 4.3 (Medium)
- Attack Vector: Network
- Attack Complexity: Low
- Privileges Required: Low (Contributor-level)
- User Interaction: None
- Scope: Unchanged
- Confidentiality Impact: None
- Integrity Impact: Low
- Availability Impact: Low
Threat Level: Medium. Exploitation requires authenticated access, limiting the attack surface. However, the ability to modify plugin options can lead to service disruption or data exfiltration if combined with other vulnerabilities.
Deep Dive & Mechanics
The vulnerability exists in the ha_ajax function, which handles AJAX requests for the HelloAsso plugin. The function is registered via wp_ajax_ha_ajax and wp_ajax_nopriv_ha_ajax, but the nopriv hook is incorrectly used, allowing unauthenticated access. However, the actual exploit requires a valid nonce and capability check, which is missing for the ha_ajax action. The function processes requests to update plugin options (e.g., API keys, endpoints) without verifying that the user has the manage_options capability. An attacker with Contributor-level access can send a crafted AJAX request to modify these settings, potentially redirecting payments or causing denial of service.
Root Cause: Missing current_user_can('manage_options') check in the ha_ajax callback.
Vulnerable vs. Patched Code
Vulnerable Code (ha_ajax function):
add_action('wp_ajax_ha_ajax', 'ha_ajax');
add_action('wp_ajax_nopriv_ha_ajax', 'ha_ajax');
function ha_ajax() {
// No capability check
$option_name = sanitize_text_field($_POST['option_name']);
$option_value = sanitize_text_field($_POST['option_value']);
update_option($option_name, $option_value);
wp_die();
}
Patched Code (hypothetical fix):
add_action('wp_ajax_ha_ajax', 'ha_ajax');
// Remove nopriv action to prevent unauthenticated access
function ha_ajax() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
check_ajax_referer('ha_ajax_nonce', 'nonce');
$option_name = sanitize_text_field($_POST['option_name']);
$option_value = sanitize_text_field($_POST['option_value']);
update_option($option_name, $option_value);
wp_die();
}
Exploitation & Lab Setup
Red Team
Prerequisites:
- WordPress site with HelloAsso plugin <= 1.1.10
- Valid user account with Contributor-level access or higher
- AJAX nonce (can be obtained from the page source)
Exploitation Steps:
- Log in as a Contributor.
- Obtain the AJAX nonce from the page source (e.g.,
var ha_ajax_nonce = '...'). - Send a POST request to
/wp-admin/admin-ajax.phpwith the following parameters:action:ha_ajaxnonce:<obtained_nonce>option_name:helloasso_api_keyoption_value:attacker_controlled_value
Example cURL command:
curl -X POST https://target.com/wp-admin/admin-ajax.php \
-d "action=ha_ajax&nonce=abc123&option_name=helloasso_api_key&option_value=malicious_key" \
--cookie "wordpress_logged_in_xxx=..."
Impact: The attacker can modify any plugin option, potentially redirecting payment data or breaking the integration.
Blue Team
Detection:
- Monitor AJAX requests to
admin-ajax.phpwithaction=ha_ajaxfrom non-admin users. - Alert on changes to
helloasso_*options in the database. - Review user roles and remove unnecessary Contributor accounts.
Honeypot:
- Create a fake option
helloasso_honeypotand monitor for unauthorized modifications.
Indicators of Compromise (IOCs)
- Network: POST requests to
/wp-admin/admin-ajax.phpwithaction=ha_ajaxandoption_nameparameters. - File: Modified
wp-content/plugins/helloasso/helloasso.php(if attacker uploads malicious code). - Database: Unexpected values in
wp_optionstable for keys starting withhelloasso_. - Log: WordPress debug log entries showing
ha_ajaxcalls from non-admin users.
Detection Engineering
YARA Rule
rule CVE_2024_7605_HelloAsso_Plugin {
meta:
description = "Detects vulnerable HelloAsso plugin code"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2024-7605"
strings:
$vuln_func = "ha_ajax" ascii wide
$missing_cap = "update_option" ascii wide
$no_check = "wp_ajax_nopriv_ha_ajax" ascii wide
condition:
$vuln_func and $missing_cap and $no_check
}
Sigma Rule
title: CVE-2024-7605 HelloAsso Plugin Option Modification
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects unauthorized modification of HelloAsso plugin options via AJAX
author: Valters IT
logsource:
category: webserver
product: wordpress
detection:
selection:
http.method: POST
http.url: '/wp-admin/admin-ajax.php'
http.body: 'action=ha_ajax'
condition: selection
falsepositives:
- Legitimate admin actions (rare)
level: medium
Suricata Rule
alert http any any -> any any (
msg:"CVE-2024-7605 HelloAsso Plugin Option Modification Attempt";
flow:to_server,established;
content:"POST"; http_method;
content:"/wp-admin/admin-ajax.php"; http_uri;
content:"action=ha_ajax"; http_client_body;
content:"option_name"; http_client_body;
classtype:attempted-admin;
sid:1000001;
rev:1;
)
Remediation & Mitigation
Immediate Actions:
- Disable the plugin if not essential, or restrict access to trusted administrators only.
- Remove Contributor-level accounts that are not strictly necessary.
- Apply a virtual patch using a Web Application Firewall (WAF) to block AJAX requests with
action=ha_ajaxfrom non-admin users.
Long-term Fix:
- Since no official patch exists, consider forking the plugin and adding the missing capability check (see patched code above).
- Monitor the WordPress plugin repository for updates.
Workaround:
- Add the following code to the theme's
functions.phpto block unauthorized access:
add_action('wp_ajax_ha_ajax', function() {
if (!current_user_can('manage_options')) {
wp_die('Unauthorized', 403);
}
}, 1);
Valters IT
Securing WordPress ecosystems, one CVE at a time.
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.