Sortie de la bibliothèque système Glibc 2.34

Après six mois de développement, la version de la bibliothèque système GNU C Library (glibc) 2.34 a été publiée, respectant entièrement les exigences des normes ISO C11 et POSIX.1-2017. Cette nouvelle version comprend des corrections de 66 développeurs.

Les améliorations apportées par Glibc 2.34 incluent :

  • Les bibliothèques libpthread, libdl, libutil et libanl sont désormais intégrées dans la bibliothèque principale libc, ce qui signifie qu'il n'est plus nécessaire de les lier via les drapeaux -lpthread, -ldl, -lutil et -lanl dans les applications. Une préparation à l'intégration de libresolv dans libc a été réalisée. Cette intégration permettra un processus de mise à jour glibc plus cohérent et simplifiera la mise en œuvre à l'exécution. Pour assurer la compatibilité avec des applications compilées avec des versions antérieures de glibc, des bibliothèques de substitution ont été fournies. En raison de l'augmentation du nombre de structures et de fonctions dans glibc, des problèmes peuvent survenir dans des applications où il y a un conflit de noms avec les bibliothèques libpthread, libdl, libutil, libresolv et libanl non utilisées auparavant.
  • Il est désormais possible d'utiliser un type time_t 64 bits dans des configurations qui utilisaient traditionnellement un type time_t 32 bits. Dans de telles configurations, par exemple sur des systèmes x86, le time_t 32 bits reste par défaut, mais ce comportement peut désormais être modifié à l'aide du macro « _TIME_BITS ». Cette fonctionnalité est disponible uniquement sur les systèmes avec un noyau Linux d'au moins la version 5.1.
  • Une nouvelle fonction _Fork a été ajoutée, remplaçant la fonction fork et répondant aux critères « asynchronous-signal-safe », c'est-à-dire permettant un appel sûr depuis des gestionnaires de signaux. Lors de l'exécution de _Fork, un environnement minimal est créé, suffisant pour appeler des fonctions dans les gestionnaires de signaux, telles que raise et execve, sans utiliser des fonctionnalités qui pourraient entraîner un changement de verrouillage ou un état interne. L'appel de _Fork sera défini dans une future version de la norme POSIX, mais est actuellement inclus parmi les extensions GNU.
  • Pour la plateforme Linux, la fonction execveat a été mise en œuvre, permettant de lancer un fichier exécutable à partir d'un descripteur de fichier ouvert. Cette nouvelle fonction est également utilisée dans l'implémentation de l'appel fexecve qui ne nécessite pas un système de fichiers pseudo-monté /proc lors de l'exécution.
  • La fonction timespec_getres a été ajoutée, comme défini dans le brouillon de la norme ISO C2X, complétant la fonction timespec_get avec des capacités similaires à la fonction POSIX clock_getres.
  • La fonction close_range() a été ajoutée, permettant à un processus de fermer simultanément toute une plage de descripteurs de fichiers ouverts. La fonction est disponible sur les systèmes avec un noyau Linux d'au moins la version 5.9.
  • Les fonctions closefrom et posix_spawn_file_actions_addclosefrom_np ont été ajoutées, permettant de fermer tous les descripteurs de fichiers dont le numéro est supérieur ou égal à une valeur spécifiée.
  • Dans les modes « _DYNAMIC_STACK_SIZE_SOURCE » et « _GNU_SOURCE », les valeurs PTHREAD_STACK_MIN, MINSIGSTKSZ et SIGSTKSZ ne sont plus des constantes, ce qui permet de prendre en charge des ensembles de registres de taille dynamique, par exemple, ceux fournis par l'extension ARM SVE.
  • Le linker a implémenté l'option « --list-diagnostics » pour afficher des informations concernant les opérations de détermination IFUNC (fonction indirecte) et de sélection de sous-répertoires glibc-hwcaps.
  • Le macro __STDC_WANT_IEC_60559_EXT__ a été implémenté, destiné à vérifier la présence de fonctions définies dans l'application « F » de la spécification ISO C2X.
  • Pour les systèmes powerpc64*, une option « --disable-scv » a été mise en œuvre, permettant de compiler glibc sans prendre en charge l'instruction scv.
  • Le fichier gconv-modules ne contient désormais qu'un ensemble minimal de modules gconv essentiels, les autres ayant été déplacés dans un fichier supplémentaire gconv-modules-extra.conf, situé dans le répertoire gconv-modules.d.
  • Pour la plateforme Linux, le paramètre glibc.pthread.stack_cache_size a été implémenté, pouvant être utilisé pour configurer la taille du cache de pile pthread.
  • La fonction inet_neta déclarée obsolète dans le fichier d'en-tête , ainsi que diverses fonctions peu utilisées dans (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) et (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Il est recommandé d'utiliser des bibliothèques séparées pour travailler avec DNS à la place de ces fonctions.
  • Les fonctions pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np et pthread_yield sont déclarées obsolètes, et il convient d'utiliser à la place pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust et sched_yield.
  • L'utilisation de liens symboliques pour lier les objets partagés installés à la version Glibc a été supprimée. Ces objets sont maintenant installés tels quels (par exemple, libc.so.6 est désormais un fichier, et non un lien vers libc-2.34.so).
  • Par défaut, les fonctionnalités de débogage dans malloc, telles que MALLOC_CHECK_ (glibc.malloc.check), mtrace() et mcheck(), sont désactivées et ont été déplacées vers une bibliothèque séparée libc_malloc_debug.so, dans laquelle les fonctions obsolètes malloc_get_state et malloc_set_state ont également été transférées.
  • Sous Linux, les fonctions telles que shm_open et sem_open nécessitent désormais la présence du périphérique /dev/shm.
  • Vulnérabilités corrigées :
    • CVE-2021-27645 : Un crash du processus nscd (daemon de mise en cache des serveurs de noms) dû à un double appel de la fonction free lors du traitement de requêtes netgroup spécialement formatées.
    • CVE-2021-33574 : Accès à une zone de mémoire déjà libérée (use-after-free) dans la fonction mq_notify lors de l'utilisation du type de notification SIGEV_THREAD avec un attribut de thread pour lequel un masque d'affinité CPU alternatif est défini. Ce problème peut entraîner un crash, mais d'autres types d'attaques ne sont pas exclus.
    • CVE-2021-35942 : Un débordement de taille de paramètre dans la fonction wordexp peut provoquer un crash de l'application.

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster