Vulnerabilidad en kernel de Linux (CVE-2025-38127)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
03/07/2025
Última modificación:
03/07/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: ice: corrección del manejo de errores del programador de Tx en la devolución de llamada XDP. Al cargar el programa XDP, la devolución de llamada XDP añade nuevas colas de Tx. Esto significa que la devolución de llamada debe actualizar el programador de Tx con el nuevo número de cola. En caso de fallo del programador de Tx, la devolución de llamada XDP también debería fallar y revertir cualquier cambio realizado previamente para la preparación de XDP. La implementación anterior presentaba un error que impedía revertir todos los cambios realizados por la devolución de llamada XDP. Esto provocó el bloqueo con el siguiente seguimiento de llamada: [ +9.549584] ice 0000:ca:00.0: Failed VSI LAN queue config for XDP, error: -5 [ +0.382335] Oops: general protection fault, probably for non-canonical address 0x50a2250a90495525: 0000 [#1] SMP NOPTI [ +0.010710] CPU: 103 UID: 0 PID: 0 Comm: swapper/103 Not tainted 6.14.0-net-next-mar-31+ #14 PREEMPT(voluntary) [ +0.010175] Hardware name: Intel Corporation M50CYP2SBSTD/M50CYP2SBSTD, BIOS SE5C620.86B.01.01.0005.2202160810 02/16/2022 [ +0.010946] RIP: 0010:__ice_update_sample+0x39/0xe0 [ice] [...] [ +0.002715] Call Trace: [ +0.002452] [ +0.002021] ? __die_body.cold+0x19/0x29 [ +0.003922] ? die_addr+0x3c/0x60 [ +0.003319] ? exc_general_protection+0x17c/0x400 [ +0.004707] ? asm_exc_general_protection+0x26/0x30 [ +0.004879] ? __ice_update_sample+0x39/0xe0 [ice] [ +0.004835] ice_napi_poll+0x665/0x680 [ice] [ +0.004320] __napi_poll+0x28/0x190 [ +0.003500] net_rx_action+0x198/0x360 [ +0.003752] ? update_rq_clock+0x39/0x220 [ +0.004013] handle_softirqs+0xf1/0x340 [ +0.003840] ? sched_clock_cpu+0xf/0x1f0 [ +0.003925] __irq_exit_rcu+0xc2/0xe0 [ +0.003665] common_interrupt+0x85/0xa0 [ +0.003839] [ +0.002098] [ +0.002106] asm_common_interrupt+0x26/0x40 [ +0.004184] RIP: 0010:cpuidle_enter_state+0xd3/0x690. Para solucionar este problema, realice la desasignación de colas XDP de q_vectors y restablezca el puntero de anillos XDP a NULL después de liberar todas esas colas. Además, añada una salida inmediata de la devolución de llamada XDP en caso de un fallo en la preparación del anillo.