Lanzamiento de la biblioteca del sistema Glibc 2.34

Después de seis meses de desarrollo se ha publicado la versión de la biblioteca del sistema GNU C Library (glibc) 2.34, que cumple completamente con los requisitos de los estándares ISO C11 y POSIX.1-2017. La nueva versión incluye correcciones de 66 desarrolladores.

Las mejoras implementadas en glibc 2.34 incluyen:

  • Las bibliotecas libpthread, libdl, libutil y libanl se han integrado en el núcleo de libc, por lo que ya no se requiere enlazarlas en las aplicaciones utilizando las banderas -lpthread, -ldl, -lutil y -lanl. Se ha preparado la integración de libresolv en libc. La integración permitirá lograr un proceso de actualización más cohesivo de glibc y simplificará la implementación en tiempo de ejecución. Para garantizar la compatibilidad hacia atrás con aplicaciones compiladas con versiones anteriores de glibc, se han proporcionado bibliotecas de sustitución. Dado el aumento en el número de estructuras y funciones proporcionadas en glibc, es posible que surjan problemas en aplicaciones donde haya coincidencias de nombres con bibliotecas que no se usaban anteriormente, como libpthread, libdl, libutil, libresolv y libanl.
  • Se ha hecho posible el uso del tipo de dato time_t de 64 bits en configuraciones donde tradicionalmente se utilizaba el tipo de dato time_t de 32 bits. En tales configuraciones, como en sistemas x86, por defecto aún se mantiene el time_t de 32 bits, pero este comportamiento ahora puede modificarse utilizando el macro “_TIME_BITS”. Esta posibilidad está disponible solo en sistemas con un núcleo de Linux de al menos la versión 5.1.
  • Se ha añadido la función _Fork, un reemplazo de la función fork, que cumple con los requisitos de «asíncrono-signal-seguro», es decir, permite llamadas seguras desde manejadores de señales. Durante la ejecución de _Fork, se crea un entorno mínimo suficiente para invocar funciones en los manejadores de señales, como raise y execve, sin utilizar capacidades que puedan alterar bloqueos o el estado interno. La llamada a _Fork se definirá en una futura versión del estándar POSIX, pero por el momento se incluye entre las extensiones de GNU.
  • Para la plataforma Linux se ha implementado la función execveat, que permite ejecutar un archivo ejecutable a partir de un descriptor de archivo abierto. Esta nueva función también se utiliza en la implementación de la llamada fexecve, que no requiere la presencia de un sistema de archivos pseudo-montado /proc al iniciarse.
  • Se ha añadido la función timespec_getres, definida en el borrador de la norma ISO C2X, que complementa la función timespec_get con capacidades similares a la función POSIX clock_getres.
  • Se ha añadido la función close_range(), que permite a un proceso cerrar de una vez un rango completo de descriptores de archivo abiertos. La función está disponible en sistemas con núcleo Linux, como mínimo versión 5.9.
  • Se han añadido las funciones closefrom y posix_spawn_file_actions_addclosefrom_np, que permiten cerrar todos los descriptores de archivo cuyo número sea mayor o igual al valor especificado.
  • En los modos «_DYNAMIC_STACK_SIZE_SOURCE» y «_GNU_SOURCE», los valores PTHREAD_STACK_MIN, MINSIGSTKSZ y SIGSTKSZ ya no son constantes, lo que permite soportar registros de tamaño dinámico, como los proporcionados en la extensión ARM SVE.
  • En el enlazador se ha implementado la opción «—list-diagnostics» para mostrar información relacionada con las operaciones de definición IFUNC (indirect function) y la selección del subdirectorio glibc-hwcaps.
  • Se ha implementado el macro __STDC_WANT_IEC_60559_EXT__, destinado a verificar la presencia de funciones definidas en la aplicación «F» de la norma ISO C2X.
  • Para sistemas powerpc64* se ha implementado la opción «—disable-scv», que permite compilar glibc sin soporte para la instrucción scv.
  • En el archivo gconv-modules se ha dejado solo el conjunto mínimo de módulos gconv básicos, y los demás se han trasladado a un archivo adicional gconv-modules-extra.conf, ubicado en el directorio gconv-modules.d.
  • Para la plataforma Linux se ha implementado el parámetro glibc.pthread.stack_cache_size, que se puede usar para configurar el tamaño de la caché de pila pthread.
  • Se ha declarado obsoleta la función inet_neta del archivo de encabezado , así como varias funciones de uso poco frecuente de (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname, p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_ston) y (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Se recomienda usar bibliotecas separadas para trabajar con DNS en lugar de estas funciones.
  • Se han declarado obsoletas las funciones pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np y pthread_yield, y se recomienda usar pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust y sched_yield en su lugar.
  • Se ha dejado de usar enlaces simbólicos para vincular objetos compartidos instalados a la versión de Glibc. Ahora, tales objetos se instalan tal cual (por ejemplo, libc.so.6 ahora es un archivo, no un enlace a libc-2.34.so).
  • Por defecto, se han deshabilitado las capacidades de depuración en malloc, como MALLOC_CHECK_ (glibc.malloc.check), mtrace() y mcheck(), que se han trasladado a una biblioteca separada libc_malloc_debug.so, a la que también se han movido las funciones obsoletas malloc_get_state y malloc_set_state.
  • En Linux, para el funcionamiento de funciones como shm_open y sem_open, ahora se requiere la existencia del dispositivo /dev/shm.
  • Se han corregido vulnerabilidades:
    • CVE-2021-27645: fallo en el proceso nscd (daemon de caché de nombres) debido a una doble llamada a la función free al procesar solicitudes de netgroup especialmente formateadas.
    • CVE-2021-33574: acceso a un área de memoria ya liberada (use-after-free) en la función mq_notify al usar el tipo de notificación SIGEV_THREAD con un atributo de hilo para el cual se ha establecido una máscara alternativa de vinculación a la CPU. El problema puede provocar un fallo, pero no se excluyen otras variantes de ataque.
    • CVE-2021-35942: un desbordamiento del tamaño del parámetro en la función wordexp puede llevar a un fallo de la aplicación.

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