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

Vulnerabilidad en kernel de Linux (CVE-2025-37905)

Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
20/05/2025
Última modificación:
21/05/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: firmware: arm_scmi: Equilibrar el recuento de referencias de dispositivos al destruir dispositivos. El uso de device_find_child() para buscar el dispositivo SCMI adecuado para destruir provoca un desequilibrio en el recuento de referencias de dispositivos, ya que device_find_child() llama a un método get_device() implícito: esto, a su vez, inhibe la llamada a los métodos de liberación proporcionados tras la destrucción de dispositivos. Como consecuencia, una de las estructuras que no se libera correctamente tras la destrucción es la estructura interna device_private dev->p, rellenada por el núcleo del subsistema de controladores. KMemleak detecta esta situación, ya que la carga/descarga de algún controlador SCMI provoca que los dispositivos relacionados se creen/destruyan sin llamar a ningún método device_release. objeto sin referencia 0xffff00000f583800 (tamaño 512): comm "insmod", pid 227, jiffies 4294912190 volcado hexadecimal (primeros 32 bytes): 00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00 .....N.......... ff ff ff ff ff ff ff ff ff 60 36 1d 8a 00 80 ff ff ........`6...... seguimiento inverso (crc 114e2eed): kmemleak_alloc+0xbc/0xd8 __kmalloc_cache_noprof+0x2dc/0x398 device_add+0x954/0x12d0 device_register+0x28/0x40 __scmi_device_create.part.0+0x1bc/0x380 scmi_device_create+0x2d0/0x390 scmi_create_protocol_devices+0x74/0xf8 scmi_device_request_notifier+0x1f8/0x2a8 notifier_call_chain+0x110/0x3b0 blocking_notifier_call_chain+0x70/0xb0 scmi_driver_register+0x350/0x7f0 0xffff80000a3b3038 do_one_initcall+0x12c/0x730 do_init_module+0x1dc/0x640 load_module+0x4b20/0x5b70 init_module_from_file+0xec/0x158 $ ./scripts/faddr2line ./vmlinux device_add+0x954/0x12d0 device_add+0x954/0x12d0: kmalloc_noprof en include/linux/slab.h:901 (en línea por) kzalloc_noprof en include/linux/slab.h:1037 (en línea por) device_private_init en drivers/base/core.c:3510 (en línea por) device_add en drivers/base/core.c:3561 Equilibre el recuento de dispositivos emitiendo un put_device() en los dispositivos encontrados a través de device_find_child().

Impacto