CVE-2025-56353

7.5 HIGH

📋 TL;DR

A memory leak vulnerability in tinyMQTT allows attackers to cause denial of service by sending malformed UTF-8 strings in topic filters. Each malformed subscription request causes heap memory allocation without proper cleanup, leading to unbounded memory consumption. This affects any system running the vulnerable tinyMQTT broker.

💻 Affected Systems

Products:
  • tinyMQTT
Versions: All versions up to commit 6226ade15bd4f97be2d196352e64dd10937c1962 (2024-02-18)
Operating Systems: All platforms running tinyMQTT
Default Config Vulnerable: ⚠️ Yes
Notes: Any tinyMQTT broker accepting subscription requests is vulnerable. The vulnerability is in the core subscription handling logic.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete broker crash and service disruption due to memory exhaustion, potentially affecting all connected MQTT clients and dependent systems.

🟠

Likely Case

Degraded broker performance and eventual service interruption under sustained attack, impacting message delivery reliability.

🟢

If Mitigated

Minimal impact with proper network controls and monitoring, though memory pressure may still occur during attacks.

🌐 Internet-Facing: HIGH - Internet-facing MQTT brokers are directly exposed to unauthenticated exploitation attempts.
🏢 Internal Only: MEDIUM - Internal brokers are still vulnerable to insider threats or compromised internal systems.

🎯 Exploit Status

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

Exploitation requires only the ability to send MQTT subscription packets with malformed UTF-8 payloads. No authentication or special privileges needed.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Any version after commit 6226ade15bd4f97be2d196352e64dd10937c1962

Vendor Advisory: https://github.com/JustDoIt0910/tinyMQTT/issues/19

Restart Required: Yes

Instructions:

1. Update to latest tinyMQTT version from GitHub repository. 2. Rebuild the broker from source. 3. Restart the tinyMQTT service to apply the fix.

🔧 Temporary Workarounds

Rate limit subscription requests

linux

Implement network-level rate limiting on MQTT subscription packets to reduce attack impact

iptables -A INPUT -p tcp --dport 1883 -m limit --limit 10/min --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 1883 -j DROP

🧯 If You Can't Patch

  • Implement strict network segmentation to isolate MQTT broker from untrusted networks
  • Deploy memory monitoring with automated alerts for abnormal heap growth patterns

🔍 How to Verify

Check if Vulnerable:

Check if tinyMQTT version is from commit 6226ade15bd4f97be2d196352e64dd10937c1962 or earlier by examining build metadata or source code

Check Version:

Check git commit hash or build timestamp in tinyMQTT output/logs

Verify Fix Applied:

Test with malformed UTF-8 subscription packets and monitor memory usage for sustained growth

📡 Detection & Monitoring

Log Indicators:

  • Unusual volume of subscription requests
  • Memory allocation errors in broker logs
  • Repeated malformed UTF-8 parsing errors

Network Indicators:

  • High frequency of SUBSCRIBE packets from single source
  • Large payloads in subscription packets
  • Invalid UTF-8 sequences in MQTT traffic

SIEM Query:

source="mqtt_broker.log" AND ("malformed" OR "memory" OR "subscription") | stats count by src_ip

🔗 References

📤 Share & Export