CVE-2025-23801

7.1 HIGH

📋 TL;DR

This CVE describes a Cross-Site Request Forgery (CSRF) vulnerability in the WordPress Style Admin plugin that can lead to Stored Cross-Site Scripting (XSS). Attackers can trick authenticated administrators into executing malicious actions, potentially injecting persistent scripts into the WordPress site. This affects all WordPress installations using Style Admin plugin versions up to 1.4.3.

💻 Affected Systems

Products:
  • WordPress Style Admin plugin
Versions: n/a through 1.4.3
Operating Systems: Any OS running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with Style Admin plugin enabled. The vulnerability requires an authenticated administrator to be tricked into visiting a malicious page.

⚠️ 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 malicious JavaScript that steals administrator credentials, redirects users to malicious sites, or takes full control of the WordPress site when administrators view infected pages.

🟠

Likely Case

Attackers would create phishing campaigns targeting site administrators, leading to unauthorized content changes, data theft, or malware distribution through the compromised site.

🟢

If Mitigated

With proper CSRF tokens and input validation, the attack chain would be broken at the initial CSRF stage, preventing XSS injection entirely.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires social engineering to trick authenticated administrators. The CSRF vulnerability enables the XSS payload delivery.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Version 1.4.4 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/style-admin/vulnerability/wordpress-style-admin-plugin-1-4-3-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 'Style Admin' and click 'Update Now' if available. 4. If no update appears, download version 1.4.4+ from WordPress.org and manually update.

🔧 Temporary Workarounds

Disable Style Admin Plugin

WordPress

Temporarily disable the vulnerable plugin until patching is possible

wp plugin deactivate style-admin

Implement CSRF Protection

WordPress

Add CSRF tokens to all admin forms using WordPress nonces

Add wp_nonce_field() to forms and verify with wp_verify_nonce()

🧯 If You Can't Patch

  • Restrict admin access to trusted networks only using firewall rules
  • Implement Content Security Policy (CSP) headers to mitigate XSS impact

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin > Plugins > Installed Plugins for Style Admin version. If version is 1.4.3 or lower, you are vulnerable.

Check Version:

wp plugin get style-admin --field=version

Verify Fix Applied:

After updating, verify Style Admin plugin shows version 1.4.4 or higher in WordPress admin plugins list.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to admin-ajax.php or admin-post.php with Style Admin parameters
  • Multiple failed nonce verification attempts in WordPress debug logs

Network Indicators:

  • Outbound connections to suspicious domains from WordPress admin sessions
  • Unexpected iframe or script injections in page responses

SIEM Query:

source="wordpress.log" AND ("style-admin" OR "admin-ajax.php") AND ("POST" OR "nonce_failure")

🔗 References

📤 Share & Export