Investigadores han revelado una vulnerabilidad crítica en el núcleo de Linux que podría permitir a los atacantes eludir las protecciones del CPU y obtener acceso no autorizado a la memoria del sistema. Esta falla, identificada como CVE-2024-43856, se encuentra en la función dmam_free_coherent()
y se origina por una condición de carrera debido al orden incorrecto en la liberación de las asignaciones de Acceso Directo a Memoria (DMA) y la gestión de recursos asociados.
Detalles de la Vulnerabilidad
El DMA es una función esencial que permite a los dispositivos de hardware transferir datos directamente hacia y desde la memoria del sistema sin intervención del CPU, lo que mejora el rendimiento general. La función dmam_free_coherent()
se encarga de liberar una asignación DMA y eliminar la estructura de datos asociada utilizada para rastrearla.
Sin embargo, una falla en este proceso podría inducir inestabilidades en el sistema, corrupción de datos, comportamientos inesperados o incluso bloqueos del sistema. El problema surge de una condición de carrera donde una tarea concurrente podría reasignar la misma dirección virtual de memoria y agregarla a la lista de seguimiento antes de eliminar la entrada original.
Si se explota esta vulnerabilidad, el resultado podría ser que la función devres_destroy
libere la entrada incorrecta, activando una aserción WARN_ON
en la función dmam_match
. Esto permitiría a los atacantes manipular las asignaciones de memoria, lo que podría llevar a brechas de seguridad severas.
El Parche – CVE-2024-43856
En respuesta a esta vulnerabilidad, se ha implementado un nuevo parche en el núcleo de Linux, desarrollado por Lance Richardson de Google y revisado por Greg Kroah-Hartman. La solución implica un cambio en el orden de las llamadas a las funciones para garantizar que la estructura de datos de seguimiento se destruya con devres_destroy
antes de que la asignación DMA se libere con dma_free_coherent
.
Este ajuste previene la posibilidad de que una tarea concurrente interfiera con el proceso de limpieza, abordando la falla identificada. El parche ha sido probado en el proyecto de cifrado de red «kokonut» de Google y ha sido aprobado por Christoph Hellwig y Sasha Levin, indicando su idoneidad para incluirse en el núcleo principal de Linux.
Impacto y Recomendaciones
Aunque explotar la vulnerabilidad de dmam_free_coherent()
para escribir datos arbitrarios en la memoria del CPU sería complejo y altamente dependiente de configuraciones específicas del sistema, el parche ofrece una salvaguarda crucial contra posibles ataques. Esta situación subraya la importancia de la vigilancia y la colaboración continua dentro de la comunidad de código abierto para proteger contra amenazas emergentes.
El caso destaca el compromiso de la comunidad de desarrolladores para identificar y corregir posibles errores, asegurando un sistema operativo más estable y confiable para los usuarios a nivel mundial. A medida que el núcleo de Linux sigue evolucionando y alimentando una vasta gama de dispositivos, abordar vulnerabilidades como CVE-2024-43856 es esencial para mantener la seguridad y la integridad global de los sistemas.
vía: GBHackers