CVE-2026-21483

5.4 MEDIUM

📋 TL;DR

This is a stored cross-site scripting (XSS) vulnerability in listmonk that allows lower-privileged users to inject malicious JavaScript into campaigns or templates. When higher-privileged users view this content, the XSS executes in their browser context, potentially allowing attackers to perform privileged actions like creating backdoor admin accounts. All listmonk instances running versions before 6.0.0 are affected.

💻 Affected Systems

Products:
  • listmonk
Versions: All versions prior to 6.0.0
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: The vulnerability affects all deployments regardless of configuration. The public archive feature can weaponize the attack without requiring user interaction beyond visiting a link.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of the listmonk instance with attacker gaining super admin privileges, creating backdoor accounts, stealing sensitive data, and potentially pivoting to other systems.

🟠

Likely Case

Privilege escalation where attackers gain administrative access to the listmonk platform, allowing them to manipulate mailing lists, send malicious campaigns, or access subscriber data.

🟢

If Mitigated

Limited impact if proper user access controls and content sanitization are in place, though the vulnerability still presents a significant risk.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

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

Exploitation requires authenticated access with campaign management permissions. The advisory confirms weaponization via the public archive feature where victims only need to visit a malicious link.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 6.0.0

Vendor Advisory: https://github.com/knadh/listmonk/security/advisories/GHSA-jmr4-p576-v565

Restart Required: Yes

Instructions:

1. Backup your listmonk database and configuration. 2. Stop the listmonk service. 3. Update to version 6.0.0 or later using your deployment method (Docker, binary, source). 4. Restart the listmonk service. 5. Verify the update was successful.

🔧 Temporary Workarounds

Restrict User Permissions

all

Temporarily remove campaign management permissions from all non-essential users until patching can be completed.

Disable Public Archive Feature

all

If not required, disable the public archive feature to prevent weaponization via malicious links.

🧯 If You Can't Patch

  • Implement strict Content Security Policy (CSP) headers to mitigate XSS impact
  • Enable audit logging for all user actions and monitor for suspicious campaign/template modifications

🔍 How to Verify

Check if Vulnerable:

Check your listmonk version. If it's below 6.0.0, you are vulnerable.

Check Version:

Check the listmonk web interface admin panel or run: ./listmonk --version (if using binary)

Verify Fix Applied:

After updating, verify the version is 6.0.0 or higher and test that JavaScript injection in campaigns/templates is properly sanitized.

📡 Detection & Monitoring

Log Indicators:

  • Unusual campaign or template modifications by lower-privileged users
  • JavaScript or script tags in campaign content
  • Multiple admin account creation events

Network Indicators:

  • Unusual outbound connections from listmonk server
  • Suspicious HTTP requests containing script payloads

SIEM Query:

source="listmonk" AND (event="campaign_update" OR event="template_update") AND user_role!="admin" AND (content CONTAINS "<script>" OR content CONTAINS "javascript:")

🔗 References

📤 Share & Export