Vulnerabilidad en zephyr de zephyrproject (CVE-2026-13343)
Gravedad CVSS v3.1:
MEDIA
Tipo:
CWE-200
Revelación de información
Fecha de publicación:
24/08/2026
Última modificación:
12/10/2026
Descripción
La biblioteca de respuesta de UMP Stream en lib/midi2/ump_stream_responder.c construye paquetes de respuesta en una estructura midi_ump de 16 bytes (uint32_t data[4]). Los constructores make_endpoint_info() y make_function_block_info() rellenan solo las dos primeras palabras (res.data[0] y res.data[1]) y, antes de esta corrección, declaraban su resultado como una variable local no inicializada (struct midi_ump res;). Las dos palabras restantes (res.data[2], res.data[3]) retienen contenido obsoleto de la pila.<br />
<br />
Las notificaciones de información de punto final y de bloque de función son mensajes de UMP Stream (UMP_MT_UMP_STREAM), que tienen 4 palabras de longitud, por lo que el paquete completo de 16 bytes -incluyendo las dos palabras no inicializadas- es transmitido textualmente por cfg -> send(). El respondedor es impulsado por solicitudes de descubrimiento de punto final / descubrimiento de bloque de función de UMP Stream suministradas por el atacante a través de ump_stream_respond(). En el servidor Network MIDI 2.0 integrado (subsys/net/lib/midi2/netmidi2.c), estas solicitudes llegan como datagramas UDP y, con el punto final predeterminado sin autenticación, un par remoto puede establecer una sesión y activar las respuestas; la misma biblioteca también sirve a hosts USB MIDI 2.0.<br />
<br />
Cada solicitud de descubrimiento hace que el dispositivo divulgue 8 bytes de su propia memoria de pila no inicializada al par, y la solicitud es libremente repetible. Esto es una fuga de información solo de confidencialidad (la causa raíz es el uso de una variable no inicializada, CWE-457/CWE-908); las palabras filtradas podrían incluir datos residuales o valores de puntero. No hay impacto en la corrupción de memoria, la integridad o la disponibilidad.<br />
<br />
La corrección inicializa a cero ambas estructuras de resultado (struct midi_ump res = {0};), por lo que las palabras finales se borran antes de la transmisión. Estos son los únicos dos constructores de respondedores que dejaron palabras finales sin establecer (send_string() ya pone a cero su búfer), por lo que la fuga está completamente cerrada.
Impacto
Puntuación base 3.x
5.30
Gravedad 3.x
MEDIA


