{"id":"CVE-2026-61633","aliases":["EUVD-2026-83048","GHSA-m7mp-rr3v-hmhr"],"status":"published","title":"NanoMQ: Infinite Loop in UNSUBSCRIBE Decoder Leading to Remote DoS","description":"NanoMQ is an MQTT broker. Prior to 0.24.14, the NanoMQ client function nni_mqtt_msg_decode_unsubscribe() in nng/src/supplemental/mqtt/mqtt_codec.c does not handle a failed read_uint16() while counting topics in a malformed UNSUBSCRIBE packet. A zero-length topic followed by trailing data can leave buf.curpos unchanged while topic_count continues to increase, allowing a malicious MQTT broker to hang a connecting MQTT 3.1.1 client, consume CPU and memory, and repeatedly deny service when automatic reconnection is enabled. The broker-side nmq_unsubinfo_decode path is not affected. This issue is fixed in version 0.24.14.","severity":{"version":"3.1","score":2,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L","level":"low","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-09","score":0.00338,"percentile":0.27456,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-835"],"published":"2026-09-18T16:18:57Z","modified":"2026-11-04T02:47:46Z","products":[{"vendor":"nanomq","product":"nanomq"}],"references":[{"url":"https://github.com/nanomq/nanomq/security/advisories/GHSA-m7mp-rr3v-hmhr","tags":["x_refsource_CONFIRM","exploit","advisory"]},{"url":"https://github.com/nanomq/NanoNNG/pull/1518","tags":["x_refsource_MISC","fix"]},{"url":"https://github.com/nanomq/NanoNNG/commit/fa8d859bb39841e46cfc6cce280d242bd782ad3d","tags":["x_refsource_MISC","fix"]},{"url":"https://github.com/nanomq/nanomq/releases/tag/0.24.14","tags":["x_refsource_MISC","web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61633.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-61633","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-61633","title":"NanoMQ: Infinite Loop in UNSUBSCRIBE Decoder Leading to Remote DoS","description":"NanoMQ is an MQTT broker. Prior to 0.24.14, the NanoMQ client function nni_mqtt_msg_decode_unsubscribe() in nng/src/supplemental/mqtt/mqtt_codec.c does not handle a failed read_uint16() while counting topics in a malformed UNSUBSCRIBE packet. A zero-length topic followed by trailing data can leave buf.curpos unchanged while topic_count continues to increase, allowing a malicious MQTT broker to hang a connecting MQTT 3.1.1 client, consume CPU and memory, and repeatedly deny service when automatic reconnection is enabled. The broker-side nmq_unsubinfo_decode path is not affected. This issue is fixed in version 0.24.14.","status":"published","published":"2026-09-18T16:18:57.029Z","modified":"2026-09-18T17:26:49.956Z","cvss":[{"version":"3.1","score":2,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L","level":"low","assessor":"cna"}],"cwes":["CWE-835"],"updated_at":"2026-11-02T14:19:53.4444Z"}],"euvd":[{"id":"EUVD-2026-83048","description":"NanoMQ is an MQTT broker. Prior to 0.24.14, the NanoMQ client function nni_mqtt_msg_decode_unsubscribe() in nng/src/supplemental/mqtt/mqtt_codec.c does not handle a failed read_uint16() while counting topics in a malformed UNSUBSCRIBE packet. A zero-length topic followed by trailing data can leave buf.curpos unchanged while topic_count continues to increase, allowing a malicious MQTT broker to hang a connecting MQTT 3.1.1 client, consume CPU and memory, and repeatedly deny service when automatic reconnection is enabled. The broker-side nmq_unsubinfo_decode path is not affected. This issue is fixed in version 0.24.14.","status":"published","published":"2026-09-18T16:18:57Z","modified":"2026-09-18T17:26:49Z","cvss":[{"version":"3.1","score":2,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L","level":"low"}],"updated_at":"2026-11-02T17:28:07.943492Z"}],"nvd":[{"id":"CVE-2026-61633","description":"NanoMQ is an MQTT broker. Prior to 0.24.14, the NanoMQ client function nni_mqtt_msg_decode_unsubscribe() in nng/src/supplemental/mqtt/mqtt_codec.c does not handle a failed read_uint16() while counting topics in a malformed UNSUBSCRIBE packet. A zero-length topic followed by trailing data can leave buf.curpos unchanged while topic_count continues to increase, allowing a malicious MQTT broker to hang a connecting MQTT 3.1.1 client, consume CPU and memory, and repeatedly deny service when automatic reconnection is enabled. The broker-side nmq_unsubinfo_decode path is not affected. This issue is fixed in version 0.24.14.","status":"published","published":"2026-09-18T17:16:58.34Z","modified":"2026-09-18T18:17:09.433Z","cvss":[{"version":"3.1","score":2,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L","level":"low","assessor":"secondary"}],"cwes":["CWE-835"],"updated_at":"2026-11-02T14:12:49.70655Z"}],"osv":[{"id":"CVE-2026-61633","title":"NanoMQ: Infinite Loop in UNSUBSCRIBE Decoder Leading to Remote DoS","description":"NanoMQ is an MQTT broker. Prior to 0.24.14, the NanoMQ client function nni_mqtt_msg_decode_unsubscribe() in nng/src/supplemental/mqtt/mqtt_codec.c does not handle a failed read_uint16() while counting topics in a malformed UNSUBSCRIBE packet. A zero-length topic followed by trailing data can leave buf.curpos unchanged while topic_count continues to increase, allowing a malicious MQTT broker to hang a connecting MQTT 3.1.1 client, consume CPU and memory, and repeatedly deny service when automatic reconnection is enabled. The broker-side nmq_unsubinfo_decode path is not affected. This issue is fixed in version 0.24.14.","status":"published","published":"2026-09-18T16:18:57.029Z","modified":"2026-11-04T07:07:34.951230261Z","cvss":[{"version":"3.1","score":2,"vector":"CVSS:3.1/AV:N/AC:H/PR:H/UI:R/S:U/C:N/I:N/A:L","level":"low"}],"cwes":["CWE-835"],"updated_at":"2026-11-04T07:32:23.735279Z"}]}}
