Identificaron una vulnerabilidad en la biblioteca GNU C
Hace poco se dio a conocer información sobre una vulnerabilidad que afecta a la biblioteca C estándar Glibc, catalogada bajo «CVE-2023-6246» y una puntuación de 8.4 en la escala CVSS, fue identificada por investigadores de Qualys.
La vulnerabilidad CVE-2023-6246 permite la manipulación del inicio de aplicaciones SUID para ejecutar código con privilegios elevados y se origina en un desbordamiento de búfer en las funciones «vsyslog_internal()» utilizadas al llamar a las funciones «syslog()» y «vsyslog()».
Sobre CVE-2023-6246
Este problema se produce debido a un error al intentar generar un nombre de aplicación que es demasiado largo a través de la macro SYSLOG_HEADER. Al intentar expandir un búfer basado en un nombre largo, se produce un desbordamiento, lo que resulta en la escritura de datos en el búfer original de tamaño más pequeño.
Las vulnerabilidades identificadas en las funciones syslog y qsort de glibc resaltan un aspecto crítico de la seguridad del software: incluso los componentes más fundamentales y confiables no son inmunes a las fallas. Las ramificaciones de estas vulnerabilidades se extienden mucho más allá de los sistemas individuales y afectan a muchas aplicaciones y potencialmente a millones de usuarios en todo el mundo. Este artículo pretende arrojar luz sobre la naturaleza específica de estas vulnerabilidades, sus posibles impactos y las medidas adoptadas para mitigarlos.
Al organizar un ataque a través de la utilidad SU, un atacante puede cambiar el nombre del proceso cuando se inicia la aplicación reemplazando el valor argv[0], que se utiliza para obtener información sobre el nombre del programa al enviar al registro y lograr un control de sobrescritura de datos fuera del búfer asignado. Luego, el desbordamiento se puede utilizar para sobrescribir la estructura nss_module en la biblioteca nss para crear una biblioteca compartida y cargarla como root
El problema ha estado presente desde el lanzamiento de glibc 2.37, publicado en agosto de 2022, el cual incluyó un cambio para manejar la situación de intentar escribir mensajes demasiado grandes. La solución se actualizó a glibc 2.36 y a los paquetes de distribución con versiones anteriores de glibc porque abordaba la vulnerabilidad mientras se solucionaba una vulnerabilidad diferente y menos grave. Resultó que solucionar una vulnerabilidad no peligrosa provocó la aparición de un problema crítico. Es notable mencionar que en 1997 se informó de una vulnerabilidad similar en la función vsyslog() de la biblioteca libc 5.4.3.
El descubrimiento de vulnerabilidades en las funciones syslog y qsort de la biblioteca GNU C plantea importantes preocupaciones de seguridad.
Los investigadores de Qualys que descubrieron la vulnerabilidad probaron varios sistemas de instalación populares basados en Linux y confirmaron que varios de ellos eran vulnerables, como Debian 12/13, Ubuntu 23.04/23.10 y Fedora 37-39.
Para demostrar la vulnerabilidad, los investigadores han desarrollado un exploit funcional que permite obtener derechos de root manipulando los argumentos de la línea de comando al ejecutar la utilidad SU. El exploit se demostró la capacidad de obtener derechos de root por parte de un usuario sin privilegios y se ejecuto bajo un entorno Fedora 38 completamente actualizado con todos los mecanismos de protección habilitados en la configuración predeterminada. La vulnerabilidad solo puede explotarse localmente, ya que requiere pasar más de 1024 bytes a través del parámetro argv[0] o el argumento ident a la función openlog().
Por la parte de la corrección de la vulnerabilidad, se menciona que ya se incluyó en el código base de Glibc y será parte de la actualización de Glibc 2.39, junto con las correcciones para dos vulnerabilidades más (CVE-2023-6779, CVE-2023-6780) que también afectan el código __vsyslog_internal() y provocan desbordamientos del buffer.
Además, Qualys advirtió sobre la identificación de un desbordamiento del buffer en la implementación de la función qsort(), que no fue clasificada por los desarrolladores de Glibc como una vulnerabilidad, ya que la explotación implica el uso de una función de comparación atípica como argumento al llamar a qsort, que devuelve la diferencia de los parámetros comparados.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar el estado de la vulnerabilidad en páginas: Debian, Ubuntu, SUSE, RHEL, Fedora, Arch Linux, Gentoo y Slackware
Fuente: https://blog.qualys.com