CVE-2026-34608NanoMQ是一个全方位的边缘消息平台。在0.24.10版本之前,NanoMQ的webhook_inproc.c文件中存在安全漏洞。hook_work_cb函数在处理nng消息时,使用cJSON_Parse解析消息体,但该消息体来自nng_msg_body(msg),是一个没有保证以空字符结尾的二进制缓冲区。cJSON_Parse会读取直到找到\0,这导致了越界读取,可能访问超出分配缓冲区的内存。该漏洞在JSON负载长度为大于等于1024的2的幂时会被可靠触发。
该漏洞根源于NanoMQ在处理Webhook内部通信时的内存管理不当。漏洞点位于`webhook_inproc.c`文件的`hook_work_cb`函数中。该函数调用`cJSON_Parse(body)`来解析消息体,然而`body`是通过`nng_msg_body(msg)`获取的,这是一个未强制添加空终止符的二进制缓冲区。`cJSON_Parse`在执行时会持续扫描内存直至遇到字符串结束符`\0`,这导致解析器会读取缓冲区边界之外的内存区域(如相邻的堆内存或消息元数据)。尽管nng内存分配器通常通过添加填充(为非2次幂且小于1024字节的大小添加32字节零填充)来掩盖此问题,但在特定条件下——即当JSON负载长度是1024字节及以上的2的幂次方时,不会添加填充。此时,越界读取会被稳定触发,可能导致服务拒绝或敏感信息泄露。