CVE-2025-12963

9.8 CRITICAL

📋 TL;DR

The LazyTasks WordPress plugin has an unauthenticated privilege escalation vulnerability that allows attackers to change any user's email address via a REST API endpoint. This enables account takeover by resetting passwords, including administrator accounts. All WordPress sites using LazyTasks plugin versions up to 1.2.29 are affected.

💻 Affected Systems

Products:
  • LazyTasks – Project & Task Management with Collaboration, Kanban and Gantt Chart WordPress plugin
Versions: All versions up to and including 1.2.29
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress with the LazyTasks plugin installed and activated. The vulnerable REST API endpoint is accessible by default.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete site compromise with administrative access, data theft, malware injection, and potential lateral movement to other systems.

🟠

Likely Case

Administrator account takeover leading to defacement, data exfiltration, or installation of backdoors.

🟢

If Mitigated

Limited impact if proper network segmentation, strong authentication, and monitoring are in place.

🌐 Internet-Facing: HIGH - WordPress sites are typically internet-facing and the exploit requires no authentication.
🏢 Internal Only: MEDIUM - Internal WordPress installations could still be targeted via phishing or compromised internal systems.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

The vulnerability is straightforward to exploit via HTTP requests to the REST API endpoint without authentication.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.2.30 or later

Vendor Advisory: https://wordpress.org/plugins/lazytasks-project-task-management/#developers

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find LazyTasks plugin and click 'Update Now'. 4. Verify update to version 1.2.30 or higher.

🔧 Temporary Workarounds

Disable LazyTasks plugin

all

Temporarily deactivate the vulnerable plugin until patched

wp plugin deactivate lazytasks-project-task-management

Block REST API endpoint

linux

Use web application firewall or .htaccess to block access to vulnerable endpoint

RewriteEngine On
RewriteRule ^wp-json/lazytasks/api/v1/user/role/edit/ - [F,L]

🧯 If You Can't Patch

  • Implement strict network access controls to limit access to WordPress admin interface
  • Enable multi-factor authentication for all WordPress user accounts

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel → Plugins → LazyTasks version. If version is 1.2.29 or lower, you are vulnerable.

Check Version:

wp plugin get lazytasks-project-task-management --field=version

Verify Fix Applied:

Verify LazyTasks plugin version is 1.2.30 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • HTTP POST requests to '/wp-json/lazytasks/api/v1/user/role/edit/' from unauthenticated IPs
  • Multiple failed password reset attempts for administrator accounts
  • Unusual user email changes in WordPress logs

Network Indicators:

  • Unusual traffic patterns to WordPress REST API endpoints
  • HTTP 200 responses to unauthenticated POST requests to the vulnerable endpoint

SIEM Query:

source="wordpress.log" AND (uri_path="/wp-json/lazytasks/api/v1/user/role/edit/" OR message="email change" OR message="password reset")

🔗 References

📤 Share & Export