CVE-2026-19736
El controlador de entropía TRNG de NXP MCUX en drivers/entropy/entropy_mcux_trng.c pasaba directamente el conteo de bytes del llamador a la rutina del SDK del proveedor TRNG_GetRandomData(). En las partes i.MX RT5xx y RT6xx el SDK compila su variante TRNG_SW_HEALTH_TESTS, que siempre copia palabras de 32 bits completas y extrae entropía redondeada a un múltiplo de 128 bytes. Su protección de "buffer del llamador lleno" prueba dataSize == 0, por lo que una solicitud cuya longitud no es múltiplo de cuatro hace que dataSize se desborde pasado cero y el SDK sigue escribiendo en el buffer del llamador para toda la extracción: una solicitud de 1 byte resulta en 128 bytes escritos, y cualquier longitud no-múltiplo-de-palabra se desborda hasta 127 bytes.
Leer descripción completaMostrar menos
entropy_get_entropy() es una llamada al sistema, y su verificador en drivers/entropy/entropy_handlers.c valida solo la longitud solicitada a través de K_SYSCALL_MEMORY_WRITE(). Con CONFIG_USERSPACE habilitado, un hilo de modo usuario sin privilegios al que se le ha otorgado simplemente el dispositivo de entropía puede elegir tanto la dirección de destino como una longitud tal como 1, y causar que el kernel escriba hasta 127 bytes más allá de la región que demostró que posee. En estos objetivos Cortex-M33 no hay MMU, por lo que las particiones de usuario y los datos del kernel comparten una SRAM y el desbordamiento puede caer en estado del kernel adyacente. El mismo defecto se alcanza desde modo kernel por cualquier llamador que solicite una longitud no-múltiplo-de-palabra, incluyendo getentropy() y, en compilaciones donde sys_csrand_get()/sys_rand_get() se resuelven al generador de hardware, sys_rand8_get() y sys_rand16_get().
El impacto es corrupción de memoria de hasta 127 bytes inmediatamente después del buffer suministrado — típicamente la pila del llamador en uso en modo kernel, o memoria fuera de la partición del llamador cuando se impulsa a través de la llamada al sistema. El desplazamiento del desbordamiento está completamente determinado por la longitud solicitada y es por lo tanto determinista, mientras que el contenido escrito es salida TRNG incontrolada; las consecuencias prácticas van desde bloqueos y corrupción de estado impredecible a escalada oportunista cuando se sobrescriben datos de contabilidad del kernel tales como mapas de bits de permisos de objetos. Los dispositivos afectados son aquellos donde el SDK de MCUX habilita TRNG_SW_HEALTH_TESTS (MIMXRT595S, MIMXRT555S, MIMXRT533S, MIMXRT685S, MIMXRT633S), en los que el TRNG es el nodo zephyr,entropy elegido; otros SoC que usan este controlador toman la ruta del SDK que limita el tamaño de copia y no se ven afectados.
La corrección encamina cualquier prefijo no alineado y cualquier cola sub-palabra a través de una palabra de rebote local y entrega al SDK solo tamaños múltiplo-de-palabra, de modo que las escrituras granulares de palabra del SDK ya no pueden pasar el final del buffer del llamador.
Traducción automática del texto original de NVD (en inglés).
CVSS
- Puntuación base
- 7.8
- Versión
- 3.1
- Vector
- CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días
- 0.11 %
- Percentil entre todas las CVEs puntuadas
- 1
- Fecha de la puntuación
- 21/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Técnicas ATT&CK
Cómo se explota esta vulnerabilidad y qué consigue el atacante, en el lenguaje de MITRE ATT&CK.
- Explotación
T1068Exploitation for Privilege Escalationprivilege escalation95 % - Impacto secundario
T1565.001Stored Data Manipulationimpact85 %
Buffer overflow (CWE-787) con acceso local y sin interacción del usuario. Permite corrupción de memoria del kernel (~127 bytes) y ejecución de código o escalada de privilegios mediante sobrescritura de estructuras críticas.
Inferido por nuestro agente de análisis a partir de la descripción oficial, el vector CVSS y la CWE, y comprobado por un supervisor. Puede contener errores.
Mitigaciones ATT&CK que cubren estas técnicas
Tecnologías afectadas (1)
⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.
CWE
- CWE-787
Referencias
JSON original (NVD)
Mostrar
{
"id": "CVE-2026-19736",
"cveTags": [],
"metrics": {
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-19736",
"role": "CISA Coordinator",
"options": [
{
"exploitation": "none"
},
{
"automatable": "no"
},
{
"technicalImpact": "total"
}
],
"version": "2.0.3",
"timestamp": "2026-10-15T17:57:42.294702Z"
}
}
],
"cvssMetricV31": [
{
"type": "Secondary",
"source": "vulnerabilities@zephyrproject.org",
"cvssData": {
"scope": "UNCHANGED",
"version": "3.1",
"baseScore": 7.8,
"attackVector": "LOCAL",
"baseSeverity": "HIGH",
"vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
"integrityImpact": "HIGH",
"userInteraction": "NONE",
"attackComplexity": "LOW",
"availabilityImpact": "HIGH",
"privilegesRequired": "LOW",
"confidentialityImpact": "HIGH"
},
"impactScore": 5.9,
"exploitabilityScore": 1.8
}
]
},
"affected": [
{
"source": "vulnerabilities@zephyrproject.org",
"affectedData": [
{
"vendor": "zephyrproject",
"product": "zephyr",
"versions": [
{
"status": "affected",
"version": "4.3.0",
"versionType": "semver",
"lessThanOrEqual": "4.4.2"
}
],
"packageName": "zephyr",
"programFiles": [
"drivers/entropy/entropy_mcux_trng.c"
],
"collectionURL": "https://github.com/zephyrproject-rtos/zephyr",
"defaultStatus": "unaffected",
"programRoutines": [
{
"name": "entropy_get_entropy"
},
{
"name": "entropy_mcux_trng_get_entropy"
}
]
}
]
}
],
"published": "2026-10-11T18:16:58.810",
"references": [
{
"url": "https://github.com/zephyrproject-rtos/zephyr/commit/2c132efaf03a5d45aeaf7b0531c1107db7a36a3d",
"source": "vulnerabilities@zephyrproject.org"
},
{
"url": "https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-3f6q-3949-rqph",
"source": "vulnerabilities@zephyrproject.org"
}
],
"vulnStatus": "Awaiting Analysis",
"weaknesses": [
{
"type": "Secondary",
"source": "vulnerabilities@zephyrproject.org",
"description": [
{
"lang": "en",
"value": "CWE-787"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "The NXP MCUX TRNG entropy driver in drivers/entropy/entropy_mcux_trng.c passed the caller's byte count straight to the vendor SDK routine TRNG_GetRandomData(). On i.MX RT5xx and RT6xx parts the SDK compiles its TRNG_SW_HEALTH_TESTS variant, which always copies whole 32-bit words and draws entropy rounded up to a multiple of 128 bytes. Its \"caller buffer is full\" guard tests dataSize == 0, so a request whose length is not a multiple of four makes dataSize underflow past zero and the SDK keeps writing into the caller's buffer for the entire extraction: a 1-byte request results in 128 bytes written, and any non-word-multiple length overflows by up to 127 bytes.\n\nentropy_get_entropy() is a syscall, and its verifier in drivers/entropy/entropy_handlers.c validates only the requested length via K_SYSCALL_MEMORY_WRITE(). With CONFIG_USERSPACE enabled, an unprivileged user-mode thread that has merely been granted the entropy device can therefore choose both the destination address and a length such as 1, and cause the kernel to write up to 127 bytes beyond the region it proved it owns. On these Cortex-M33 targets there is no MMU, so user partitions and kernel data share one SRAM and the overflow can land in adjacent kernel state. The same defect is reached from kernel mode by any caller requesting a non-word-multiple length, including getentropy() and, in builds where sys_csrand_get()/sys_rand_get() resolve to the hardware generator, sys_rand8_get() and sys_rand16_get().\n\nImpact is memory corruption of up to 127 bytes immediately following the supplied buffer — typically the caller's stack in kernel-mode use, or memory outside the caller's partition when driven through the syscall. The overflow offset is fully determined by the requested length and is therefore deterministic, while the written content is uncontrolled TRNG output; the practical consequences range from crashes and unpredictable state corruption to opportunistic escalation when kernel bookkeeping such as object permission bitmaps is overwritten. The affected devices are those where the MCUX SDK enables TRNG_SW_HEALTH_TESTS (MIMXRT595S, MIMXRT555S, MIMXRT533S, MIMXRT685S, MIMXRT633S), on which the TRNG is the zephyr,entropy chosen node; other SoCs using this driver take the SDK path that clamps the copy size and are unaffected.\n\nThe fix routes any unaligned prefix and any sub-word tail through a local bounce word and hands the SDK only word-multiple sizes, so the SDK's word-granular writes can no longer pass the end of the caller's buffer."
}
],
"lastModified": "2026-10-15T19:17:37.463",
"sourceIdentifier": "vulnerabilities@zephyrproject.org"
}