Version de la bibliothèque système Glibc 2.32

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

Parmi ceux implémentés dans la Glibc 2.32 améliorations vous pouvez noter:

  • Ajout de la prise en charge des processeurs Synopsys ARC HS (ARCv2 ISA). Le port nécessite au moins binutils 2.32, gcc 8.3 et le noyau Linux 5.1 pour fonctionner. Trois variantes d'ABI sont prises en charge : arc-linux-gnu, arc-linux-gnuhf et arceb-linux-gnu (big-endian) ;
  • Chargement des modules d'audit précisés dans les sections DT_AUDIT et
    DT_DEPAUDIT du fichier exécutable.

  • Pour l'architecture powerpc64le, la prise en charge du type double long IEEE128 est implémentée, qui est activée lors de la construction avec l'option « -mabi=ieeelongdouble ».
  • Certaines API sont annotées avec l'attribut 'access' de GCC, qui permet de générer de meilleurs avertissements lors de la compilation dans GCC 10 afin de détecter d'éventuels dépassements de tampon et d'autres scénarios hors limites.
  • Pour les systèmes Linux, les fonctions pthread_attr_setsigmask_np et
    pthread_attr_getsigmask_np, qui donnent à l'application la possibilité de spécifier un masque de signal pour les threads créés à l'aide de pthread_create.

  • 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 13.0.0 ;
  • Ajout d'un nouveau fichier d'en-tête , qui définit la variable __libc_single_threaded, qui peut être utilisée dans les applications d'optimisation monothread.
  • Ajout des fonctions sigabbrev_np et sigdescr_np qui renvoient le nom abrégé et la description du signal (par exemple, « HUP » et « Hangup » pour SIGHUP).
  • Ajout des fonctions strerrorname_np et strerrordesc_np qui renvoient le nom et la description de l'erreur (par exemple, "EINVAL" et "Invalid argument" pour EINVAL).
  • Pour la plateforme ARM64, un indicateur "--enable-standard-branch-protection" a été ajouté (ou -mbranch-protection=standard dans GCC), qui permet au mécanisme ARMv8.5-BTI (Branch Target Indicator) de protéger le exécution de jeux d'instructions qui ne doivent pas être exécutés. transitions de branchement. Le blocage des transitions vers des sections arbitraires de code est mis en œuvre pour empêcher la création de gadgets dans des exploits utilisant des techniques de programmation orientée retour (ROP - Return-Oriented Programming ; l'attaquant ne cherche pas à placer son code en mémoire, mais opère sur des morceaux déjà existants. d'instructions machine qui se terminent par une instruction de contrôle de retour, à partir de laquelle une chaîne d'appels est construite pour obtenir la fonctionnalité souhaitée).
  • Un nettoyage majeur des fonctionnalités obsolètes a été effectué, notamment la suppression des options « --enable-obsolete-rpc » et « --enable-obsolete-nsl », fichier d'en-tête. . Les fonctions sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore et sigset, les tableaux sys_siglist, _sys_siglist et sys_sigabbrev, les symboles sys_errlist, _sys_errlist, sys_nerr et _sys_nerr, ainsi que le module NSS hesiod sont obsolètes.
  • ldconfig a été déplacé par défaut pour utiliser le nouveau format ld.so.cache, pris en charge dans la glibc depuis près de 20 ans.
  • Vulnérabilités corrigées :
    • CVE-2016-10228 – Une boucle dans l'utilitaire iconv se produit lorsqu'il est exécuté avec l'option « -c » lors du traitement de données multi-octets incorrectes.
    • CVE-2020-10029 Corruption de la pile lors de l'appel de fonctions trigonométriques avec un argument pseudo-nul.
    • CVE-2020-1752 - Un accès mémoire à utilisation après libération dans la fonction glob lors du développement d'une référence au répertoire personnel (« ~user ») dans les chemins.
    • CVE-2020-6096 – Gestion incorrecte sur la plateforme ARMv7 des valeurs de paramètres négatives dans memcpy() et memmove(), qui déterminent la taille de la zone copiée. Permet organiser l'exécution du code lors du traitement de données formatées d'une certaine manière dans les fonctions memcpy() et memmove(). Il est significatif que le problème est resté non corrigé depuis près de deux mois depuis que l'information a été divulguée publiquement et cinq mois depuis que les développeurs de Glibc en ont été informés.

Source: opennet.ru

Ajouter un commentaire