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.
{
"cna_assigner": "GitHub_M",
"cwe_ids": [
"CWE-835"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/61xxx/CVE-2026-61633.json"
}{
"extracted_events": [
{
"original_tag": "0.24.14",
"range": [
{
"fixed": "16bdb38921e7bbeab887cf229c2eb145889dfa88"
}
],
"source": "REFERENCES_TAG"
}
]
}
{
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "0.24.14"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "fa8d859bb39841e46cfc6cce280d242bd782ad3d"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-61633.json"
[
{
"deprecated": false,
"digest": {
"function_hash": "88348002674658074348822203479023842368",
"length": 2560
},
"id": "CVE-2026-61633-143cbea7",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/fa8d859bb39841e46cfc6cce280d242bd782ad3d",
"target": {
"file": "src/supplemental/mqtt/mqtt_codec.c",
"function": "property_parse"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"106732617879992299546335078856304780455",
"294493632223967332579844525831444462468",
"206181698616916517217061310250512270723",
"76067159830892398620980420349741433411",
"132925112758583824193369990132482553455",
"55370608497300193109260551169647432186",
"81972049601563662899808688096955314759",
"238044452542881528069518046016055915863"
],
"threshold": 0.9
},
"id": "CVE-2026-61633-1eff8815",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/5c6ad09f0f6f0b111e19e8fbae259d20f5673505",
"target": {
"file": "src/supplemental/nanolib/conf.c"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"134183472054008959164910560082872290903",
"135218529836465988249126530173685715886",
"312632104218168491738907891875122949290",
"308436005444356819026494529717080274974",
"106553580121658145421047228981759758797",
"135218529836465988249126530173685715886",
"312632104218168491738907891875122949290",
"308436005444356819026494529717080274974",
"134183472054008959164910560082872290903",
"135218529836465988249126530173685715886",
"239740223537228919441959631622390010066",
"38279030566472781949455962562476214335",
"134183472054008959164910560082872290903",
"135218529836465988249126530173685715886",
"239740223537228919441959631622390010066",
"38279030566472781949455962562476214335",
"274319222470889704285877280499113142434",
"225383562553691437300533446637280837722",
"10516642643065539460561719685955809564",
"16440798690770997445309382729206171889"
],
"threshold": 0.9
},
"id": "CVE-2026-61633-325c82b6",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/fa8d859bb39841e46cfc6cce280d242bd782ad3d",
"target": {
"file": "src/supplemental/mqtt/mqtt_codec.c"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "70070237621829764289480800297382599647",
"length": 1221
},
"id": "CVE-2026-61633-4b861460",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/fa8d859bb39841e46cfc6cce280d242bd782ad3d",
"target": {
"file": "src/supplemental/mqtt/mqtt_codec.c",
"function": "nni_mqtt_msg_decode_unsubscribe"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "111289307452485218761891371005179732598",
"length": 1160
},
"id": "CVE-2026-61633-4de9126b",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/fa8d859bb39841e46cfc6cce280d242bd782ad3d",
"target": {
"file": "src/supplemental/mqtt/mqtt_codec.c",
"function": "nni_mqtt_msg_decode_subscribe"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "66300308770052318231294513144508137013",
"length": 1578
},
"id": "CVE-2026-61633-65c87e24",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/fa8d859bb39841e46cfc6cce280d242bd782ad3d",
"target": {
"file": "src/supplemental/mqtt/mqtt_codec.c",
"function": "nni_mqttv5_msg_decode_subscribe"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "179704196006112879465033474608620449237",
"length": 3859
},
"id": "CVE-2026-61633-bc6d51d1",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/5c6ad09f0f6f0b111e19e8fbae259d20f5673505",
"target": {
"file": "src/supplemental/nanolib/conf.c",
"function": "conf_bridge_node_destroy"
}
},
{
"deprecated": false,
"digest": {
"line_hashes": [
"319987710299103814133658779126207238492",
"70208850574568910157760390157809152789",
"191324800489073211161864177168034711983",
"282085166627322855677257736944132808316",
"295813053496134856364453543700627648562"
],
"threshold": 0.9
},
"id": "CVE-2026-61633-cdd8af0f",
"signature_type": "Line",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/5c6ad09f0f6f0b111e19e8fbae259d20f5673505",
"target": {
"file": "include/nng/supplemental/nanolib/conf.h"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "187575605547041575479112779187467724183",
"length": 1408
},
"id": "CVE-2026-61633-df2dad94",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/fa8d859bb39841e46cfc6cce280d242bd782ad3d",
"target": {
"file": "src/supplemental/mqtt/mqtt_codec.c",
"function": "nni_mqttv5_msg_decode_unsubscribe"
}
},
{
"deprecated": false,
"digest": {
"function_hash": "60028838494314808152959761740048073868",
"length": 1512
},
"id": "CVE-2026-61633-fd363509",
"signature_type": "Function",
"signature_version": "v1",
"source": "https://github.com/nanomq/nanonng/commit/5c6ad09f0f6f0b111e19e8fbae259d20f5673505",
"target": {
"file": "src/supplemental/nanolib/conf.c",
"function": "conf_bridge_node_init"
}
}
]
"2026-10-28T11:12:00Z"