Vulnerabilidad en kernel de Linux (CVE-2024-56541)
Gravedad CVSS v3.1:
ALTA
Tipo:
CWE-416
Utilización después de liberación
Fecha de publicación:
27/12/2024
Última modificación:
11/02/2025
Descripción
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: wifi: ath12k: arreglo de use-after-free en ath12k_dp_cc_cleanup() Durante la eliminación del módulo ath12k, en ath12k_core_deinit(), ath12k_mac_destroy() anula el registro de ah->hw de mac80211 y libera el ah->hw así como todos los ar en él. Después de esto, ath12k_core_soc_destroy()-> ath12k_dp_free()-> ath12k_dp_cc_cleanup() intenta acceder a uno de los ar liberados del skb pendiente. Esto se debe a que durante la destrucción de mac, el controlador no pudo limpiar algunos paquetes de datos, a los que se accedió más tarde en ath12k_dp_cc_cleanup() y se liberaron, pero el uso de ar del paquete provocó este use-after-free. ERROR: KASAN: use-after-free en ath12k_dp_cc_cleanup.part.0+0x5e2/0xd40 [ath12k] Escritura de tamaño 4 en la dirección ffff888150bd3514 por la tarea modprobe/8926 CPU: 0 UID: 0 PID: 8926 Comm: modprobe No contaminado 6.11.0-rc2-wt-ath+ #1746 Nombre del hardware: Intel(R) Client Systems NUC8i7HVK/NUC8i7HVB, BIOS HNKBLi70.86A.0067.2021.0528.1339 28/05/2021 Seguimiento de llamadas: dump_stack_lvl+0x7d/0xe0 dirección_de_impresión_descripción.constprop.0+0x33/0x3a0 informe_de_impresión+0xb5/0x260 ? dirección_kasan_a_losa+0x24/0x80 informe_kasan+0xd8/0x110 ? ath12k_dp_cc_cleanup.part.0+0x5e2/0xd40 [ath12k] ? ath12k_dp_cc_cleanup.part.0+0x5e2/0xd40 [ath12k] rango de comprobación de kasan+0xf3/0x1a0 __comprobación de escritura de kasan+0x14/0x20 ath12k_dp_cc_cleanup.part.0+0x5e2/0xd40 [ath12k] dp_free+0x178/0x420 [ath12k] núcleo_detención+0x176/0x200 [ath12k] núcleo_deinit+0x13f/0x210 [ath12k] eliminación de pci+0xad/0x1c0 [ath12k] eliminación de dispositivo pci+0x9b/0x1b0 dispositivo_eliminar+0xbf/0x150 dispositivo_liberación_controlador_interno+0x3c3/0x580 ? __kasan_check_read+0x11/0x20 controlador_desconectar+0xc4/0x190 bus_eliminar_controlador+0x130/0x2a0 controlador_anular_registro+0x68/0x90 pci_anular_registro_controlador+0x24/0x240 ? buscar_módulo_todos+0x13e/0x1e0 ath12k_pci_exit+0x10/0x20 [ath12k] __do_sys_eliminar_módulo+0x32c/0x580 ? módulo_indicadores+0x2f0/0x2f0 ? kmem_cache_libre+0xf0/0x410 ? __fput+0x56f/0xab0 ? __fput+0x56f/0xab0 ? debug_smp_processor_id+0x17/0x20 __x64_sys_delete_module+0x4f/0x70 x64_sys_call+0x522/0x9f0 do_syscall_64+0x64/0x130 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7f8182c6ac8b Commit 24de1b7b231c ("wifi: ath12k: corregir falla de vaciado en escenarios de recuperación") agregó el cambio para disminuir el conteo de paquetes pendientes en caso de recuperación, lo que tiene sentido ya que ah->hw y todos los ar en él están intactos durante la recuperación, pero durante la desincialización del núcleo no tiene sentido disminuir el conteo de paquetes o despertar el waitq vacío ya que el módulo también se eliminará. Los paquetes de skb pendientes no se pueden usar y los paquetes deberían simplemente liberarse. Para solucionar esto, evite acceder a ar desde skb->cb cuando se está anulando el registro del controlador. Probado en: QCN9274 hw2.0 PCI WLAN.WBE.1.1.1-00214-QCAHKSWPL_SILICONZ-1 Probado en: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3
Impacto
Puntuación base 3.x
7.80
Gravedad 3.x
ALTA
Productos y versiones vulnerables
CPE | Desde | Hasta |
---|---|---|
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.10 (incluyendo) | 6.11.11 (excluyendo) |
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.12 (incluyendo) | 6.12.2 (excluyendo) |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página