Vulnerabilidad en glibc que permite obtener acceso root en el sistema

La empresa Qualys ha descubierto una vulnerabilidad crítica (CVE-2023-6246) en la biblioteca estándar de C, Glibc, que permite ejecutar código con privilegios elevados a través de manipulaciones al iniciar aplicaciones SUID. Los investigadores han logrado desarrollar un exploit funcional que permite obtener derechos de root mediante la manipulación de los argumentos de la línea de comandos al ejecutar la utilidad su.

La vulnerabilidad es causada por un desbordamiento de búfer en la función __vsyslog_internal(), utilizada al llamar a las funciones syslog() y vsyslog(). El problema surge de un error al intentar imprimir un nombre de aplicación demasiado largo a través del macro SYSLOG_HEADER. Al intentar expandir el búfer para acomodar el nombre largo, se produce un fallo, después del cual los datos se escriben en el viejo búfer de tamaño original más pequeño.

Al organizar un ataque a través de la utilidad su, el atacante puede cambiar el nombre del proceso al iniciar la aplicación al reemplazar el valor de argv[0], que se utiliza para obtener información sobre el nombre del programa al registrarlo, y lograr una sobrescritura controlada de datos más allá del búfer asignado. Posteriormente, el desbordamiento puede utilizarse para sobrescribir la estructura nss_module en la biblioteca nss para crear una biblioteca compartida y cargarla con derechos de root.

El problema se manifiesta a partir del lanzamiento de glibc 2.37, publicado en agosto de 2022 e incluye un cambio que maneja la situación de intentar escribir mensajes demasiado grandes. La corrección que introdujo la vulnerabilidad fue retroportada a la rama glibc 2.36 y en paquetes de distribuciones con versiones más antiguas de glibc, ya que la corrección marcada eliminaba la vulnerabilidad CVE-2022-39046, que conduce a la filtración de datos de la memoria dinámica. Así, la solución de una vulnerabilidad no peligrosa condujo a la aparición de un problema crítico. Es notable que se informó de una vulnerabilidad similar en la función vsyslog() de la biblioteca libc 5.4.3 ya en 1997.

La vulnerabilidad ha sido confirmada en Debian 12/13, Ubuntu 23.04/23.10 y Fedora 37-39. Se ha demostrado el funcionamiento del exploit para que un usuario no privilegiado obtenga derechos de root en un entorno Fedora 38 completamente actualizado, con todos los mecanismos de protección habilitados por defecto. La vulnerabilidad solo puede ser explotada localmente, ya que requiere la transmisión de más de 1024 bytes a través del parámetro argv[0] o el argumento ident en la función openlog().

La corrección de la vulnerabilidad se incluyó hace varias horas en la base de código de Glibc y formará parte de la actualización de Glibc 2.39 que saldrá mañana, junto con la corrección de otras dos vulnerabilidades (CVE-2023-6779, CVE-2023-6780), que también afectan el código __vsyslog_internal() y provocan desbordamiento de búfer. Además, la empresa Qualys ha advertido sobre la aparición de un desbordamiento de búfer en la implementación de la función qsort(), que los desarrolladores de Glibc no han clasificado como vulnerabilidad, ya que la explotación implica el uso de una función de comparación atípica como argumento en la llamada a qsort, que devuelve la diferencia entre los parámetros comparados.

El estado de las correcciones de vulnerabilidades en las distribuciones se puede evaluar en las siguientes páginas: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo, Slackware. Se puede probar la vulnerabilidad de un sistema con el siguiente comando: $ (exec -a "`printf ‘28000x’ 1`" /usr/bin/su < /dev/null)
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