PoC - CVE-2023-4911 - glibc “Looney Tunables” Local Privilege Escalations

Resumen

Desarrollé una Proof of Concept (PoC) que demuestra una vulnerabilidad de escalada local de privilegios en GNU C Library (glibc), conocida como “Looney Tunables” y registrada como CVE-2023-4911. La vulnerabilidad se origina en un buffer overflow dentro del cargador dinámico (ld.so) al procesar la variable de entorno GLIBC_TUNABLES.

La PoC demuestra cómo, mediante la manipulación controlada de variables de entorno y la ejecución de binarios con bit SUID habilitado, es posible corromper el estado interno del cargador dinámico y forzar la ejecución de código con privilegios elevados. El exploit fue publicado y verificado en Exploit Database (EDB-ID 52479).

Detalle técnico

  • Producto afectado: GNU C Library (glibc)

  • Versiones afectadas: 2.34 hasta < 2.39

  • CVE: CVE-2023-4911

  • Componente vulnerable: Dynamic Loader (ld.so)

  • Vector de ataque: Manipulación de la variable de entorno GLIBC_TUNABLES

  • Tipo de vulnerabilidad: Heap-based Buffer Overflow / Out-of-bounds Write

  • Impacto: Local Privilege Escalation (LPE)

  • Plataforma: Linux

Descripción de la PoC

La PoC explota un desbordamiento de memoria en el procesamiento de GLIBC_TUNABLES, que permite sobrescribir estructuras internas del cargador dinámico.

El exploit realiza las siguientes acciones:

  • Construcción de variables de entorno especialmente diseñadas para provocar el desbordamiento.

  • Manipulación del estado del cargador dinámico.

  • Alteración del comportamiento de carga de bibliotecas compartidas.

  • Ejecución de un binario SUID (/usr/bin/su) con un entorno manipulado.

  • Obtención de ejecución de código en contexto privilegiado (root).

La PoC incluye la generación de una versión modificada de libc.so.6 con shellcode embebido, demostrando la posibilidad de control de flujo y ejecución arbitraria en sistemas vulnerables.

No requiere interacción del usuario ni acceso remoto: el vector es puramente local.

Comportamiento demostrado

  • Corrupción de memoria en el cargador dinámico (ld.so).

  • Control parcial de estructuras internas del proceso.

  • Manipulación de carga de bibliotecas dinámicas.

  • Ejecución de código con privilegios elevados.

  • Escalada efectiva a root en entornos vulnerables.

Entorno de pruebas

  • Sistema operativo: Ubuntu 22.04.3 LTS (x64)

  • Versión glibc: 2.35-0ubuntu3.3

  • Arquitectura: x86_64

  • Escenario: Laboratorio controlado

Impacto

Un atacante local con acceso al sistema puede:

  • Escalar privilegios hasta root.

  • Comprometer completamente la confidencialidad, integridad y disponibilidad del sistema.

  • Realizar movimientos laterales en entornos multiusuario.

  • Bypassear mecanismos de aislamiento basados únicamente en permisos estándar de usuario.

Dado que afecta al cargador dinámico del sistema, el impacto es crítico en entornos Linux vulnerables.

Mitigaciones recomendadas

  • Actualizar glibc a versiones parcheadas (≥ 2.39 o versiones corregidas por el vendor).

  • Aplicar parches de seguridad proporcionados por la distribución.

  • Restringir el uso de binarios SUID innecesarios.

  • Implementar controles de endurecimiento del sistema (hardening).

  • Monitorizar ejecuciones anómalas de binarios privilegiados.

Referencias

triangle-exclamation

Last updated