Version de la bibliothèque système Glibc 2.34

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

Certaines des améliorations implémentées dans la Glibc 2.34 incluent :

  • Les bibliothèques libpthread, libdl, libutil et libanl sont intégrées dans la structure principale de la libc, l'utilisation de leurs fonctionnalités dans les applications ne nécessite plus de liaison à l'aide des indicateurs -lpthread, -ldl, -lutil et -lanl. Des préparatifs ont été faits pour l'intégration de libresolv dans la libc. L'intégration permettra un processus de mise à jour de la glibc plus transparent et simplifiera l'implémentation du runtime. Les bibliothèques Stub sont fournies pour assurer une compatibilité descendante avec les applications construites avec les anciennes versions de la glibc. En raison de l'expansion du nombre de structures et de fonctions fournies dans la glibc, des problèmes peuvent survenir dans les applications dans lesquelles il existe une intersection de noms avec des bibliothèques libpthread, libdl, libutil, libresolv et libanl précédemment inutilisées.
  • Offre la possibilité 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 les systèmes x86, la valeur par défaut est toujours time_t 32 bits, mais ce comportement peut désormais être modifié à l'aide de la macro "_TIME_BITS". Cette fonctionnalité n'est disponible que sur les systèmes dotés au moins de la version 5.1 du noyau Linux.
  • Ajout de la fonction _Fork, un remplacement de la fonction fork qui répond aux exigences de « async-signal-safe », c'est-à-dire permettant des appels sécurisés à partir 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 tels que raise et execve sans impliquer de fonctionnalités susceptibles de modifier les verrous ou l'état interne. L'appel _Fork sera défini dans une future version du standard POSIX, mais pour l'instant il est inclus en tant qu'extension GNU.
  • Pour la plateforme Linux, la fonction execveat a été implémentée, qui permet d'exécuter un fichier exécutable à partir d'un descripteur de fichier ouvert. La nouvelle fonction est également utilisée dans l'implémentation de l'appel fexecve, qui ne nécessite pas de pseudo-FS /proc monté au démarrage.
  • Ajout de la fonction timespec_getres, définie dans le projet de norme ISO C2X, qui étend la fonction timespec_get avec des fonctionnalités similaires à la fonction POSIX clock_getres.
  • Ajout de la fonction close_range(), qui permet à un processus de fermer simultanément toute une gamme de descripteurs de fichiers ouverts. La fonction est disponible sur les systèmes dotés d'un noyau Linux d'au moins la version 5.9.
  • Ajout des fonctions closefrom et posix_spawn_file_actions_addclosefrom_np, permettant de fermer tous les descripteurs de fichiers à la fois, dont le nombre est supérieur ou égal à la valeur spécifiée.
  • Dans les modes "_DYNAMIC_STACK_SIZE_SOURCE" et "_GNU_SOURCE", PTHREAD_STACK_MIN, MINSIGSTKSZ et SIGSTKSZ ne sont plus des constantes, permettant la prise en charge d'ensembles de registres de taille dynamique tels que ceux fournis dans l'extension ARM SVE.
  • L'éditeur de liens implémente l'option "--list-diagnostics" pour afficher les informations relatives aux opérations de définition IFUNC (fonction indirecte) et à la sélection du sous-répertoire glibc-hwcaps.
  • La macro __STDC_WANT_IEC_60559_EXT__ a été implémentée, conçue pour vérifier la présence des fonctions définies dans l'annexe F de la spécification ISO C2X.
  • Pour les systèmes powerpc64*, l'option « --disable-scv » a été implémentée, ce qui vous permet de construire la glibc sans prendre en charge l'instruction scv.
  • Seul l'ensemble minimum de modules gconv de base est laissé dans le fichier gconv-modules, et le reste est déplacé vers un fichier supplémentaire gconv-modules-extra.conf, situé dans le répertoire gconv-modules.d.
  • Pour la plate-forme Linux, le paramètre glibc.pthread.stack_cache_size est implémenté, qui peut être utilisé pour configurer la taille du cache de la pile pthread.
  • La fonction inet_neta du fichier d'en-tête est obsolète , ainsi que diverses fonctions rarement utilisées 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_que riesmatch, 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). Au lieu de ces fonctions, il est recommandé d'utiliser des bibliothèques distinctes pour travailler avec DNS.
  • Les fonctions pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np et pthread_yield sont obsolètes et pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_setrobust et sched_yield doivent être utilisées à la place.
  • Arrêt de l'utilisation de liens symboliques pour lier les objets partagés installés à la version de la Glibc. De tels objets sont désormais installés tels quels (par exemple, libc.so.6 est désormais un fichier plutôt qu'un lien vers libc-2.34.so).
  • Par défaut, les fonctionnalités de débogage de malloc sont désactivées, telles que MALLOC_CHECK_ (glibc.malloc.check), mtrace() et mcheck(), qui sont déplacées vers une bibliothèque distincte libc_malloc_debug.so, dans laquelle les fonctions obsolètes malloc_get_state et malloc_set_state ont également été déplacé.
  • Sous Linux, des fonctions comme shm_open et sem_open nécessitent désormais le périphérique /dev/shm pour fonctionner.
  • Vulnérabilités corrigées :
    • CVE-2021-27645 : Le processus nscd (démon de mise en cache du serveur de noms) plante en raison d'un double appel à la fonction gratuite lors du traitement de requêtes netgroup spécialement conçues.
    • CVE-2021-33574 : Accès à une zone 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. Le problème pourrait conduire à un crash, mais d’autres options d’attaque ne peuvent être exclues.
    • CVE-2021-35942 : Un dépassement de taille de paramètre dans la fonction wordexp peut provoquer le crash de l'application.

Source: opennet.ru

Ajouter un commentaire