Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify exposed NanoMQ MQTT port
-
DeliveryEstablish multiple persistent-session MQTT connections (clean_start=0)
-
ExploitFlood broker with concurrent reconnect requests
-
ExecutionRace condition frees npipe->subinfol during session restore
-
PersistNULL pointer dereference in pipe_peer()
-
ImpactBroker process crash (DoS)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires three concurrent conditions: (1) MQTT clients connecting with clean_start=0 (persistent sessions enabled), which is a client-controlled parameter and not a broker configuration default - any client can request persistent session semantics; (2) high-concurrency reconnect traffic sufficient to create a race condition in the broker's pipe_peer() handler, requiring simultaneous reconnect collisions rather than a single connection attempt; and (3) network access to the NanoMQ MQTT port (TCP 1883, TLS 8883, or WebSocket). The CVSS AC:H vector directly encodes that a race condition timing window must be won, making exploitation probabilistic rather than deterministic. Exploitation is limited by: the requirement to generate sustained concurrent reconnect load (not a single-packet trigger), the absence of code execution impact (crash-only), and the need for clients using persistent session mode. Clean_start=1 deployments are entirely unaffected, as the vulnerable session restoration code path is never invoked. |
| Impact | The CVSS 3.1 score of 5.9 (Medium) reflects real tension between severity signals. AV:N/PR:N/UI:N confirm full remote unauthenticated exposure, while AC:H significantly constrains practical exploitability - the attacker must engineer a precise timing collision during concurrent reconnect handling, which requires sustained load and favorable scheduling outcomes rather than a simple single-packet trigger. The impact is limited entirely to availability (C:N/I:N/A:H), meaning a successful exploit crashes the broker process but achieves no code execution, credential theft, or persistent access. The vulnerability is not listed in CISA KEV, and no EPSS score was provided in the input data. No public exploit code exists beyond the commit diff that documents the fix. SSVC signals are not available in the provided data. For internet-exposed NanoMQ deployments serving IoT edge infrastructure, the risk is real but operationally bounded: a crash causes message broker downtime, which can have significant downstream effects in industrial or embedded systems relying on MQTT for telemetry. For internal or access-controlled deployments, the AC:H requirement and lack of active exploitation make this a patch-cycle rather than emergency priority. |
| Exploit ScenarioDerived | An attacker with network access to a NanoMQ broker's MQTT port floods the broker with rapid reconnect requests using clients configured with clean_start=0, creating concurrent pipe_peer() invocations that race against session cleanup. The race frees npipe->subinfol between the null check on cpipe and the copy operation into npipe, dereferencing the NULL pointer and crashing the broker process. No public exploit code exists beyond the documented commit diff, and the AC:H CVSS vector confirms the attacker must sustain precise concurrency - a brute-force timing approach rather than a deterministic single-packet exploit. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 19, 2026
Remote unauthenticated denial-of-service in NanoMQ MQTT Broker (versions 0.24.10 and below) crashes the broker process via a NULL pointer dereference triggered by high-concurrency MQTT reconnect traffic. The flaw occurs during session resumption for persistent-session clients (clean_start=0), where the NanoNNG transport layer's pipe_peer() function dereferences cpipe->subinfol without verifying that the new pipe's subinfol pointer is also non-NULL - a pointer that can be freed mid-race. No public exploit code exists and the vulnerability is not listed in CISA KEV; however, CVSS AV:N/PR:N confirms remote unauthenticated triggering, and the fix has been released in version 0.24.11.
RemediationAI
Upgrade NanoMQ to version 0.24.11, which contains the vendor-released patch. The release is available at https://github.com/nanomq/nanomq/releases/tag/0.24.11, and the underlying NanoNNG fix is in commit 522ec62e29e60d1122f2aedaa6e702dcf089f7bb at https://github.com/nanomq/NanoNNG/commit/522ec62e29e60d1122f2aedaa6e702dcf089f7bb. If immediate upgrade is not feasible, consider the following specific compensating controls: restrict MQTT client connection policies to enforce clean_start=1 on all clients, eliminating persistent session resumption entirely and removing the vulnerable code path (trade-off: clients lose persistent subscriptions and queued messages on reconnect); apply network-layer rate limiting on the MQTT port (default 1883/TCP and 8883/TLS) to prevent the high-concurrency reconnect volume required to trigger the race condition (trade-off: may impact legitimate reconnect bursts from large fleets); or deploy NanoMQ behind a reverse proxy or MQTT load balancer that enforces per-client reconnect throttling. The vendor security advisory should be consulted for any additional guidance at https://github.com/nanomq/nanomq/security/advisories/GHSA-q36f-83mh-pcv2.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
NanoMQ is an edge MQTT broker built on top of NanoNNG, its underlying messaging transport library. The defect resides in three transport implementations within NanoNNG: broker_tcp.c (tcptran_pipe_peer), broker_tls.c (tlstran_pipe_peer), and nmq_websocket.c (wstran_pipe_peer) - covering TCP, TLS, and WebSocket MQTT transports respectively. During session resumption for a persistent MQTT session (clean_start=0), the pipe_peer() function copies subscription metadata from a cached 'old pipe' (cpipe) to the new reconnecting pipe (npipe). The original code guarded only cpipe->subinfol for NULL before iterating it, but not npipe->subinfol. Under a high-concurrency reconnect-collision scenario, npipe->subinfol can be freed and nullified between the NULL check on cpipe and the actual data copy into npipe, triggering a CWE-476 NULL Pointer Dereference. The fix (NanoNNG commit 522ec62e) adds a conjunctive null guard: if (cpipe->subinfol != NULL && npipe->subinfol != NULL) across all three transport files, closing the race window. Both CPE strings cpe:2.3:a:nanomq:nanomq and cpe:2.3:a:nanomq:nanonng are affected, reflecting the split between the broker application and its transport library.
Know when Nanomq gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
Primary rating from Vendor (GitHub_M) · only source for this CVE.
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. In versions 0.24.10 and below, when NanoMQ handles high-concurrency reconnect traffic using a reconnect-collision payload, the broker can crash due to a NULL pointer dereference during MQTT session resumption for clean_start=0 clients. The transport's p_peer callback (tcptran_pipe_peer()) iterates cpipe->subinfol while copying session metadata from the cached old pipe to the new reconnecting pipe, without checking whether the pointer is NULL. Under a reconnect race, cpipe->subinfol can be freed and set to NULL before session restore invokes this function, resulting in a remote unauthenticated Denial-of-Service (process crash) condition. This issue has been fixed in version 0.24.11.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
NanoMQ 0.17.5 has a one-byte heap-based buffer over-read in the conn_handler function of mqtt_parser.c when it processes
CVE-2024-42646 is a segmentation fault vulnerability in NanoMQ v0.21.10 that allows unauthenticated remote attackers to
A data race in NanoMQ MQTT Broker versions prior to 0.24.2 can free subscription-info list memory while another thread s
Null Pointer Dereference vulnerability in topic_filtern function in mqtt_parser.c in NanoMQ 0.21.7 allows attackers to c
A use-after-free vulnerability exists in NanoMQ 0.17.2. Rated high severity (CVSS 7.5), this vulnerability is remotely e
A heap buffer overflow vulnerability exists in NanoMQ 0.17.2. Rated high severity (CVSS 7.5), this vulnerability is remo
A heap buffer overflow vulnerability exists in NanoMQ 0.17.2. Rated high severity (CVSS 7.5), this vulnerability is remo
A heap buffer overflow vulnerability exists in NanoMQ 0.17.2. Rated high severity (CVSS 7.5), this vulnerability is remo
In NanoMQ v0.15.0-0, segment fault with Null Pointer Dereference occurs in the process of decoding subinfo_decode and un
In NanoMQ v0.15.0-0, a Heap overflow occurs in copyn_utf8_str function of mqtt_parser.c. Rated high severity (CVSS 7.5),
In NanoMQ v0.15.0-0, Heap overflow occurs in read_byte function of mqtt_code.c. Rated high severity (CVSS 7.5), this vul
A heap-buffer-overflow vulnerability in the read_byte function in NanoMQ v.0.21.7 allows attackers to cause a denial of
EUVD-2026-30965
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB