Vulnerabilidad en zephyr de zephyrproject (CVE-2026-10848)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-125
Lectura fuera de límites
Fecha de publicación:
02/08/2026
Última modificación:
23/10/2026
Descripción
El cliente OCPP 1.6 en subsys/net/lib/ocpp analizó tramas RPC WAMP entrantes en parse_rpc_msg() (subsys/net/lib/ocpp/ocpp_j.c) utilizando una función auxiliar personalizada, extract_string_field(), que copió los campos uid y action del mensaje con strncpy(out_buf, token + 1, outlen - 1) y luego escaneó el resultado con strchr(out_buf, ’“’). Debido a que strncpy no termina en NUL el destino cuando la fuente tiene al menos outlen - 1 (127) bytes de longitud, el strchr subsiguiente lee más allá del búfer de destino de 128 bytes hacia la memoria de pila adyacente; si se encuentra un byte ’”’ más allá del búfer, también ocurre una escritura NUL fuera de límites de un byte. Un defecto relacionado en extract_payload() ejecuta strchr/strrchr sobre el búfer de recepción, el cual podría no estar terminado en NUL cuando una trama de longitud máxima lo llena.<br />
<br />
Los bytes analizados provienen directamente del servidor del sistema central OCPP a través de un websocket: el hilo lector llena recv_buf a través de websocket_recv_msg() y llama a parse_rpc_msg() en cada trama DATA entrante (subsys/net/lib/ocpp/ocpp.c). Un servidor central malicioso o comprometido, o un atacante en la ruta (OCPP se implementa comúnmente sobre ws:// sin cifrar), puede enviar una trama RPC cuyo campo uid o action tenga 127+ bytes sin comilla de cierre, lo que desencadena el acceso fuera de límites.<br />
<br />
El impacto principal es una denegación de servicio que puede ser activada remotamente: el escaneo ilimitado puede fallar en una página no mapeada, y la escritura NUL errante puede corromper el estado de pila adyacente. Los datos sobre-leídos no se reflejan al par, por lo que la divulgación es limitada. La característica es EXPERIMENTAL y debe ser habilitada explícitamente (CONFIG_OCPP). La solución reemplaza el analizador manual con json_mixed_arr_parse() que respeta los límites y copia el uid extraído con un búfer explícitamente terminado en NUL, eliminando ambas sobre-lecturas.
Impacto
Puntuación base 3.x
7.00
Gravedad 3.x
ALTA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:zephyrproject:zephyr:*:*:*:*:*:*:*:* | 4.3.0 (incluyendo) | 4.5.0 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página


