{"id":"CVE-2026-34608","aliases":["EUVD-2026-18464","GHSA-8p57-jxj9-3qq3"],"status":"published","title":"nanomq: Heap-Buffer-Overflow in webhook_inproc.c via cJSON_Parse OOB Read","description":"NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. Prior to version 0.24.10, in NanoMQ's webhook_inproc.c, the hook_work_cb() function processes nng messages by parsing the message body with cJSON_Parse(body). The body is obtained from nng_msg_body(msg), which is a binary buffer without a guaranteed null terminator. This leads to an out-of-bounds read (OOB read) as cJSON_Parse reads until it finds a \\0, potentially accessing memory beyond the allocated buffer (e.g., nng_msg metadata or adjacent heap/stack). The issue is often masked by nng's allocation padding (extra 32 bytes of zeros for non-power-of-two sizes \u003c1024 or non-aligned). The overflow is reliably triggered when the JSON payload length is a power-of-two \u003e=1024 (no padding added). This issue has been patched in version 0.24.10.","severity":{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-10","score":0.00373,"percentile":0.31531,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":false},"cwes":["CWE-125","CWE-457"],"published":"2026-04-02T17:52:51Z","modified":"2026-11-04T02:47:33Z","products":[{"vendor":"emqx","product":"nanomq"},{"vendor":"nanomq","product":"nanomq"}],"references":[{"url":"https://github.com/nanomq/nanomq/security/advisories/GHSA-8p57-jxj9-3qq3","tags":["x_refsource_CONFIRM","Exploit","Mitigation","Vendor Advisory","advisory"]},{"url":"https://github.com/nanomq/nanomq/commit/9499a4b2c47998a6aadb69238c18b9e6771b1691","tags":["x_refsource_MISC","Patch","fix"]},{"url":"https://github.com/nanomq/nanomq/releases/tag/0.24.10","tags":["x_refsource_MISC","Product","Release Notes","web"]},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/34xxx/CVE-2026-34608.json","tags":["advisory"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-34608","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-34608","title":"nanomq: Heap-Buffer-Overflow in webhook_inproc.c via cJSON_Parse OOB Read","description":"NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. Prior to version 0.24.10, in NanoMQ's webhook_inproc.c, the hook_work_cb() function processes nng messages by parsing the message body with cJSON_Parse(body). The body is obtained from nng_msg_body(msg), which is a binary buffer without a guaranteed null terminator. This leads to an out-of-bounds read (OOB read) as cJSON_Parse reads until it finds a \\0, potentially accessing memory beyond the allocated buffer (e.g., nng_msg metadata or adjacent heap/stack). The issue is often masked by nng's allocation padding (extra 32 bytes of zeros for non-power-of-two sizes \u003c1024 or non-aligned). The overflow is reliably triggered when the JSON payload length is a power-of-two \u003e=1024 (no padding added). This issue has been patched in version 0.24.10.","status":"published","published":"2026-04-02T17:52:51.813Z","modified":"2026-04-02T19:10:58.813Z","cvss":[{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"cna"}],"cwes":["CWE-125","CWE-457"],"updated_at":"2026-11-02T14:20:14.665567Z"}],"euvd":[{"id":"EUVD-2026-18464","description":"NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. Prior to version 0.24.10, in NanoMQ's webhook_inproc.c, the hook_work_cb() function processes nng messages by parsing the message body with cJSON_Parse(body). The body is obtained from nng_msg_body(msg), which is a binary buffer without a guaranteed null terminator. This leads to an out-of-bounds read (OOB read) as cJSON_Parse reads until it finds a \\0, potentially accessing memory beyond the allocated buffer (e.g., nng_msg metadata or adjacent heap/stack). The issue is often masked by nng's allocation padding (extra 32 bytes of zeros for non-power-of-two sizes \u003c1024 or non-aligned). The overflow is reliably triggered when the JSON payload length is a power-of-two \u003e=1024 (no padding added). This issue has been patched in version 0.24.10.","status":"published","published":"2026-04-02T17:52:51Z","modified":"2026-04-02T19:10:58Z","cvss":[{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"updated_at":"2026-11-02T19:25:17.32175Z"}],"nvd":[{"id":"CVE-2026-34608","description":"NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. Prior to version 0.24.10, in NanoMQ's webhook_inproc.c, the hook_work_cb() function processes nng messages by parsing the message body with cJSON_Parse(body). The body is obtained from nng_msg_body(msg), which is a binary buffer without a guaranteed null terminator. This leads to an out-of-bounds read (OOB read) as cJSON_Parse reads until it finds a \\0, potentially accessing memory beyond the allocated buffer (e.g., nng_msg metadata or adjacent heap/stack). The issue is often masked by nng's allocation padding (extra 32 bytes of zeros for non-power-of-two sizes \u003c1024 or non-aligned). The overflow is reliably triggered when the JSON payload length is a power-of-two \u003e=1024 (no padding added). This issue has been patched in version 0.24.10.","status":"published","published":"2026-04-02T18:16:32.357Z","modified":"2026-07-24T21:10:00.143Z","cvss":[{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H","level":"medium","assessor":"secondary"},{"version":"3.1","score":8.2,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H","level":"high","assessor":"primary"}],"cwes":["CWE-125","CWE-457"],"updated_at":"2026-11-02T14:12:12.73929Z"}],"osv":[{"id":"CVE-2026-34608","title":"nanomq: Heap-Buffer-Overflow in webhook_inproc.c via cJSON_Parse OOB Read","description":"NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. Prior to version 0.24.10, in NanoMQ's webhook_inproc.c, the hook_work_cb() function processes nng messages by parsing the message body with cJSON_Parse(body). The body is obtained from nng_msg_body(msg), which is a binary buffer without a guaranteed null terminator. This leads to an out-of-bounds read (OOB read) as cJSON_Parse reads until it finds a \\0, potentially accessing memory beyond the allocated buffer (e.g., nng_msg metadata or adjacent heap/stack). The issue is often masked by nng's allocation padding (extra 32 bytes of zeros for non-power-of-two sizes \u003c1024 or non-aligned). The overflow is reliably triggered when the JSON payload length is a power-of-two \u003e=1024 (no padding added). This issue has been patched in version 0.24.10.","status":"published","published":"2026-04-02T17:52:51.813Z","modified":"2026-11-08T07:11:23.057891887Z","cvss":[{"version":"3.1","score":4.9,"vector":"CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H","level":"medium"}],"cwes":["CWE-125","CWE-457"],"updated_at":"2026-11-08T02:57:14.556074Z"}]}}
