CVE-2021-33175

7.5 HIGH

📋 TL;DR

CVE-2021-33175 is a denial of service vulnerability in EMQ X Broker where specially crafted untrusted inputs cause excessive memory consumption, leading to application termination. This affects all EMQ X Broker deployments prior to version 4.2.8 that process untrusted MQTT messages. Organizations using vulnerable versions as message brokers are at risk.

💻 Affected Systems

Products:
  • EMQ X Broker
Versions: All versions prior to 4.2.8
Operating Systems: All supported platforms
Default Config Vulnerable: ⚠️ Yes
Notes: All deployments processing MQTT messages are vulnerable; no special configuration required.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete service outage of the EMQ X Broker, disrupting all MQTT message processing and potentially affecting dependent IoT/industrial systems.

🟠

Likely Case

Intermittent broker crashes causing message loss and service disruption until the broker restarts.

🟢

If Mitigated

Minimal impact with proper input validation and memory monitoring in place.

🌐 Internet-Facing: HIGH - Internet-facing brokers are directly exposed to malicious inputs from untrusted sources.
🏢 Internal Only: MEDIUM - Internal brokers could still be exploited by compromised internal devices or malicious insiders.

🎯 Exploit Status

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

Exploitation requires sending specially crafted MQTT messages to trigger memory exhaustion.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 4.2.8 and later

Vendor Advisory: https://www.emqx.com/en/blog/emqx-4-2-8-release-notes

Restart Required: Yes

Instructions:

1. Download EMQ X Broker version 4.2.8 or later from official sources. 2. Stop the current EMQ X service. 3. Backup configuration and data. 4. Install the updated version. 5. Restart the EMQ X service.

🔧 Temporary Workarounds

Input Validation Filtering

all

Implement network-level filtering to block malformed MQTT packets before they reach the broker.

Memory Limit Configuration

linux

Configure operating system memory limits to prevent complete system exhaustion.

ulimit -v [LIMIT_IN_KB] (Linux)

🧯 If You Can't Patch

  • Deploy network-level protections (firewalls/WAFs) to filter malicious MQTT traffic.
  • Isolate vulnerable brokers in segmented networks with strict access controls.

🔍 How to Verify

Check if Vulnerable:

Check EMQ X Broker version; if below 4.2.8, the system is vulnerable.

Check Version:

emqx_ctl status | grep 'EMQ X Broker'

Verify Fix Applied:

Confirm version is 4.2.8 or higher and monitor for abnormal memory usage patterns.

📡 Detection & Monitoring

Log Indicators:

  • Rapid memory consumption spikes in system logs
  • EMQ X process termination logs
  • Out of memory errors in application logs

Network Indicators:

  • Unusual volume of malformed MQTT packets
  • Connection spikes from single sources

SIEM Query:

source="emqx.log" AND ("out of memory" OR "killed" OR memory>90%)

🔗 References

📤 Share & Export