CVE-2025-31375

7.1 HIGH

📋 TL;DR

This CSRF vulnerability in the Scheduled WordPress plugin allows attackers to trick authenticated administrators into executing malicious actions without their consent, leading to stored cross-site scripting (XSS). Attackers can inject malicious scripts that execute in victims' browsers when they visit compromised pages. All WordPress sites using Scheduled plugin versions up to 1.0 are affected.

💻 Affected Systems

Products:
  • Scheduled WordPress Plugin
Versions: All versions up to and including 1.0
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with Scheduled plugin active. Attack requires tricking authenticated administrator users.

⚠️ 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 sessions, deface websites, or redirect users to malicious sites, potentially leading to complete site compromise.

🟠

Likely Case

Attackers create fake admin interfaces or forms that trick logged-in administrators into executing actions that inject malicious JavaScript into website content, affecting all visitors.

🟢

If Mitigated

With proper CSRF tokens and input validation, the attack vector is eliminated, preventing unauthorized actions even if administrators are tricked into clicking malicious links.

🌐 Internet-Facing: HIGH
🏢 Internal Only: LOW

🎯 Exploit Status

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

Exploitation requires social engineering to trick authenticated administrators, but the technical execution is straightforward once the victim is tricked.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.0.1 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/scheduled/vulnerability/wordpress-scheduled-plugin-1-0-csrf-to-stored-xss-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins > Installed Plugins. 3. Find 'Scheduled' plugin. 4. Click 'Update Now' if update available. 5. If no update available, deactivate and delete plugin, then install latest version from WordPress repository.

🔧 Temporary Workarounds

Implement CSRF Protection

all

Add CSRF tokens to all forms and actions in the plugin

Requires custom PHP development to modify plugin files

Disable Plugin

linux

Temporarily disable the Scheduled plugin until patched

wp plugin deactivate scheduled

🧯 If You Can't Patch

  • Implement web application firewall (WAF) rules to block CSRF attempts and XSS payloads
  • Restrict admin access to trusted IP addresses only and implement multi-factor authentication

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin panel > Plugins > Installed Plugins for Scheduled plugin version. If version is 1.0 or earlier, you are vulnerable.

Check Version:

wp plugin get scheduled --field=version

Verify Fix Applied:

After updating, verify Scheduled plugin version is 1.0.1 or later in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to Scheduled plugin endpoints without referrer headers
  • Multiple failed admin login attempts followed by successful login and plugin modification

Network Indicators:

  • HTTP requests containing malicious JavaScript payloads in POST parameters
  • Requests to Scheduled plugin endpoints from unexpected sources

SIEM Query:

source="wordpress.log" AND ("scheduled" OR "wp-admin/admin-ajax.php") AND (POST AND NOT referer:*your-domain*)

🔗 References

📤 Share & Export