Versión de la biblioteca del sistema Glibc 2.34

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

Algunas de las mejoras implementadas en Glibc 2.34 incluyen:

  • Las bibliotecas libpthread, libdl, libutil y libanl están integradas en la estructura principal de libc; el uso de su funcionalidad en aplicaciones ya no requiere vinculación utilizando los indicadores -lpthread, -ldl, -lutil y -lanl. Se han hecho preparativos para la integración de libresolv en libc. La integración permitirá un proceso de actualización de glibc más fluido y simplificará la implementación del tiempo de ejecución. Se proporcionan bibliotecas de código auxiliar para brindar compatibilidad con aplicaciones creadas con versiones anteriores de glibc. Debido a la expansión del número de estructuras y funciones proporcionadas en glibc, pueden surgir problemas en aplicaciones en las que hay una intersección de nombres con bibliotecas libpthread, libdl, libutil, libresolv y libanl no utilizadas anteriormente.
  • Proporciona la posibilidad de utilizar un tipo time_t de 64 bits en configuraciones que tradicionalmente utilizaban un tipo time_t de 32 bits. En tales configuraciones, por ejemplo en sistemas x86, el valor predeterminado sigue siendo time_t de 32 bits, pero este comportamiento ahora se puede cambiar usando la macro "_TIME_BITS". Esta función solo está disponible en sistemas con al menos la versión 5.1 del kernel de Linux.
  • Se agregó la función _Fork, un reemplazo de la función fork que cumple con los requisitos de “async-signal-safe”, es decir. permitiendo llamadas seguras desde manejadores de señales. Durante la ejecución de _Fork, se crea un entorno mínimo que es suficiente para llamar funciones en manejadores de señales como rise y execve sin involucrar características que puedan cambiar los bloqueos o el estado interno. La llamada _Fork se definirá en una versión futura del estándar POSIX, pero por ahora está incluida como una extensión GNU.
  • Para la plataforma Linux, se ha implementado la función execveat, que permite ejecutar un archivo ejecutable desde un descriptor de archivo abierto. La nueva función también se utiliza en la implementación de la llamada fexecve, que no requiere un pseudo-FS /proc montado al inicio.
  • Se agregó la función timespec_getres, definida en el borrador del estándar ISO C2X, que extiende la función timespec_get con capacidades similares a la función POSIX clock_getres.
  • Se agregó la función close_range(), que permite que un proceso cierre un rango completo de descriptores de archivos abiertos a la vez. La función está disponible en sistemas con un kernel Linux de al menos la versión 5.9.
  • Se agregaron funciones closefrom y posix_spawn_file_actions_addclosefrom_np, que le permiten cerrar todos los descriptores de archivos a la vez, cuyo número sea mayor o igual al valor especificado.
  • En los modos "_DYNAMIC_STACK_SIZE_SOURCE" y "_GNU_SOURCE", PTHREAD_STACK_MIN, MINSIGSTKSZ y SIGSTKSZ ya no son constantes, lo que permite la compatibilidad con conjuntos de registros de tamaño dinámico, como los proporcionados en la extensión ARM SVE.
  • El vinculador implementa la opción "--list-diagnostics" para mostrar información relacionada con las operaciones de definición IFUNC (función indirecta) y la selección del subdirectorio glibc-hwcaps.
  • Se ha implementado la macro __STDC_WANT_IEC_60559_EXT__, diseñada para comprobar la presencia de funciones definidas en el Anexo F de la especificación ISO C2X.
  • Para los sistemas powerpc64*, se ha implementado la opción “--disable-scv”, que le permite crear glibc sin admitir la instrucción scv.
  • Solo el conjunto mínimo de módulos gconv principales queda en el archivo gconv-modules, y el resto se mueve a un archivo adicional gconv-modules-extra.conf, ubicado en el directorio gconv-modules.d.
  • Para la plataforma Linux, se implementa el parámetro glibc.pthread.stack_cache_size, que se puede utilizar para configurar el tamaño de la memoria caché de la pila pthread.
  • La función inet_neta del archivo de encabezado ha quedado obsoleta , así como varias funciones raramente utilizadas 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_name inquery, 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). En lugar de estas funciones, se recomienda utilizar bibliotecas independientes para trabajar con DNS.
  • Las funciones pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np y pthread_yield han quedado obsoletas y pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_setrobust y sched_yield deberían usarse en su lugar.
  • Se dejó de usar enlaces simbólicos para vincular objetos compartidos instalados a la versión de Glibc. Estos objetos ahora se instalan tal cual (por ejemplo, libc.so.6 ahora es un archivo en lugar de un enlace a libc-2.34.so).
  • De forma predeterminada, las funciones de depuración en malloc están deshabilitadas, como MALLOC_CHECK_ (glibc.malloc.check), mtrace() y mcheck(), que se mueven a una biblioteca separada libc_malloc_debug.so, en la que también se han incorporado las funciones obsoletas malloc_get_state y malloc_set_state. sido movido.
  • En Linux, funciones como shm_open y sem_open ahora requieren el dispositivo /dev/shm para funcionar.
  • Vulnerabilidades solucionadas:
    • CVE-2021-27645: El proceso nscd (demonio de almacenamiento en caché del servidor de nombres) falla debido a una doble llamada a la función gratuita al procesar solicitudes de grupo de red especialmente diseñadas.
    • CVE-2021-33574: Acceso a un área de memoria ya liberada (uso después de la liberación) en la función mq_notify cuando se usa el tipo de notificación SIGEV_THREAD con un atributo de subproceso para el cual se establece una máscara de afinidad de CPU alternativa. El problema podría provocar una caída, pero no se pueden descartar otras opciones de ataque.
    • CVE-2021-35942: Un desbordamiento del tamaño de un parámetro en la función wordexp puede provocar que la aplicación falle.

Fuente: opennet.ru

Añadir un comentario