Se ha divulgado una prueba de concepto de exploit de criticidad alta (PoC) que afecta una vulnerabilidad importante identificada como CVE-2024-26809 en el subsistema nftables del kernel de Linux.
Esta falla, inherente a la infraestructura netfilter del kernel, permite a atacantes locales escalar sus privilegios a nivel de raíz mediante una sofisticada técnica de doble liberación.
Investigadores de seguridad, incluyendo al usuario «conlonialC», han demostrado la viabilidad de utilizar este error para obtener acceso de superusuario, lo que enfatiza la necesidad urgente de que los administradores de sistemas implementen las actualizaciones de seguridad disponibles.
La vulnerabilidad reside en el subsistema nftables, que está diseñado para reemplazar los marcos de filtrado de paquetes heredados como iptables e ip6tables.
nftables se basa en varios componentes centrales del kernel, incluida la estructura nft_set_pipapo, para administrar conjuntos de reglas de filtrado.
La falla afecta específicamente a la función nft_pipapo_destroy() dentro del módulo net/netfilter del kernel.
Bajo ciertas condiciones, esta función puede intentar liberar la misma región de memoria dos veces (un escenario clásico de doble liberación) cuando un conjunto está marcado como «sucio» y contiene elementos superpuestos tanto en sus representaciones de «coincidencia» como de «clon».
La ruta del código vulnerable se puede resumir de la siguiente manera:
Aquí, si el conjunto está sucio, se puede llamar a nft_set_pipapo_match_destroy() dos veces en elementos que existen tanto en «coincidencia» como en «clon», lo que lleva a una condición de doble liberación.
El exploit PoC publicado, escrito por conlonialC, demuestra meticulosamente cómo aprovechar esta vulnerabilidad para escalar privilegios locales.
El ataque comienza con la creación de un conjunto de pipapo y la inserción de múltiples elementos para garantizar que el conjunto esté marcado como sucio.
Luego, el atacante desencadena la destrucción del conjunto, lo que hace que el núcleo libere los mismos elementos del conjunto dos veces. Esta doble liberación corrompe el montón del kernel, específicamente apuntando a la caché de objetos kmalloc-256, que se usa comúnmente para las asignaciones de objetos del kernel.
Al orquestar cuidadosamente las asignaciones y desasignaciones del montón, el exploit logra varios objetivos avanzados:
Superposición de objetos nftables en la memoria para permitir fugas de direcciones.
Secuestro de punteros de funciones, como expr->ops->dump, para redirigir el flujo de ejecución del kernel.
Ejecutar una cadena de programación orientada al retorno (ROP) para escalar privilegios y generar un shell raíz.
Una parte crucial del exploit implica manipular las estructuras de datos internas del kernel para obtener control sobre el puntero de instrucción (RIP).
El atacante crea un objeto nft_expr falso y utiliza un dispositivo ROP para hacer pivotar la pila y, en última instancia, ejecuta código arbitrario en el contexto del kernel.
La confiabilidad del exploit se ve reforzada por su capacidad de recuperar fragmentos de montón liberados y filtrar direcciones del kernel, evitando las mitigaciones comunes.
El siguiente extracto ilustra la manipulación del montón y la configuración de ROP utilizadas en la prueba de concepto:
Esta secuencia demuestra cómo el atacante redirige la ejecución a un dispositivo ROP personalizado, lo que culmina con el acceso raíz.
La vulnerabilidad CVE-2024-26809 impacta a las versiones del kernel de Linux 5.15.54 y posteriores, incluyendo las ramas de soporte a largo plazo (LTS) 6.1 y 6.6.
Esta vulnerabilidad ha sido corregida mediante actualizaciones recientes del kernel, y distribuciones como Debian, Ubuntu y SUSE han publicado parches para todas las versiones con soporte.
La solución implementada asegura que los elementos sean liberados únicamente desde la ruta del «clon» durante la destrucción del conjunto, previniendo así condiciones de doble liberación.
Se exhorta enfáticamente a los administradores de sistemas a aplicar las actualizaciones de seguridad más recientes a la brevedad. Los sistemas que no sean actualizados permanecen susceptibles a ataques locales que podrían explotar esta vulnerabilidad para obtener control total sobre los equipos afectados.
La divulgación pública de un exploit funcional para CVE-2024-26809 representa una intensificación considerable en el panorama de amenazas para servidores y estaciones de trabajo Linux.
El exploit evidencia técnicas avanzadas de manipulación de memoria dinámica y explotación del kernel, convirtiéndolo en una herramienta potente para los atacantes.
La implementación oportuna de parches y la observancia de las mejores prácticas de seguridad son fundamentales para mitigar el riesgo que presenta esta vulnerabilidad.