CVE-2024-11203

6.4 MEDIUM

📋 TL;DR

This stored XSS vulnerability in the EmbedPress WordPress plugin allows authenticated attackers with Contributor-level access or higher to inject malicious scripts into web pages. When users visit compromised pages, the scripts execute in their browsers, potentially stealing credentials or performing unauthorized actions. All WordPress sites using EmbedPress versions up to 4.1.3 are affected.

💻 Affected Systems

Products:
  • EmbedPress – Embed PDF, 3D Flipbook, Social Feeds, Google Docs, Vimeo, Wistia, YouTube Videos, Audios, Google Maps in Gutenberg Block & Elementor
Versions: All versions up to and including 4.1.3
Operating Systems: All operating systems running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Requires Contributor-level or higher authenticated access. WordPress multisite installations are also affected.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator credentials, deface websites, redirect users to malicious sites, or install backdoors for persistent access.

🟠

Likely Case

Attackers inject malicious scripts to steal user session cookies, perform actions as authenticated users, or display phishing content.

🟢

If Mitigated

With proper user role management and input validation, impact is limited to low-privileged user compromise.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Exploitation requires authenticated access but is straightforward once credentials are obtained. Public proof-of-concept exists in vulnerability reports.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.1.4

Vendor Advisory: https://plugins.trac.wordpress.org/changeset/3196371/

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find EmbedPress and click 'Update Now'. 4. Verify version is 4.1.4 or higher.

🔧 Temporary Workarounds

Temporary Input Sanitization

all

Add custom sanitization for provider_name parameter in WordPress theme functions

Add to theme's functions.php: add_filter('embedpress_provider_name', 'sanitize_text_field');

Restrict User Roles

all

Temporarily remove Contributor role access or downgrade to Subscriber

Use WordPress user management or plugins like User Role Editor to modify capabilities

🧯 If You Can't Patch

  • Disable the EmbedPress plugin completely until patching is possible
  • Implement strict Content Security Policy (CSP) headers to limit script execution

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin → Plugins → Installed Plugins for EmbedPress version ≤4.1.3

Check Version:

wp plugin list --name=embedpress --field=version (WP-CLI) or check WordPress admin interface

Verify Fix Applied:

Confirm EmbedPress version is 4.1.4 or higher in WordPress plugins list

📡 Detection & Monitoring

Log Indicators:

  • Unusual POST requests to wp-admin with provider_name parameter containing script tags
  • Multiple failed login attempts followed by successful Contributor-level login

Network Indicators:

  • Unexpected outbound connections from WordPress site after page visits
  • Suspicious JavaScript in page responses

SIEM Query:

source="wordpress.log" AND ("provider_name" AND ("<script" OR "javascript:" OR "onload=" OR "onerror="))

🔗 References

📤 Share & Export