CVE-2026-9728

The userspace syscall verifier z_vrfy_mbox_send() in drivers/mbox/mbox_handlers.c validated the nested msg->data/msg->size fields by reading them directly out of live userspace memory, and then forwarded the original, still-mutable userspace struct mbox_msg * pointer to z_impl_mbox_send() and the underlying driver. Between the access check and the driver's use of msg->data, the validated pointer could be replaced, leaving a time-of-check/time-of-use window. On a system built with CONFIG_USERSPACE, any unprivileged userspace thread may invoke the mbox_send() system call. A second thread sharing the caller's address space can race to overwrite msg->data with a supervisor (kernel) address after the verifier's bounds check has passed but before the driver dereferences it. The driver then reads from the attacker-chosen address in supervisor context (for example memcpy(&data32, msg->data, msg->size) in the NXP mailbox driver, whose bytes are subsequently emitted to the peer mailbox endpoint). The impact is a userspace-to-supervisor access-control bypass: disclosure of kernel memory contents (high confidentiality impact), or, for an invalid/unmapped target address, a faulting kernel read causing denial of service. The fix snapshots the entire struct mbox_msg into a kernel-stack copy with k_usermode_from_copy() and validates and forwards that immutable copy, closing the race.
Configurations

No configuration.

History

12 Oct 2026, 15:10

Type Values Removed Values Added
Summary
  • (es) El verificador de llamadas al sistema de espacio de usuario z_vrfy_mbox_send() en drivers/mbox/mbox_handlers.c validó los campos anidados msg -> data/msg -> size leyéndolos directamente de la memoria activa del espacio de usuario, y luego reenvió el puntero original, aún mutable, de la estructura mbox_msg * del espacio de usuario a z_impl_mbox_send() y al controlador subyacente. Entre la verificación de acceso y el uso de msg -> data por parte del controlador, el puntero validado podría ser reemplazado, dejando una ventana de tiempo de verificación/tiempo de uso. En un sistema construido con CONFIG_USERSPACE, cualquier hilo de espacio de usuario sin privilegios puede invocar la llamada al sistema mbox_send(). Un segundo hilo que comparte el espacio de direcciones del llamante puede competir para sobrescribir msg -> data con una dirección de supervisor (kernel) después de que la verificación de límites del verificador haya pasado pero antes de que el controlador lo desreferencie. El controlador luego lee de la dirección elegida por el atacante en contexto de supervisor (por ejemplo, memcpy(&data32, msg -> data, msg -> size) en el controlador de buzón NXP, cuyos bytes se emiten posteriormente al punto final del buzón par). El impacto es una omisión de control de acceso de espacio de usuario a supervisor: divulgación de contenidos de memoria del kernel (alto impacto en la confidencialidad), o, para una dirección de destino inválida/no mapeada, una lectura de kernel con fallo que causa denegación de servicio. La solución captura la estructura mbox_msg completa en una copia de pila del kernel con k_usermode_from_copy() y valida y reenvía esa copia inmutable, cerrando la condición de carrera.

Information

Published : 2026-08-24 15:16

Updated : 2026-10-12 15:10


NVD link : CVE-2026-9728

Mitre link : CVE-2026-9728

CVE.ORG link : CVE-2026-9728


JSON object : View

Products Affected

No product.

CWE
CWE-367

Time-of-check Time-of-use (TOCTOU) Race Condition