Vulnerabilidad en kernel de Linux (CVE-2022-49939)
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
18/06/2025
Última modificación:
18/06/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: binder: arreglo UAF de ref->proc causado por condición de ejecución Una transacción de tipo BINDER_TYPE_WEAK_HANDLE puede fallar al incrementar la referencia para un nodo. En este caso, el proc objetivo normalmente libera la referencia fallida al cerrar como se espera. Sin embargo, si el objetivo está muriendo en paralelo la llamada competirá con binder_deferred_release(), por lo que el objetivo podría haber liberado todas sus referencias por ahora dejando la limpieza de la nueva referencia fallida sin manejar. La transacción entonces termina y el proc objetivo se libera haciendo que ref->proc ahora sea un puntero colgante. Más tarde, ref->node se cierra e intentamos tomar spin_lock(&ref->proc->inner_lock), lo que lleva al error de Use-After-Free reportado a continuación. Vamos a arreglar esto limpiando la referencia fallida en el acto en lugar de depender de que el objetivo lo haga. ====================================================================== ERROR: KASAN: Use-After-Free en _raw_spin_lock+0xa8/0x150 Escritura de tamaño 4 en la dirección ffff5ca207094238 por la tarea kworker/1:0/590 CPU: 1 PID: 590 Comm: kworker/1:0 No contaminado 5.19.0-rc8 #10 Nombre del hardware: linux,dummy-virt (DT) Cola de trabajo: eventos binder_deferred_func Rastreo de llamadas: dump_backtrace.part.0+0x1d0/0x1e0 show_stack+0x18/0x70 dump_stack_lvl+0x68/0x84 print_report+0x2e4/0x61c kasan_report+0xa4/0x110 kasan_check_range+0xfc/0x1a4 __kasan_check_write+0x3c/0x50 _raw_spin_lock+0xa8/0x150 binder_deferred_func+0x5e0/0x9b0 process_one_work+0x38c/0x5f0 worker_thread+0x9c/0x694 kthread+0x188/0x190 ret_from_fork+0x10/0x20
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/06e5b43ca4dab06a92bf4c2f33766e6fb11b880a
- https://git.kernel.org/stable/c/229f47603dd306bc0eb1a831439adb8e48bb0eae
- https://git.kernel.org/stable/c/30d0901b307f27d36b2655fb3048cf31ee0e89c0
- https://git.kernel.org/stable/c/603a47f2ae56bf68288784d3c0a8c5b8e0a827ed
- https://git.kernel.org/stable/c/9629f2dfdb1dad294b468038ff8e161e94d0b609
- https://git.kernel.org/stable/c/a0e44c64b6061dda7e00b7c458e4523e2331b739
- https://git.kernel.org/stable/c/c2a4b5dc8fa71af73bab704d0cac42ac39767ed6