Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Unauthenticated network-reachable CONNECT flood with low complexity and no user interaction; impact is availability-only (socket/memory exhaustion), so C:N/I:N/A:H.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
3DescriptionCVE.org
In tinyMQTT commit 6226ade15bd4f97be2d196352e64dd10937c1962 (2024-02-18), the broker mishandles protocol violations during CONNECT packet parsing. When receiving a CONNECT packet with a zero-length Client ID while CleanSession is set to 0, the broker correctly replies with a CONNACK return code 0x02 (Identifier Rejected) but fails to explicitly close the TCP connection. Since the surrounding connection teardown logic is not guaranteed to execute, each such invalid CONNECT attempt leaves the underlying socket open. Repeated attempts cause server-side resource exhaustion due to accumulating file descriptors and memory usage, potentially resulting in denial of service.
AnalysisAI
Denial of service in the tinyMQTT broker (commit 6226ade, 2024-02-18) lets remote unauthenticated clients exhaust server resources by repeatedly sending malformed CONNECT packets. When a CONNECT arrives with a zero-length Client ID and CleanSession=0, the broker sends the correct CONNACK 0x02 (Identifier Rejected) but never closes the TCP socket, leaking a file descriptor and memory on every attempt until the process is starved. Publicly available exploit code exists (a resource-exhaustion PoC is attached to the NVD reference), but there is no public exploit identified as used in attacks, EPSS is very low (0.05%), and it is not in CISA KEV.
Technical ContextAI
tinyMQTT is a small C-based MQTT broker implementing the MQTT protocol's connection handshake. The MQTT 3.1.1 specification states that a broker may accept a zero-length Client ID only when CleanSession=1 (assigning a unique ID itself); a zero-length ID with CleanSession=0 is a protocol violation that must be rejected with CONNACK return code 0x02. tinyMQTT rejects it correctly at the protocol level but its connection teardown path does not guarantee the underlying socket is closed after that rejection, so the descriptor and its associated buffers persist. This is a classic CWE-400 (Uncontrolled Resource Consumption) defect rooted in a resource-cleanup/lifecycle bug rather than a memory-corruption flaw. The CPE data is uninformative (cpe:2.3:a:n/a:n/a:*), so affected scope is defined by the referenced GitHub commit rather than a structured product identifier.
RemediationAI
No vendor-released patch or tagged version is identified at time of analysis, as tinyMQTT is an unversioned source-only project; track the upstream issue at https://github.com/JustDoIt0910/tinyMQTT/issues/19 for a fix. The concrete code fix is to explicitly close() the client socket and free its connection state immediately after sending CONNACK 0x02 in the CONNECT-handling path, rather than relying on later teardown logic. Until an upstream fix is confirmed, compensating controls include placing the broker behind a reverse proxy or firewall that restricts the MQTT listener (default TCP 1883) to trusted clients only - trade-off: breaks open/public broker use cases; enforcing per-source connection rate limits and OS-level file-descriptor limits (ulimit) so a flood degrades gracefully rather than crashing - trade-off: legitimate high-connection clients may be throttled; and monitoring the broker's open file-descriptor count to alert on leakage. Given the project's hobby status, migrating production workloads to a maintained broker such as Mosquitto or EMQX is the most durable option. Additional third-party analysis is at https://vuldb.com/vuln/364480.
LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr
Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han
A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi
Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc
Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula
Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root
LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(
Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti
Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr
SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg
Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ
Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali
Same weakness CWE-400 – Uncontrolled Resource Consumption
View allSame technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2025-209887
GHSA-m5jh-ppcv-76xr