CVE-2025-7052 Overview
CVE-2025-7052 is a Cross-Site Request Forgery (CSRF) vulnerability in the LatePoint plugin for WordPress affecting all versions up to and including 5.1.94. The flaw resides in the change_password() function of the customer_cabinet__change_password AJAX route. The plugin registers this endpoint through both wp_ajax and wp_ajax_nopriv hooks without validating a nonce or verifying user capabilities before resetting a user's password. Attackers who trick a logged-in customer into clicking a malicious link can hijack that account. When the "WP users as customers" option is enabled, the same flaw permits administrator account takeover.
Critical Impact
Unauthenticated attackers can reset arbitrary user passwords through CSRF, leading to full account takeover including administrator accounts in vulnerable configurations.
Affected Products
- LatePoint plugin for WordPress versions up to and including 5.1.94
- WordPress sites with LatePoint installed and the customer cabinet feature enabled
- WordPress sites using the "WP users as customers" integration option
Discovery Timeline
- 2025-09-30 - CVE-2025-7052 published to NVD
- 2026-04-15 - Last updated in NVD database
Technical Details for CVE-2025-7052
Vulnerability Analysis
The vulnerability is classified as Cross-Site Request Forgery [CWE-352]. The LatePoint plugin exposes the customer password change handler through WordPress's AJAX framework using both authenticated (wp_ajax_) and unauthenticated (wp_ajax_nopriv_) hook prefixes. The change_password() function processes incoming password reset requests without calling check_ajax_referer(), wp_verify_nonce(), or any capability check such as current_user_can().
Because WordPress automatically attaches the victim's session cookies to any request originating from their browser, an attacker-controlled page can issue a forged POST to the vulnerable endpoint and reset the victim's password to an attacker-chosen value. The result is full account takeover without requiring the attacker to know the existing credentials.
Root Cause
The root cause is missing CSRF token validation in the change_password() controller method located at lib/controllers/customer_cabinet_controller.php. WordPress's standard defense against CSRF requires a nonce parameter that is validated server-side before any state-changing action. LatePoint's customer cabinet flow omitted this validation entirely, while simultaneously exposing the route to unauthenticated users via wp_ajax_nopriv.
Attack Vector
An attacker hosts a malicious page containing an auto-submitting form or fetch() call targeting the victim site's admin-ajax.php endpoint with action=customer_cabinet__change_password and a new password value. When a logged-in LatePoint customer visits the page, their browser submits the request with valid session cookies, and the plugin resets the password. If the site has "WP users as customers" enabled and a WordPress administrator is the victim, the attacker gains administrative access to the site. User interaction is required, but no authentication or prior knowledge of the target account is needed by the attacker.
For technical details on the vulnerable handler, see the LatePoint customer cabinet controller source and the fix changeset for 5.2.0.
Detection Methods for CVE-2025-7052
Indicators of Compromise
- Unexpected password change notifications sent to customers or administrators
- POST requests to /wp-admin/admin-ajax.php with the parameter action=customer_cabinet__change_password originating from external Referer headers
- Successful logins from new IP addresses or geolocations immediately following password changes
- WordPress audit log entries showing password updates without a corresponding profile page view
Detection Strategies
- Inspect web server access logs for requests to admin-ajax.php carrying the customer_cabinet__change_password action where the Referer header points to an external domain
- Correlate password reset events with the originating request's Origin and Referer headers to identify cross-origin submissions
- Alert on bulk password resets occurring within a short time window across multiple LatePoint customer accounts
Monitoring Recommendations
- Enable a WordPress activity log plugin that records password change events with source IP and request metadata
- Forward web server and WordPress logs to a centralized SIEM and build detection rules for the vulnerable AJAX action
- Monitor administrator account session activity and flag logins from previously unseen devices when "WP users as customers" is enabled
How to Mitigate CVE-2025-7052
Immediate Actions Required
- Update the LatePoint plugin to version 5.2.0 or later, which adds nonce validation to the change_password() handler
- Audit administrator and customer accounts for unexpected password changes and force a password reset for any suspicious accounts
- Review the "WP users as customers" configuration and disable it if not required for business operations
- Invalidate active sessions for all WordPress users after upgrading to remove any sessions established via exploitation
Patch Information
The vendor fixed CVE-2025-7052 in LatePoint 5.2.0. The fix introduces nonce verification on the customer_cabinet__change_password AJAX route. Review the corrective code in the WordPress.org plugin changeset 3366851 and obtain the patched release from the official LatePoint plugin page. Additional analysis is available in the Wordfence vulnerability report.
Workarounds
- If immediate patching is not possible, deploy a Web Application Firewall rule that blocks POST requests to admin-ajax.php with the action customer_cabinet__change_password when the Referer or Origin header does not match the site domain
- Temporarily disable the LatePoint plugin until the upgrade can be applied, especially on sites with administrator accounts linked to LatePoint customers
- Restrict access to the customer cabinet pages by IP allowlisting at the reverse proxy layer where feasible
# Example ModSecurity rule to block cross-origin requests to the vulnerable AJAX action
SecRule REQUEST_URI "@contains /wp-admin/admin-ajax.php" \
"chain,id:1007052,phase:2,deny,status:403,log,msg:'Block LatePoint CSRF CVE-2025-7052'"
SecRule ARGS:action "@streq customer_cabinet__change_password" \
"chain"
SecRule REQUEST_HEADERS:Referer "!@beginsWith https://your-site.example/" \
"t:none"
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


