Fallo en kernel de Linux permite escalación de privilegios

Recientemente se ha descubierto una vulnerabilidad que afecta varias versiones del kernel de Linux la cual podría activarse con mínimas capacidades. Esta vulnerabilidad ha sido rastreada como CVE-2023-3269 y permitiría comprometer el kernel y realizar escalación de privilegios en el sistema.

Se ha encontrado un fallo en el manejo de la expansión de la pila en el kernel de Linux 6.1 a 6.4, también conocido como “Stack Rot”. Según lo explica el investigador Ruihan Li la vulnerabilidad afecta el subsistema de gestión de memoria del kernel, el cual es un componente encargado de implementar la memoria virtual y la paginación a petición, asignación de memoria para las necesidades del kernel, así como mapear archivos dentro del espacio de direcciones de los procesos.

Si bien, la vulnerabilidad fue reportada el 15 de junio, no seria sino hasta dos semanas después que se presentara una solución al problema, esto debido a la complejidad de este, con Linus Torvalds liderando los esfuerzos de la creación de la solución. El 28 de junio, durante la ventana de fusión para el kernel de Linux 6.5, la corrección se fusionó en el árbol de Linus. Linus proporcionó un mensaje de fusión completo para aclarar la serie de parches desde una perspectiva técnica.

StackRot

Este surge de la gestión que hace el kernel de Linux, de la expansión de la pila en el subsistema de gestión de la memoria, relacionado a la gestión de zonas de memoria virtual o VMAs, por sus siglas en ingles.

De manera más específicamente, el lugar de origen de este problema se encuentra en “maple tree” el cual es un nuevo sistema de estructura de datos para zonas de memoria virtual, introducidas en el kernel de Linux versión 6.1, el cual llega a remplazar el “Red-Black tres” y se basaba en el mecanismo de lectura-copia-actualización o RCU (read-copy-update).

La vulnerabilidad hace referencia a un problema de use-after-free o UAF, derivado de la manera en que se gestiona la pila de expansión ya que el “maple tree” podría remplazar un nodo, sin obtener el bloque de escritura de la gestión de memoria.

A medida que el kernel de de Linux expande la pila y remueve la brecha entre VMAs, un nuevo nodo es creado en el “maple tree” y el nuevo se marca para ser eliminado luego de que la lectura actual termina debido a la seguridad del RCU del maple tree.

Sin embargo, durante el periodo de gracia del RCU un problema de use-after-free puede ocurrir cuando un proceso accede a un nodo antiguo, creando así un contexto explotable para elevar privilegios.

Según lo hacia notar Ruihan Li, la explotación de StackRot es una tarea complicada y un completo reto, a su vez que indicaba que probablemente CVE-2023-3269, es el primer ejemplo de vulnerabilidad explotable de use-after-free-by-RCU, y se espera que se tengan detalles técnicos completos sobre StackRot y una prueba de conceptos de este para finales de julio.

A pesar de que la versión del kernel de Linux 6.1 ha sido aprobado como un apoyo a largo plazo (LTS) no todas las distribuciones de Linux lo han adoptado, los usuarios deben chequear la versión de kernel que se encuentra corriendo en su distribución de Linux y seleccionar alguna que no se encuentre afectada por StackRot o bien, una versión actualizada que contenga la corrección.

 

Related Post