Vulnerabilidad en Glibc ld.so que permite obtener permisos de root en el sistema.

La empresa Qualys ha descubierto una vulnerabilidad crítica (CVE-2023-4911) en el enlazador ld.so, que se incluye en la biblioteca C del sistema Glibc (GNU libc). Esta vulnerabilidad permite a un usuario local elevar sus privilegios en el sistema al especificar datos especialmente diseñados en la variable de entorno GLIBC_TUNABLES antes de ejecutar un archivo ejecutable con la bandera suid root, por ejemplo, /usr/bin/su.

Se ha demostrado la posibilidad de explotar con éxito esta vulnerabilidad en Fedora 37 y 38, Ubuntu 22.04 y 23.04, Debian 12 y 13. Se presume que la vulnerabilidad también se presenta en otras distribuciones que utilizan Glibc. Las distribuciones basadas en la biblioteca C Musl, como Alpine Linux, no están afectadas por este problema. La vulnerabilidad se ha corregido en un parche añadido el 2 de octubre. Se puede seguir la liberación de actualizaciones de paquetes en las páginas de Debian, Ubuntu, RHEL, SUSE/openSUSE, Fedora, Arch, Gentoo, ALT Linux.

La vulnerabilidad es el resultado de un cambio realizado en abril de 2021 que fue incluido en el lanzamiento de glibc 2.34. Debido a un error en el código de análisis de la cadena especificada en la variable de entorno GLIBC_TUNABLES, una combinación incorrecta de parámetros en esta variable provoca que el valor analizado se escriba fuera del búfer asignado. El problema se presenta cuando, en lugar de las secuencias normales "name=val", los parámetros se especifican en la forma de doble asignación "name=name=val". En este caso, la asignación se procesa dos veces, primero como "name=name=val", y luego como "name=val". Debido a este doble procesamiento, el resultado "name=name=val:name=val" excede el tamaño del búfer tunestr.

Investigadores han preparado un exploit que funciona de manera estable, permitiendo obtener privilegios de root al aplicarse con casi cualquier programa que tenga el flag suid root. Las excepciones son la utilidad sudo (que modifica el valor de ELF RUNPATH), las utilidades chage y passwd en Fedora (que están protegidas por reglas específicas de SELinux) y la utilidad snap-confine en Ubuntu (que está protegida por reglas específicas de AppArmor). El método de explotación propuesto también no funciona en RHEL 8 y RHEL 9, aunque estas versiones son susceptibles a la vulnerabilidad (se requiere crear un exploit diferente para el ataque). El código del exploit se publicará más adelante, después de que se haya eliminado la vulnerabilidad en todas partes. Para verificar la susceptibilidad de su sistema a la vulnerabilidad, puede utilizar el siguiente comando, que fallará si hay un problema: env -i "GLIBC_TUNABLES=glibc.malloc.mxfast=glibc.malloc.mxfast=A" "Z=`printf ‘192x’ 1`" \/usr\/bin\/su —help

Se destaca por separado la corrección de otras dos vulnerabilidades en Glibc:

  • CVE-2023-4806 — acceso a un área de memoria ya liberada (use-after-free) en la función getaddrinfo(), que se manifiesta cuando el plugin NSS solo implementa las llamadas de retorno "_gethostbyname2_r" y "_getcanonname_r", pero no soporta la llamada "_gethostbyname3_r". Para explotar la vulnerabilidad, el servidor DNS debe devolver un gran número de direcciones IPv6 e IPv4 para el host solicitado, lo que provocará un fallo en el proceso que realizó la función getaddrinfo para la familia AF_INET6 al establecer las banderas AI_CANONNAME, AI_ALL y AI_V4MAPPED.
  • CVE-2023-5156 — fuga de contenido de memoria al llamar a la función getaddrinfo para la familia de direcciones AF_INET6 con las banderas AI_CANONNAME, AI_ALL y AI_V4MAPPED.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster