La vulnerabilidad StackRot (CVE-2023-3269) fue descubierta e informada por el investigador de seguridad Ruihan Li. Según Li, esta vulnerabilidad afecta al subsistema de administración de memoria del kernel de Linux, que es responsable de implementar la memoria virtual, la paginación de demanda y la asignación de memoria para los programas del kernel y del espacio de usuario.
StackRot afecta a todas las configuraciones del kernel en las versiones de Linux 6.1 a 6.4, lo que implica una amplia gama de sistemas afectados.
Si bien Li informó inicialmente sobre esta vulnerabilidad el 15 de junio, la creación de una solución efectiva tomó casi dos semanas debido a su complejidad. Linus Torvalds, el creador del kernel de Linux, lideró los esfuerzos para abordar este problema de seguridad.
Detalles técnicos de StackRot
La vulnerabilidad StackRot se origina en el manejo de la expansión de la pila dentro del subsistema de administración de memoria del kernel. Específicamente, el punto débil se encuentra en el Maple Tree, un nuevo sistema de estructura de datos para la administración de áreas de memoria virtual (VMA) introducido en el kernel 6.1 de Linux. Este árbol se basa en el mecanismo de lectura-copia-actualización (RCU por sus siglas en inglés) y reemplazó a los Red-Black Tree.
La vulnerabilidad se aprovecha de un problema de uso después de liberar (UAF por sus siglas en inglés), que ocurre cuando el árbol reemplaza un nodo sin obtener el bloqueo de escritura de administración de memoria (MM).
Es importante destacar que explotar la vulnerabilidad StackRot no es una tarea sencilla. Ruihan Li afirma que esta podría ser la primera vulnerabilidad de Use-After-Free-By-RCU (UAFBR) teóricamente explotable.
Medidas para mitigar el riesgo de la vulnerabilidad StackRot
Esto se logró gracias a los esfuerzos de Linus Torvalds y su equipo, quienes fusionaron la solución en el árbol principal del kernel de Linux durante la ventana de fusión para el kernel 5.5.
«El 28 de junio, durante la ventana de fusión para el kernel 5.5 de Linux, la solución se fusionó en el árbol de Linus. Linus proporcionó un mensaje de fusión completo para dilucidar la serie de parches desde una perspectiva técnica. Estos parches se trasladaron posteriormente a kernels estables (6.1.37, 6.3.11 y 6.4.1), resolviendo efectivamente el error Stack Rot el 1 de julio», aclaró el investigador.
Sin embargo, se espera que se publiquen detalles técnicos completos sobre StackRot, así como un exploit de prueba de concepto (PoC) a finales de julio.
Esto significa que los ciberdelincuentes podrían intentar aprovechar la vulnerabilidad antes de que se implementen las soluciones completas. Por lo tanto, es fundamental que los usuarios tomen medidas proactivas para protegerse.
Para mitigar los riesgos asociados con la vulnerabilidad StackRot, se recomienda a los usuarios verificar la versión del kernel de Linux que están utilizando en su distribución y asegurarse de no estar ejecutando una versión afectada por esta vulnerabilidad.
Si se está utilizando una versión vulnerable, se debe actualizar a una versión más reciente que contenga el parche de seguridad. Linux kernel 6.1 ha sido aprobado como la versión de soporte a largo plazo (LTS) desde febrero pero no todas las distribuciones principales de Linux lo han adoptado.
Por ejemplo, Ubuntu 22.04.2 LTS (Jammy Jellyfish) utiliza la versión 5.19 del kernel de Linux, que no se ve afectada por StackRot.
Sin embargo, Debian 12 (Bookworm) utiliza la versión 6.1 y, por lo tanto, es vulnerable a esta vulnerabilidad. Se recomienda a los usuarios consultar la lista completa de distribuciones de Linux que utilizan la versión 6.1 o superior del kernel para verificar si su distribución es vulnerable.
Fuente y redacción: segu-info.com.ar