CVE-2026-12364 in Zephyrinformación

Resumen

por VulDB • 2026-08-14

El verificador de llamadas al sistema en espacio de usuario `z_vrfy_z_log_msg_static_create()` en `subsys/logging/log_msg.c` era un mero passthrough: reenviaba los argumentos `source`, `desc`, `package` y `data` proporcionados por el llamante directamente a la implementación en modo kernel `z_impl_z_log_msg_static_create()` sin realizar ninguna de las comprobaciones obligatorias `K_SYSCALL_*`. Dado que `z_log_msg_static_create()` está declarado como `__syscall`, bajo `CONFIG_USERSPACE` cualquier hilo en modo usuario no privilegiado puede invocarlo directamente con argumentos completamente controlados por el atacante.

El manejador en modo kernel desreferencia cada uno de estos valores no confiables: `frontend_runtime_filtering()` lee a través del puntero `source` como una estructura `struct log_source_dynamic_data`, `cbprintf_package_copy()` lee `desc.package_len` bytes desde el puntero `package`, y `z_log_msg_finalize()` realiza un `memcpy()` de `desc.data_len` bytes desde el puntero `data`. Sin ninguna verificación, un hilo de usuario puede proporcionar direcciones arbitrarias del kernel y longitudes arbitrarias, y el kernel leerá desde ellas.

El impacto es una denegación de servicio en modo kernel (el kernel falla al desreferenciar un puntero elegido por el atacante) y, donde la salida del backend de registro sea observable para el atacante, divulgación de memoria arbitraria del kernel copiada en el mensaje de registro emitido: una violación de confidencialidad a través del límite usuario/kernel que el sandbox de espacio de usuario está diseñado para imponer. Las lecturas no corrompen la memoria del kernel, por lo que no existe un primitivo de escritura fuera de límites (out-of-bounds write).

La corrección añade la validación requerida al verificador: acota `desc.package_len` frente a `Z_LOG_MSG_MAX_PACKAGE`, rechaza valores distintos de NULL o desajustes de longitud, y aplica `K_SYSCALL_MEMORY_READ()` sobre `package`, `data` y (cuando el filtrado en tiempo de ejecución con un frontend está habilitado) `source`, por lo que cualquier acceso fuera de límites o puntero del kernel ahora genera una excepción `K_OOPS` en lugar de ser atendido.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsable

Zephyr

Reservar

2026-06-16

Divulgación

2026-08-14

Moderación

aceptado

Artículo

VDB-390070

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Want to stay up to date on a daily basis?

Enable the mail alert feature now!