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

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

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

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: HID: appleir: Se corrige una posible desreferencia de puntero NULL en el identificador de evento sin procesar Syzkaller informa un problema de desreferencia de puntero NULL en input_event(). ERROR: KASAN: null-ptr-deref en instrument_atomic_read include/linux/instrumented.h:68 [en línea] ERROR: KASAN: null-ptr-deref en _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [en línea] ERROR: KASAN: null-ptr-deref en is_event_supported drivers/input/input.c:67 [en línea] ERROR: KASAN: null-ptr-deref en input_event+0x42/0xa0 drivers/input/input.c:395 Lectura de tamaño 8 en la dirección 0000000000000028 por la tarea syz-executor199/2949 CPU: 0 UID: 0 PID: 2949 Comm: syz-executor199 No contaminado 6.13.0-rc4-syzkaller-00076-gf097a36ef88d #0 Nombre del hardware: Google Google Compute Engine/Google Compute Engine, BIOS Google 13/09/2024 Rastreo de llamadas: __dump_stack lib/dump_stack.c:94 [en línea] dump_stack_lvl+0x116/0x1f0 lib/dump_stack.c:120 kasan_report+0xd9/0x110 mm/kasan/report.c:602 check_region_inline mm/kasan/generic.c:183 [en línea] kasan_check_range+0xef/0x1a0 mm/kasan/generic.c:189 instrument_atomic_read include/linux/instrumented.h:68 [en línea] _test_bit include/asm-generic/bitops/instrumented-non-atomic.h:141 [en línea] es_evento_compatible drivers/input/input.c:67 [en línea] evento_entrada+0x42/0xa0 drivers/input/input.c:395 clave_informe_entrada include/linux/input.h:439 [en línea] tecla_abajo drivers/hid/hid-appleir.c:159 [en línea] evento_sin_usar_appleir+0x3e5/0x5e0 drivers/hid/hid-appleir.c:232 __hid_input_report.constprop.0+0x312/0x440 drivers/hid/hid-core.c:2111 hid_ctrl+0x49f/0x550 drivers/hid/usbhid/hid-core.c:484 __usb_hcd_giveback_urb+0x389/0x6e0 controladores/usb/core/hcd.c:1650 usb_hcd_giveback_urb+0x396/0x450 controladores/usb/core/hcd.c:1734 temporizador ficticio+0x17f7/0x3960 controladores/usb/gadget/udc/dummy_hcd.c:1993 __run_hrtimer kernel/time/hrtimer.c:1739 [en línea] __hrtimer_run_queues+0x20a/0xae0 kernel/time/hrtimer.c:1803 hrtimer_run_softirq+0x17d/0x350 kernel/time/hrtimer.c:1820 handle_softirqs+0x206/0x8d0 kernel/softirq.c:561 __do_softirq kernel/softirq.c:595 [en línea] invocar_softirq kernel/softirq.c:435 [en línea] __irq_exit_rcu+0xfa/0x160 kernel/softirq.c:662 irq_exit_rcu+0x9/0x30 kernel/softirq.c:678 instr_sysvec_apic_timer_interrupt arch/x86/kernel/apic/apic.c:1049 [en línea] sysvec_apic_timer_interrupt+0x90/0xb0 arch/x86/kernel/apic/apic.c:1049 asm_sysvec_apic_timer_interrupt+0x1a/0x20 arch/x86/include/asm/idtentry.h:702 __mod_timer+0x8f6/0xdc0 kernel/time/timer.c:1185 add_timer+0x62/0x90 kernel/time/timer.c:1295 schedule_timeout+0x11f/0x280 kernel/time/sleep_timeout.c:98 usbhid_wait_io+0x1c7/0x380 drivers/hid/usbhid/hid-core.c:645 usbhid_init_reports+0x19f/0x390 drivers/hid/usbhid/hid-core.c:784 hiddev_ioctl+0x1133/0x15b0 drivers/hid/usbhid/hiddev.c:794 vfs_ioctl fs/ioctl.c:51 [en línea] Esto sucede debido a los elementos de informe mal formados enviados por el dispositivo emulado, lo que da como resultado que se agregue a la lista de informes un informe que no tiene campos. Debido a que appleir_input_configured() nunca se llama, hidinput_connect() falla, lo que provoca que no se configure el indicador HID_CLAIMED_INPUT. Sin embargo, esto no provoca el fallo de appleir_probe() y permite que la devolución de llamada del evento se llame sin el dispositivo de entrada asociado. Por lo tanto, se debe añadir una comprobación para el indicador HID_CLAIMED_INPUT y abandonar el gancho de evento antes de tiempo si el controlador no solicitó ningún input_dev por alguna razón. Además, otros controladores HID que acceden a input_dev en sus devoluciones de llamada de evento también tienen comprobaciones similares. Encontrado por el Centro de Verificación de Linux (linuxtesting.org) con Syzkaller.

Productos y versiones vulnerables

CPE Desde Hasta
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 3.10 (incluyendo) 5.4.291 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.5 (incluyendo) 5.10.235 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.11 (incluyendo) 5.15.179 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 5.16 (incluyendo) 6.1.131 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.2 (incluyendo) 6.6.83 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.7 (incluyendo) 6.12.19 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.13 (incluyendo) 6.13.7 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.14:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.14:rc5:*:*:*:*:*:*