Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

Vulnerabilidad en kernel de Linux (CVE-2024-38605)

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-476 Desreferencia a puntero nulo (NULL)
Fecha de publicación:
19/06/2024
Última modificación:
01/04/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: ALSA: núcleo: corrige la asignación del puntero del módulo NULL en el inicio de la tarjeta el commit 81033c6b584b ("ALSA: núcleo: Advertencia sobre módulo vacío") introdujo un WARN_ON() para un puntero de módulo NULL pasado en la creación del objeto snd_card, y también envuelve el código a su alrededor con '#ifdef MODULE'. Esto funciona en la mayoría de los casos, pero los problemas siempre están en los detalles. "MÓDULO" se define cuando el código objetivo (es decir, el núcleo de sonido) se construye como un módulo; pero esto no significa que la persona que llama también esté integrada o no. Es decir, cuando solo el núcleo de sonido está integrado (CONFIG_SND=y) mientras el controlador es un módulo (CONFIG_SND_USB_AUDIO=m), el puntero del módulo pasado se ignora incluso si no es NULL, y tarjeta->módulo permanece como NULL. Esto daría como resultado que la referencia del módulo faltante suba o baje en la apertura o cierre del dispositivo, lo que provocaría una ejecución con la ejecución del código después de la eliminación del módulo. Para solucionar el error, mueva la asignación de tarjeta->módulo nuevamente fuera de ifdef. WARN_ON() todavía está incluido en ifdef porque el módulo puede ser realmente NULL cuando todos los controladores de sonido están integrados. Tenga en cuenta que mantenemos 'ifdef MODULE' para WARN_ON(); de lo contrario, se produciría una verificación de módulo NULL falsamente positiva. Es cierto que no se detectará perfectamente, es decir, no se realiza ninguna verificación cuando CONFIG_SND=y. Pero no es un problema real ya que es solo para depurar y la condición es bastante rara.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.9 (incluyendo) 5.10.219 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.161 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.93 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.33 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.8.12 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.9 (incluyendo) 6.9.3 (excluyendo)