CVE Catalog

CVE-2026-13343

MediumCVSS 5.3
Published: Updated: Translated: NVD NIST

Exploitation Probability (EPSS)

Low risk
0.23%

14th percentile - higher than 14% of all known CVEs

Summary

The UMP Stream responder library in Zephyr (lib/midi2/ump_stream_responder.c) contains an information leak vulnerability. The make_endpoint_info() and make_function_block_info() functions do not initialize the entire response structure, leaving the last two words (8 bytes) with stale stack data. The vulnerability is triggered by sending discovery requests (Endpoint-Discovery or Function-Block-Discovery) over the network (Network MIDI 2.0) or USB MIDI 2.0, causing the device to send this data to the attacker.

Risk Assessment

A remote attacker (without authentication in the default configuration) can repeatedly trigger responses and obtain fragments of the device's stack memory, potentially revealing sensitive data or pointer addresses. The leak is confidentiality-only but may aid further attacks.

Recommendation

Apply the fix that zero-initializes the response structures (struct midi_ump res = {0};) in make_endpoint_info() and make_function_block_info(). Update the system to a version containing this fix.

Related vulnerabilities

Original NVD description (English source)

The UMP Stream responder library in lib/midi2/ump_stream_responder.c builds reply packets in a 16-byte struct midi_ump (uint32_t data[4]). The builders make_endpoint_info() and make_function_block_info() populate only the first two words (res.data[0] and res.data[1]) and, before this fix, declared their result as an uninitialised local (struct midi_ump res;). The remaining two words (res.data[2], res.data[3]) retain stale stack contents. Endpoint Info and Function Block Info notifications are UMP Stream messages (UMP_MT_UMP_STREAM), which are 4 words long, so the full 16-byte packet — including the two uninitialised words — is transmitted verbatim by cfg->send(). The responder is driven by attacker-supplied UMP Stream Endpoint-Discovery / Function-Block-Discovery requests via ump_stream_respond(). In the in-tree Network MIDI 2.0 server (subsys/net/lib/midi2/netmidi2.c) these requests arrive as UDP datagrams and, with the default no-authentication endpoint, a remote peer can establish a session and trigger the responses; the same library also serves USB MIDI 2.0 hosts. Each discovery request causes the device to disclose 8 bytes of its own uninitialised stack memory to the peer, and the request is freely repeatable. This is a confidentiality-only information leak (root cause is use of an uninitialised variable, CWE-457/CWE-908); the leaked words could include residual data or pointer values. There is no memory-corruption, integrity, or availability impact. The fix zero-initialises both result structs (struct midi_ump res = {0};), so the trailing words are cleared before transmission. These are the only two responder builders that left trailing words unset (send_string() already zeroes its buffer), so the leak is fully closed.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS