CVE-2024-35644

5.9 MEDIUM

📋 TL;DR

This DOM-based XSS vulnerability in the WordPress Preferred Languages plugin allows attackers to inject malicious scripts that execute in users' browsers when they visit compromised pages. It affects all WordPress sites using Preferred Languages plugin versions up to 2.2.2. Attackers could steal session cookies, redirect users, or perform actions on their behalf.

💻 Affected Systems

Products:
  • WordPress Preferred Languages plugin
Versions: n/a through 2.2.2
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability exists in default plugin configuration. Requires WordPress installation with Preferred Languages plugin enabled.

⚠️ 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 steal administrator session cookies, gain full control of WordPress site, install backdoors, deface website, or pivot to internal network.

🟠

Likely Case

Attackers steal user session cookies, redirect to phishing sites, or perform limited actions within WordPress interface.

🟢

If Mitigated

With proper Content Security Policy and input validation, impact limited to specific plugin functionality.

🌐 Internet-Facing: HIGH - WordPress sites are typically internet-facing and this vulnerability requires user interaction with malicious content.
🏢 Internal Only: MEDIUM - Internal WordPress instances could be targeted via phishing or compromised internal users.

🎯 Exploit Status

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

DOM-based XSS requires specific user interaction and knowledge of vulnerable endpoints. No public exploit code identified.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.2.3 or later

Vendor Advisory: https://patchstack.com/database/wordpress/plugin/preferred-languages/vulnerability/wordpress-preferred-languages-plugin-2-2-2-cross-site-scripting-xss-vulnerability?_s_id=cve

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find Preferred Languages plugin. 4. Click 'Update Now' if update available. 5. Alternatively, download version 2.2.3+ from WordPress repository and replace plugin files.

🔧 Temporary Workarounds

Disable Preferred Languages Plugin

all

Temporarily disable the vulnerable plugin until patched

wp plugin deactivate preferred-languages

Implement Content Security Policy

all

Add CSP headers to mitigate XSS impact

Add to .htaccess: Header set Content-Security-Policy "default-src 'self'; script-src 'self'"
Add to nginx config: add_header Content-Security-Policy "default-src 'self'; script-src 'self'";

🧯 If You Can't Patch

  • Implement web application firewall (WAF) with XSS protection rules
  • Disable JavaScript execution in plugin-admin areas using browser extensions or policies

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin → Plugins → Installed Plugins → Preferred Languages version. If version ≤2.2.2, vulnerable.

Check Version:

wp plugin get preferred-languages --field=version

Verify Fix Applied:

Verify Preferred Languages plugin version is ≥2.2.3 in WordPress admin panel.

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST/GET requests to preferred-languages endpoints
  • JavaScript payloads in URL parameters or form submissions

Network Indicators:

  • Malicious script tags in HTTP requests to WordPress admin-ajax.php or plugin-specific endpoints

SIEM Query:

source="wordpress.log" AND ("preferred-languages" OR "preferred_languages") AND ("script" OR "javascript:" OR "onerror=" OR "onload=")

🔗 References

📤 Share & Export