CVE-2024-56938

5.4 MEDIUM

📋 TL;DR

LearnDash v6.7.1 contains a stored cross-site scripting (XSS) vulnerability in the materials-content class that allows attackers to inject malicious scripts into web pages. When users view affected pages, the scripts execute in their browsers, potentially stealing credentials or performing unauthorized actions. This affects all LearnDash v6.7.1 installations using the vulnerable component.

💻 Affected Systems

Products:
  • LearnDash Learning Management System
Versions: v6.7.1
Operating Systems: All platforms running WordPress
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects installations using the vulnerable materials-content class functionality. Requires attacker to have content creation/modification privileges.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal administrator credentials, take over the WordPress site, install backdoors, or redirect users to malicious sites, potentially compromising the entire learning platform and user data.

🟠

Likely Case

Attackers inject malicious JavaScript that steals user session cookies or credentials, potentially compromising individual user accounts and their data within the learning platform.

🟢

If Mitigated

With proper input validation and output encoding, malicious scripts would be neutralized, preventing execution while maintaining legitimate content display.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

Proof of concept available in GitHub repository. Requires authenticated user with content creation/modification access to exploit.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: v6.7.2 or later

Vendor Advisory: https://www.learndash.com/release-notes/

Restart Required: No

Instructions:

1. Backup your WordPress site and database. 2. Update LearnDash plugin via WordPress admin panel (Dashboard > Updates). 3. Verify LearnDash version is v6.7.2 or newer. 4. Clear any caching plugins or CDN caches.

🔧 Temporary Workarounds

Input Sanitization Filter

all

Add custom filter to sanitize materials-content class output

Add to theme's functions.php: add_filter('learndash_materials_content', 'wp_kses_post');

Content Role Restriction

all

Temporarily restrict content creation/modification to trusted administrators only

Use WordPress role management plugins to restrict 'edit_posts' capability

🧯 If You Can't Patch

  • Implement strict Content Security Policy (CSP) headers to prevent script execution
  • Disable the materials-content functionality if not essential for operations

🔍 How to Verify

Check if Vulnerable:

Check LearnDash version in WordPress admin panel (Plugins > Installed Plugins). If version is exactly 6.7.1, the system is vulnerable.

Check Version:

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

Verify Fix Applied:

After updating, verify LearnDash version shows 6.7.2 or higher. Test materials-content functionality with safe test inputs.

📡 Detection & Monitoring

Log Indicators:

  • Unusual content modifications in materials-content areas
  • Multiple failed login attempts followed by content edits
  • JavaScript payloads in POST requests to LearnDash endpoints

Network Indicators:

  • Unexpected external script loads from LearnDash pages
  • Suspicious outbound connections after viewing course materials

SIEM Query:

source="wordpress" AND (event_type="plugin_update" AND plugin_name="learndash" AND old_version="6.7.1") OR (event_type="content_edit" AND content LIKE "%<script>%")

🔗 References

📤 Share & Export