CVE-2023-4911 Looney Tunables

CVE-2023-4911 Looney Tunables

Celia Catalán


En el año 2023, el equipo de Qualys reportó una vulnerabilidad con una alta criticidad que afectaba a una gran cantidad de versiones de Linux. Esta consistía en una escalada de privilegios locales al aprovechar el desbordamiento del búfer en el cargador dinámico de la biblioteca GNU C (glibc). 

El cargador dinámico al procesar la variable de entorno GLIBC_TUNABLES produce este desbordamiento, y un agente malicioso podría utilizar esta variable para iniciar archivos binarios con permisos de SUID, lo que le permitiría ejecutar código con privilegios elevados. 

Para replicar esta vulnerabilidad se implementó un entorno de pruebas. En primer lugar, hay que acceder a la maquina vulnerable: 

Zerolynx: conexión por SSH a la máquina vulnerable


Para realizar la explotación se tiene que entender el POC que se proporciona. 

El cargador dinámico utiliza las variables de entorno gclib_tunables, que permiten a los desarrolladores alterar dinámicamente el comportamiento de la biblioteca en tiempo de ejecución. 

En este caso, el código busca cualquier variable gclib_tunables en las variables de entorno y las copia a una nueva variable. La vulnerabilidad surge cuando la variable contiene entradas inesperadas, ya que no son manejadas con seguridad y provocando un desbordamiento del búfer. 

Como requisito de explotación se debe contar con: 

  • Ejecución de código con privilegios limitados en un sistema vulnerable. 

PoC


Tras comprobar que es vulnerable a Looney Tunables, con la ayuda del archivo gen_libc.py, el cual en este caso se encuentra ya dentro de la máquina, la ejecutamos para generar el exploit. 

Zerolynx: Uso del archivo Gen_Libc.py


El siguiente paso es compilar el exploit utilizando GCC. El archivo que hay que compilar es el exp.c  

Zerolynx: malware ejecutable generado

Tras la ejecución de ambos comandos se habrán generado dos archivos, las POC necesarios para la explotación de la vulnerabilidad: 
  • Un ejecutable: “exp” 
  • El exploit: “lib.so.6” 

Zerolynx:. ejecución de malware

Tras la ejecución del archivo que contenía el exploit, después de un breve periodo de tiempo se puede observar como la explotación se ha completado y se ha conseguido realizar la escalada de privilegios exitosamente. 

Conclusión 

Esta vulnerabilidad en la biblioteca GNU C (glibc) subraya la importancia de una gestión segura de las variables de entorno en sistemas Linux. Para mitigar concretamente esta vulnerabilidad se debe actualizar el paquete glibc a las nuevas versiones disponibles en conjunto se debe comprobar que los cambios se han aplicado de forma satisfactoria.

Javier Muñoz, Analista de Ciberseguridad en Zerolynx
Jorge Ezequiel de Francisco, Analista de Ciberseguridad en Zerolynx.
Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.