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

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

Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-125 Lectura fuera de límites
Fecha de publicación:
04/07/2025
Última modificación:
18/11/2025

Descripción

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: can: kvaser_pciefd: refinar la lógica de manejo de echo_skb_max, propensa a errores. echo_skb_max debería definir el límite superior admitido de echo_skb[] asignado dentro del priv del dispositivo de red. El valor de tamaño correspondiente proporcionado por este controlador a alloc_candev() es KVASER_PCIEFD_CAN_TX_MAX_COUNT, que es 17. Sin embargo, posteriormente, echo_skb_max se redondea a la potencia de dos más cercana (para el caso máximo, sería 32) y los índices de transmisión/recepción calculados posteriormente durante la transmisión/recepción pueden superar el límite superior de la matriz. Kasan informó esto para el caso de confirmación dentro de kvaser_pciefd_handle_ack_packet(), aunque la función xmit ya había detectado el mismo problema anteriormente. ERROR: KASAN: slab-out-of-bounds in kvaser_pciefd_handle_ack_packet+0x2d7/0x92a drivers/net/can/kvaser_pciefd.c:1528 Read of size 8 at addr ffff888105e4f078 by task swapper/4/0 CPU: 4 UID: 0 PID: 0 Comm: swapper/4 Not tainted 6.15.0 #12 PREEMPT(voluntary) Call Trace: dump_stack_lvl lib/dump_stack.c:122 print_report mm/kasan/report.c:521 kasan_report mm/kasan/report.c:634 kvaser_pciefd_handle_ack_packet drivers/net/can/kvaser_pciefd.c:1528 kvaser_pciefd_read_packet drivers/net/can/kvaser_pciefd.c:1605 kvaser_pciefd_read_buffer drivers/net/can/kvaser_pciefd.c:1656 kvaser_pciefd_receive_irq drivers/net/can/kvaser_pciefd.c:1684 kvaser_pciefd_irq_handler drivers/net/can/kvaser_pciefd.c:1733 __handle_irq_event_percpu kernel/irq/handle.c:158 handle_irq_event kernel/irq/handle.c:210 handle_edge_irq kernel/irq/chip.c:833 __common_interrupt arch/x86/kernel/irq.c:296 common_interrupt arch/x86/kernel/irq.c:286 El recuento máximo de transmisiones es importante para kvaser_pciefd_tx_avail(), pero no para la generación de números de secuencia. Podemos calcularlo como nos convenga, sin tener en cuenta el recuento máximo de transmisiones. La única desventaja es que el tamaño de echo_skb[] debería corresponder al número máximo de secuencia (no al recuento máximo de transmisiones), por lo que, en algunos casos, se consumiría más memoria de la que se podría. Por lo tanto, el tamaño de echo_skb[] subyacente debe ser suficiente para el valor máximo de transmisión redondeado. 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:*:*:*:*:*:*:*:* 6.12.31 (incluyendo) 6.12.35 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.14.9 (incluyendo) 6.15 (excluyendo)
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* 6.15.1 (incluyendo) 6.15.4 (excluyendo)
cpe:2.3:o:linux:linux_kernel:6.15:-:*:*:*:*:*:*