Hace pocos días, se dio a conocer la noticia de que la Agencia de Seguridad de Infraestructura y Ciberseguridad de EE. UU. (CISA) ha emitido una advertencia sobre una vulnerabilidad crítica en Linux que se está explotando activamente y que además hace un llamado a los usuarios a actualizar sus sistemas de inmediato.
Para quienes desconocen de la CISA, debe saber que esta es la agencia responsable de la ciberseguridad y la protección de la infraestructura en todos los niveles de gobierno de EE. UU. Coordina programas de ciberseguridad con los estados de EE. UU. y mejora las protecciones gubernamentales contra ataques de informáticos.
Sobre la advertencia que emitió la CISA, se menciona que la vulnerabilidad, identificada como CVE-2024-1086, tiene una calificación de gravedad de 7.8 sobre 10 y esta permite a individuos que ya han comprometido un sistema elevar sus privilegios.
Este tipo de vulnerabilidad, conocida como «uso después de la liberación», en el componente netfilter. El problema radica en nf_tables del kernel de Linux el cual puede explotarse para lograr una escalada de privilegios local.
Este tipo de vulnerabilidades son vectores de ataque frecuentes para ciberataques maliciosos y plantean riesgos importantes para la empresa federal.
La función nft_verdict_init() permite valores positivos como error de eliminación dentro del veredicto del gancho y, por lo tanto, la función nf_hook_slow() puede causar una vulnerabilidad doble libre cuando NF_DROP se emite con un error de eliminación similar a NF_ACCEPT.
Se menciona que la vulnerabilidad afecta a las versiones del kernel de Linux desde la 5.14 hasta la 6.6 y como tal la vulnerabilidad reside en NF_tables, un componente del núcleo que facilita el filtrado de red. Esto incluye operaciones como el filtrado de paquetes, la traducción de direcciones de red y puertos (NAT), el registro de paquetes, la colocación de paquetes en colas en el espacio de usuario y otras manipulaciones de paquetes. Aunque la vulnerabilidad fue parcheada en enero, según el aviso de CISA, algunos sistemas de producción aún no han aplicado la actualización.
La Directiva operativa vinculante (BOD) 22-01: Reducción del riesgo significativo de vulnerabilidades explotadas conocidas estableció el Catálogo de vulnerabilidades explotadas conocidas como una lista viva de vulnerabilidades y exposiciones comunes (CVE) conocidas que conllevan un riesgo significativo para la empresa federal. BOD 22-01 requiere que las agencias del Poder Ejecutivo Civil Federal (FCEB) remedien las vulnerabilidades identificadas antes de la fecha límite para proteger las redes de la FCEB contra amenazas activas. Consulte la hoja informativa BOD 22-01 para obtener más información.
Aunque BOD 22-01 solo se aplica a las agencias FCEB, CISA insta encarecidamente a todas las organizaciones a reducir su exposición a ataques cibernéticos priorizando la remediación oportuna de las vulnerabilidades del Catálogo como parte de su práctica de gestión de vulnerabilidades. CISA continuará agregando vulnerabilidades al catálogo que cumplan con los criterios especificados .
Dado que CVE-2024-1086 es una vulnerabilidad ya conocida, se lanzaron exploits que afectan a las versiones vulnerables del Kernel desde (incluida) v5.14 hasta (incluida) v6.6, excluyendo las ramas parcheadas v5.15.149>, v6.1.76>, v6.6.15>. El parche para estas versiones se lanzó en febrero de 2024 y la vulnerabilidad subyacente afecta a todas las versiones (excluidas las ramas estables parcheadas) desde la v3.15 hasta la v6.8-rc1
El autor del exploit explica que para desencadenar el error que provoca la doble liberación, agrego una regla de Netfilter a un espacio de nombres de usuario sin privilegios. La regla de Netfilter contiene una expresión que establece un valor de veredicto malicioso, lo que hará que el código interno del kernel nf_tables interprete NF_DROPal principio, después de lo cual liberará el skb y luego regresará NF_ACCEPT para que el manejo de paquetes continúe y liberará dos veces el skb. Luego, activo esta regla asignando un paquete IP de 16 páginas (para que lo asigne el asignador de amigos y no el asignador de PCP o el asignador de losa, y comparta un caché entre CPU) que tiene el tipo de migración 0.
Para retrasar la segunda liberación (para poder evitar la corrupción al hacer cosas), abuso de la lógica de fragmentación de IP de un paquete IP. Esto permite hacer que un skb espere en una cola de fragmentación de IP sin ser liberado durante una cantidad arbitraria de segundos. Para atravesar esta ruta de código con metadatos de paquetes corruptos, falsifico la dirección IP de origen 1.1.1.1 y la dirección de destino 255.255.255.255.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.