CVE-2025-26547

7.1 HIGH

📋 TL;DR

This CSRF vulnerability in the My Login Logout WordPress plugin allows attackers to trick authenticated administrators into performing actions without their consent, leading to stored cross-site scripting (XSS). Attackers can inject malicious scripts that execute when other users visit affected pages. All WordPress sites using vulnerable versions of this plugin are affected.

💻 Affected Systems

Products:
  • My Login Logout WordPress Plugin
Versions: All versions up to and including 2.4
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin activated. The plugin must be accessible to users with administrative privileges.

⚠️ 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

Attackers could inject persistent malicious scripts that steal administrator credentials, hijack user sessions, deface websites, or redirect users to malicious sites, potentially leading to complete site compromise.

🟠

Likely Case

Attackers create fake admin interfaces or modify plugin settings to inject malicious JavaScript that steals cookies or session tokens from legitimate users.

🟢

If Mitigated

With proper CSRF tokens and input validation, the attack chain is broken, preventing both the CSRF and subsequent XSS exploitation.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires tricking an authenticated administrator into clicking a malicious link or visiting a crafted page. The stored XSS payload then affects other users.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version 2.5 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/my-loginlogout/vulnerability/wordpress-my-login-logout-plugin-plugin-2-4-csrf-to-stored-cross-site-scripting-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'My Login Logout' plugin. 4. Click 'Update Now' if available, or manually update to version 2.5+. 5. Verify the plugin is active and functioning correctly.

🔧 Temporary Workarounds

Implement CSRF Protection

WordPress

Add nonce verification to plugin forms and actions to prevent CSRF attacks.

Modify plugin PHP files to include wp_nonce_field() and wp_verify_nonce() checks

Disable Plugin

WordPress

Temporarily disable the vulnerable plugin until patched.

Navigate to WordPress admin > Plugins > Installed Plugins > Deactivate 'My Login Logout'

🧯 If You Can't Patch

  • Implement a Web Application Firewall (WAF) with CSRF and XSS protection rules
  • Restrict administrative access to trusted IP addresses only

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin > Plugins > Installed Plugins for 'My Login Logout' version 2.4 or earlier.

Check Version:

wp plugin list --name='my-loginlogout' --field=version

Verify Fix Applied:

Confirm plugin version is 2.5 or higher in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wp-admin/admin-ajax.php or plugin-specific endpoints
  • Multiple failed nonce verification attempts in WordPress debug logs

Network Indicators:

  • Unexpected JavaScript payloads in HTTP POST parameters
  • Requests from unusual referrers to admin endpoints

SIEM Query:

source="wordpress.log" AND ("admin-ajax.php" OR "my-loginlogout") AND (POST AND NOT nonce=*)

🔗 References

📤 Share & Export