Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessConnect to exposed MQTT broker
-
ExploitSend crafted v5 SUBSCRIBE with repeated subscription IDs
-
Executionget_var_integer reads past heap buffer
-
ImpactBroker process crashes (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK
1 technique across 1 tactic: Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the target to be a NanoMQ broker earlier than 0.24.14 with MQTT v5 SUBSCRIBE handling reachable on the broker receive path, and a network-reachable listener the attacker can connect to. The attacker must be able to establish an MQTT session and send a SUBSCRIBE packet - feasible without credentials where anonymous access is enabled (the common default), but gated by any authentication/ACL requiring a valid client before SUBSCRIBE is processed. The malicious packet must carry a multi-byte Properties Length plus repeated SUBSCRIPTION_IDENTIFIER properties to force the incorrect offset. Reliability of an actual crash (versus a benign over-read) depends on heap layout beyond the message buffer, which is the practical limiting factor (AC:H). |
| Impact | This is a remote, pre-auth-capable denial-of-service in the NanoMQ broker's MQTT v5 SUBSCRIBE parsing path (heap out-of-bounds read, CWE-125). The vendor CVSS 4.0 vector (7.0, AV:N/AC:H/AT:N/PR:N/UI:N) with VC:N/VI:N/VA:N but SC:L/SI:L/SA:H frames the impact as a subsequent-system availability hit; I disagree with the scope placement - the broker process itself crashes, so the availability impact belongs on the vulnerable system (VA:H). Either way the real-world impact is a broker crash / DoS, NOT information disclosure despite the 'Information Disclosure' tag: the vendor explicitly rates confidentiality at none, and the OOB read is consumed only as a crash primitive. No EPSS score, no CISA KEV listing, and no weaponized exploit are present; only the upstream fix PR/commit and advisory exist. AC:H is defensible because reliably crashing (versus merely over-reading) depends on heap layout past the message buffer, which tempers the practical exploitation rate. Net: a legitimate availability priority for anyone exposing NanoMQ to untrusted clients, but not a mass-exploitation emergency - it is a crash bug, not RCE or data theft. Note conflicting signals to verify: vendor puts impact on subsequent system (SC/SI/SA) while the description only describes a broker crash - confirm scope intent with the vendor. |
| Exploit ScenarioDerived | An attacker connects to an exposed NanoMQ broker (anonymous access is the default) and sends a crafted MQTT v5 SUBSCRIBE packet with a multi-byte Properties Length and repeated SUBSCRIPTION_IDENTIFIER properties. The reused len_of_varint causes get_var_integer() to start at a wrong offset and read past the heap message buffer, crashing the broker and denying service to all connected clients. No working public exploit is published, but the advisory and fix diff describe the trigger precisely. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 18, 2026
Remote unauthenticated denial of service affects NanoMQ MQTT brokers running versions earlier than 0.24.14, where a crafted MQTT v5 SUBSCRIBE packet triggers a heap out-of-bounds read in the broker receive path and can crash the broker process. The assessed impact is availability-only (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H): no confidentiality or integrity effect was confirmed, and the assessed vector carries PR:N, so exploitation is possible without credentials wherever anonymous MQTT access is enabled, though any authentication or ACL gate that requires a valid client before SUBSCRIBE is processed limits reachability. No public exploit code and no confirmed active exploitation were identified at time of analysis, and the practical limiting factor on a successful crash (versus a benign over-read) is heap layout, which is why AC is rated High.
RemediationAI
Vendor-released patch: upgrade to NanoMQ 0.24.14, the first fixed release, available at https://github.com/nanomq/nanomq/releases/tag/0.24.14 and described in advisory GHSA-pf97-vm7h-q84m; the underlying parser fix is in NanoNNG PR #1518 / commit f888fe39. Because the flaw is reached at packet-parse time on the broker receive path, no message-level policy can neutralize it on an unpatched build, so if immediate upgrade is not possible apply compensating controls around reachability and blast radius. First, restrict who can reach the MQTT listener (firewall or network policy to known client subnets, bind to internal interfaces only, or place the broker behind an authenticating MQTT-aware gateway) - the trade-off is less open connectivity for legitimate clients, but it removes the untrusted network path the malformed SUBSCRIBE must traverse. Second, enable NanoMQ authentication and ACLs so a valid client identity is required before SUBSCRIBE is processed; the negative side effect is client credential provisioning and maintenance overhead, and it only helps if anonymous access was previously enabled. Third, rate-limit or connection-throttle inbound MQTT sessions to raise the cost of repeated crash attempts, accepting that this does not prevent a single crafted packet from causing an over-read. Finally, since the demonstrated impact is a broker crash, run NanoMQ under a supervisor with automatic restart and alerting to shorten availability loss - this is a recovery measure, not a preventive one, and it will not stop repeated crash loops. Note that the assessed vector rates the crash outcome as AC:H because reliable process termination depends on heap layout, but affected organizations should still treat the parser as remotely reachable and untrusted. No public exploit code and no confirmed active exploitation were identified at the time of analysis, so prioritization should be driven by exposure of the MQTT listener rather than by known attacks.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-125 (out-of-bounds read) in the broker-side MQTT v5 subscription decoder nmq_subinfo_decode() within nng/src/sp/protocol/mqtt/mqtt_parser.c. MQTT v5 encodes a Properties Length as a variable-byte integer (varint), and each SUBSCRIPTION_IDENTIFIER property inside the properties block has its own varint length field. The vulnerable code reused len_of_varint derived from the outer Properties Length when advancing past each SUBSCRIPTION_IDENTIFIER, so when the outer Properties Length is multi-byte and multiple subscription identifiers are present, get_var_integer() resumes parsing at an incorrect offset and reads past the end of the heap-allocated NNG message buffer. Because this runs on the broker's packet receive/parse path, the malformed packet is processed before any application-level handling and results in a crash-prone over-read rather than a controlled error return. The affected component set is cpe:2.3:a:nanomq:nanomq:*:*:*:*:*:*:*:*, i.e. all NanoMQ builds prior to the 0.24.14 fix, which is delivered through the bundled NanoNNG MQTT layer (PR #1518 / commit f888fe39). The vendor's fix hardens the parser in several ways: it introduces a dedicated prop_varint_len for the subscription-identifier varint instead of reusing the outer length, adds explicit bounds checks against target_pos before each NNI_GET16 read in nmq_subinfo_decode(), nmq_subtopic_decode() and nmq_unsubinfo_decode(), propagates property-parse failures as MQTT_ERR_PROTOCOL from the subscribe/unsubscribe decoders, frees partially built property objects on failure, and rejects server-only command types (CONNECT, SUBSCRIBE, UNSUBSCRIBE) received from a client-side pipe. Note that the adjacent topic-option off-by-one fixed by the same commit is a separate defect and is not the flaw tracked by this CVE.
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
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:H
Remote crafted SUBSCRIBE with no auth on default anonymous brokers (PR:N); crash reliability is heap-layout dependent (AC:H); impact is broker crash only, so A:H with C:N/I:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
NanoMQ is an MQTT broker. Prior to 0.24.14, NanoMQ's broker-side MQTT v5 nmq_subinfo_decode() function in nng/src/sp/protocol/mqtt/mqtt_parser.c reuses len_of_varint from the outer Properties Length while parsing each SUBSCRIPTION_IDENTIFIER. A remote client can send a SUBSCRIBE packet with a multi-byte Properties Length and repeated subscription identifiers, causing get_var_integer() to begin at an incorrect offset and read beyond the heap message buffer. The flaw is reachable through the broker receive path and can crash the broker, while the separately reported topic-option off-by-one occurs later and is not this vulnerability. This issue is fixed in version 0.24.14.
Technical POC Analysis
CWE-125 (out-of-bounds read).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
NanoMQ MQTT brokers earlier than 0.24.14 can be crashed by a crafted MQTT v5 SUBSCRIBE packet, creating an availability risk for systems that depend on MQTT message routing. Because the vector requires no credentials, leadership should prioritize reducing exposed broker surfaces and confirming whether critical IoT/OT workflows rely on affected NanoMQ instances. No public exploit identified at time of analysis and no confirmed active exploitation; no vendor-released patch identified at time of analysis, so mitigation depends on configuration and monitoring.
No vendor-released patch identified at time of analysis. Interim mitigations: disable anonymous MQTT access, enforce authentication/ACL, restrict MQTT listener exposure to trusted networks, segment brokers, rate-limit or drop malformed MQTT v5 SUBSCRIBE traffic, monitor for broker crashes, enable auto-restart/HA, and review vendor advisory for updates.
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 buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
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-83050
NVD
CVE.org
EPSS
GitHub
Exploit-DB