Glibc 2.35 arrive avec des améliorations, des corrections de bogues et plus encore

Après six mois de développement la sortie de la nouvelle version de Glibc 2.35 a été annoncée dans laquelle inclut des correctifs de 66 développeurs et parmi les améliorations implémentées, nous pouvons constater que la prise en charge de la locale "C.UTF-8" a été ajoutée, qui inclut des classements pour tous les codes Unicode, mais est limitée à l'utilisation de plages ASCII dans les fonctions fnmatch, regexec et regcomp pour enregistrer espace.

Les paramètres régionaux sont d'environ 400 Ko, dont 346 Ko sont des données LC_CTYPE pour Unicode, et doivent être installés séparément (non intégrés à Glibc). Les données d'encodage, les informations sur les types de caractères et les tables de translittération ont été mises à jour pour prendre en charge la spécification Unicode 14.0.0.

Un autre changement qui ressort est que Oui mettre en œuvre des fonctions et des macros qui arrondissent le résultat à un type plus étroit, En plus d'implémenter des fonctions et des macros pour trouver le minimum et le maximum de nombres à virgule flottante de types float, long double, _FloatN et _FloatNx, décrits dans la spécification IEEE 754-2019.

pour les fonctions exp10, les macros correspondantes sont ajoutées au fichier d'en-tête, qui ne sont pas liés à des types spécifiques, et la macro _PRINTF_NAN_LEN_MAX a été ajoutée à , proposé dans le projet de norme ISO C2X.

Le système de liaison dynamique implémente un nouvel algorithme de classification DSO utilisant la recherche en profondeur (DFS) pour résoudre les problèmes de performances lors de la gestion des dépendances de boucle. Pour sélectionner l'algorithme de tri DSO, le paramètre glibc.rtld.dynamic_sort est proposé, qui peut être mis à "1" pour revenir à l'algorithme précédent.

à côté ajout du support pour une nouvelle fonction '__memcmpeq' à l'ABI, qui est utilisé par les compilateurs pour optimiser l'utilisation de `memcmp' lorsque la valeur de retour de cette fonction est utilisée uniquement pour vérifier l'état d'achèvement d'une opération.

le prise en charge de l'enregistrement automatique des threads en utilisant l'appel système rseq (séquences redémarrables) fourni depuis le noyau Linux 4.18. L'appel système rseq permet d'organiser l'exécution continue d'un groupe d'instructions qui n'est pas interrompu et valide le résultat avec la dernière instruction du groupe. Essentiellement, il fournit une fonction d'exécution atomique très rapide d'opérations qui, si elles sont interrompues par un autre thread, sont nettoyées et réessayées.

D'autre part, il fournit compilation par défaut de tous les fichiers exécutables des programmes intégrés et une suite de tests en mode PIE (position-independent executable).

Pour désactiver ce comportement, l'option "-disable-default-pie" est fournie, plus pour Linux, ajout d'un paramètre glibc.malloc.hugetlb pour modifier l'implémentation de malloc afin d'utiliser l'appel système madvise avec l'indicateur MADV_HUGEPAGE pour mmap et sbrk, ou utiliser directement des pages mémoire volumineuses en spécifiant l'indicateur MAP_HUGETLB dans les appels mmap.

Dans le premier cas, une amélioration des performances peut être obtenue en utilisant des pages énormes transparentes en mode madvise, et dans le second cas, vous pouvez utiliser des pages énormes réservées au système (Huge Pages).

A noter également que certaines vulnérabilités ont été corrigées dans cette nouvelle version :

  • CVE-2022-23218, CVE-2022-23219: Un débordement de tampon dans les fonctions svcunix_create et clnt_create causé par la copie du contenu d'un paramètre de nom de fichier sur la pile sans vérifier la taille des données copiées. Pour les applications construites sans protection de pile et utilisant le protocole "unix", la vulnérabilité pourrait conduire à l'exécution de code malveillant lors du traitement de noms de fichiers très longs.
  • CVE-2021-3998 : une vulnérabilité dans la fonction realpath() causée par le renvoi d'une valeur incorrecte dans certaines conditions contenant des données résiduelles non nettoyées de la pile. Pour le programme SUID-root fusermount, la vulnérabilité peut être utilisée pour obtenir des informations sensibles à partir de la mémoire de processus, par exemple, pour obtenir des informations de pointeur.
  • CVE-2021-3999 : Débordement de tampon d'un seul octet dans la fonction getcwd(). Le problème est causé par un bogue qui existe depuis 1995. Pour appeler un débordement, dans un espace de noms de point de montage séparé, appelez simplement chdir() sur le répertoire "/".

Enfin Si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans le lien suivant


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.