Contiki-NG's MQTT client parsepublishvhdr() in os/net/app-layer/mqtt/mqtt.c sets topiclenreceived=1 before checking topiclen against the 64-byte limit, so an over-length topic returns early but leaves the flag set. On the next TCP segment, tcpinput() re-invokes the parser with topicreceived==0, and the persisted topiclenreceived==1 skips the length-reading block containing the guard, falling through directly to a memcpy() that uses the unvalidated 16-bit topiclen as the copy length. The 65-byte topic[] destination overruns into adjacent struct fields including the payload_chunk pointer, which subsequent MQTT code dereferences, giving a compromised or attacker-controlled broker an arbitrary-pointer-write primitive. Contiki-NG's MQTT implementation has no TLS support so the connection is plaintext. Impact ranges from information disclosure and denial of service to remote code execution on embedded targets without memory protection.
{
"unresolved_ranges": [
{
"extracted_events": [
{
"fixed": "a34a2dbdc8bea784bd2ae5079aa4be520cd74f2d"
}
],
"source": "AFFECTED_FIELD"
},
{
"source": "DESCRIPTION",
"extracted_events": [
{
"introduced": "1"
}
]
}
],
"cna_assigner": "VulnCheck",
"cwe_ids": [
"CWE-787"
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/5xxx/CVE-2026-5857.json"
}