CVE-2024-13589

6.4 MEDIUM

📋 TL;DR

This vulnerability allows authenticated WordPress users with contributor-level access or higher to inject malicious scripts via the 'yt_grid' shortcode in the YouTube Playlists with Schema plugin. The scripts execute whenever other users view pages containing the injected shortcode, enabling session hijacking, defacement, or malware distribution. All WordPress sites using vulnerable plugin versions are affected.

💻 Affected Systems

Products:
  • YouTube Playlists with Schema WordPress Plugin
Versions: All versions up to and including 2.6.1
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Requires WordPress installation with the vulnerable plugin enabled and at least one user with contributor-level permissions.

⚠️ 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 steal administrator credentials, install backdoors, redirect users to malicious sites, or completely compromise the WordPress site and potentially the server.

🟠

Likely Case

Malicious contributors or compromised accounts inject scripts to steal user session cookies, display fraudulent content, or redirect visitors to phishing pages.

🟢

If Mitigated

With proper user access controls and content review processes, impact is limited to potential defacement of specific pages containing the shortcode.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: LIKELY
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires contributor-level WordPress access. The vulnerability is straightforward to exploit once authenticated.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.6.2

Vendor Advisory: https://plugins.trac.wordpress.org/changeset/3154564/jma-youtube-playlists-with-schema/trunk/youtube-playlists-with-schema.php

Restart Required: No

Instructions:

1. Log into WordPress admin panel. 2. Navigate to Plugins → Installed Plugins. 3. Find 'YouTube Playlists with Schema' and click 'Update Now'. 4. Verify version shows 2.6.2 or higher.

🔧 Temporary Workarounds

Disable Plugin

all

Temporarily disable the vulnerable plugin until patched

wp plugin deactivate jma-youtube-playlists-with-schema

Restrict User Roles

all

Remove contributor-level access from untrusted users

wp user list --role=contributor --field=ID
wp user set-role <user_id> subscriber

🧯 If You Can't Patch

  • Remove 'contributor' and 'author' roles from all users, only grant 'subscriber' or custom roles with no post editing capabilities
  • Implement web application firewall (WAF) rules to block XSS payloads in POST parameters and shortcode attributes

🔍 How to Verify

Check if Vulnerable:

Check WordPress admin → Plugins → Installed Plugins for 'YouTube Playlists with Schema' version 2.6.1 or lower

Check Version:

wp plugin get jma-youtube-playlists-with-schema --field=version

Verify Fix Applied:

Verify plugin version shows 2.6.2 or higher in WordPress admin panel

📡 Detection & Monitoring

Log Indicators:

  • WordPress post/page edits containing 'yt_grid' shortcode with script tags or JavaScript payloads
  • Multiple failed login attempts followed by successful contributor-level login

Network Indicators:

  • HTTP requests with suspicious parameters in POST data to wp-admin/post.php
  • Outbound connections to unknown domains from WordPress pages

SIEM Query:

source="wordpress.log" AND ("yt_grid" AND ("script" OR "javascript" OR "onerror" OR "onload"))

🔗 References

📤 Share & Export