Después de seis meses de desarrollo, se ha publicado la versión de la biblioteca de C GNU (glibc) 2.40, que cumple completamente con los estándares ISO C11 y POSIX.1-2017. Esta nueva versión incluye correcciones de 68 desarrolladores.
Entre las mejoras implementadas en Glibc 2.40 se destacan:
- Se han añadido nuevas funciones exponenciales y logarítmicas en el archivo de encabezado math.h, definidas en el estándar C23: exp2m1, exp10m1, log2p1, log10p1 y logp1. Las funciones están disponibles en versiones para los tipos float, double, long double, _FloatN y _FloatNx.
- Se ha añadido la macro _ISOC23_SOURCE, que define el uso de las capacidades propuestas en el estándar C23 (actualmente en Glibc se implementa solo una parte de las capacidades de C23). También se puede habilitar el uso de C23 durante la compilación especificando en GCC las opciones -std=c23, -std=gnu23, -std=c2x o -std=gnu2x.
- Se ha añadido la configuración 'glibc.rtld.enable_secure', que permite ejecutar el programa durante las pruebas como si tuviera el flag de cambio de identificador de usuario (setuid).
- En la plataforma Linux, se ha actualizado el archivo de encabezado epoll.h para agregar soporte a las nuevas ioctl y estructuras epoll que han aparecido en el núcleo de Linux 6.9.
- La funcionalidad para detectar posibles desbordamientos de búfer y errores de seguridad durante la ejecución de funciones de manipulación de cadenas y gestión de memoria ('_FORTIFY_SOURCE') se ha adaptado para compilar Glibc con el compilador Clang.
- En la biblioteca de funciones matemáticas vectoriales (libmvec) se han propuesto implementaciones de las funciones acosh, asinh, atanh, cbrt, cosh, erf, erfc, hypot, pow, sinh y tanh para la arquitectura Aarch64.
- En sistemas x86, para acelerar la escritura de grandes conjuntos de datos en la función memset, se ha proporcionado la posibilidad de desactivar el uso de búferes temporales. La optimización se activa mediante la configuración 'x86_memset_non_temporal_threshold'.
- Las macros en el archivo de encabezado stdbit.h, que funcionan con tipos varios (type-generic), se han traducido, al usar GCC 14, para usar las funciones integradas __builtin_stdc_bit_ceil para soportar operandos con tipos __int128 y _BitInt(N).
- Los campos con un contador de tiempo epocal en las estructuras lastlog, utmp y utmpx han sido cambiados de un tipo entero con signo de 32 bits a un tipo sin signo, lo que permite extender el tiempo máximo direccionable por el contador desde 2038 hasta 2106.
- Se han corregido vulnerabilidades:
- CVE-2024-2961 — desbordamiento de búfer al convertir cadenas especialmente formateadas en la codificación ISO-2022-CN-EXT mediante la función iconv(). En la práctica, esta vulnerabilidad puede ser utilizada para un ataque remoto en aplicaciones PHP, que puede llevar a la ejecución de código.
- CVE-2024-33599 — desbordamiento de búfer en el código para trabajar con el caché netgroup en el proceso nscd (Demonio de Caché de Servicio de Nombre). La vulnerabilidad puede ser explotada al enviar una solicitud especialmente formateada por el cliente.
- CVE-2024-33600 — desreferenciación de un puntero nulo en el proceso nscd, que puede llevar a un fallo al procesar ciertas solicitudes.
- CVE-2024-33601 — un error en el manejo del caché netgroup puede llevar a un fallo en el proceso nscd debido a un fallo en la asignación de memoria.
- CVE-2024-33602 — corrupción de memoria al trabajar con el caché netgroup en el proceso nscd.
Fuente: opennet.ru
