CVE-2026-12519

The WNC-M14A2A LTE-M modem driver mishandles unsolicited %NOTIFYEV: events in on_cmd_socknotifyev() (drivers/modem/vendor_standalone/wncm14a2a.c). The response line is linearized into a fixed 40-byte stack buffer via net_buf_linearize(), which caps the copy at 39 bytes and returns out_len <= 39. The two quote-delimiter scanning loops, however, were bounded by len — the full CR/LF-delimited frame length returned by net_buf_findcrlf() — rather than by out_len. When a %NOTIFYEV: line longer than 39 bytes contains no " within the linearized region, the loop indices p1/p2 walk past value[39] and read adjacent stack memory until a stray quote byte is found or the index reaches len. The over-read string is then passed to strncmp()/atoi()/LOG_*, and if a quote byte is found out of bounds the subsequent value[p2] = '\0' performs a single-NUL out-of-bounds stack write at an attacker-influenced offset. The %NOTIFYEV: payload carries network-derived content (LTIME network time, SIB1 base-station system information, CSPS/RRCSTATE), so a rogue cellular base station, a malicious or compromised modem module, or RF manipulation that induces an over-long notify line reaches the defect without any application interaction; the handler runs automatically on the unsolicited event in the modem RX thread. The impact is out-of-bounds stack disclosure (into logs and parsing) and stack corruption that can crash the modem RX thread (denial of service). The write offset is only weakly controlled, so memory-safe code execution is not demonstrated. The fix bounds both scanning loops by out_len, keeping all accesses within the linearized buffer.
Configurations

No configuration.

History

23 Oct 2026, 16:10

Type Values Removed Values Added
Summary
  • (es) El controlador del módem LTE-M WNC-M14A2A gestiona incorrectamente los eventos %NOTIFYEV: no solicitados en on_cmd_socknotifyev() (drivers/modem/vendor_standalone/wncm14a2a.c). La línea de respuesta se linealiza en un búfer de pila fijo de 40 bytes a través de net_buf_linearize(), que limita la copia a 39 bytes y devuelve out_len menor o igual que 39. Los dos bucles de escaneo de delimitadores de comillas, sin embargo, estaban limitados por len - la longitud completa del marco delimitado por CR/LF devuelta por net_buf_findcrlf() - en lugar de por out_len. Cuando una línea %NOTIFYEV: de más de 39 bytes no contiene ’ dentro de la región linealizada, los índices de bucle p1/p2 superan value[39] y leen memoria de pila adyacente hasta que se encuentra un byte de comilla extraviado o el índice alcanza len. La cadena sobreleída se pasa entonces a strncmp()/atoi()/LOG_*, y si se encuentra un byte de comilla fuera de los límites, el subsiguiente value[p2] = ’\0’ realiza una escritura de pila fuera de límites de un solo NUL en un desplazamiento influenciado por el atacante. La carga útil %NOTIFYEV: transporta contenido derivado de la red (hora de red LTIME, información del sistema de estación base SIB1, CSPS/RRCSTATE), por lo que una estación base celular maliciosa, un módulo de módem malicioso o comprometido, o manipulación de RF que induce una línea de notificación excesivamente larga alcanza el defecto sin ninguna interacción de la aplicación; el gestor se ejecuta automáticamente en el evento no solicitado en el hilo RX del módem. El impacto es la divulgación de pila fuera de límites (en registros y análisis) y la corrupción de pila que puede bloquear el hilo RX del módem (denegación de servicio). El desplazamiento de escritura solo está débilmente controlado, por lo que la ejecución de código segura para la memoria no se demuestra. La solución limita ambos bucles de escaneo por out_len, manteniendo todos los accesos dentro del búfer linealizado.

Information

Published : 2026-08-17 17:16

Updated : 2026-10-23 16:10


NVD link : CVE-2026-12519

Mitre link : CVE-2026-12519

CVE.ORG link : CVE-2026-12519


JSON object : View

Products Affected

No product.

CWE
CWE-787

Out-of-bounds Write