Glibc 2.32 systeembibliotheek release

Na zes maanden ontwikkeling gepubliceerde vrijgave van de systeembibliotheek GNU C-bibliotheek (glibc) 2.32, die volledig voldoet aan de eisen van de ISO C11- en POSIX.1-2017-normen. De nieuwe release bevat oplossingen van 67 ontwikkelaars.

Van degenen die zijn geïmplementeerd in Glibc 2.32 verbeteringen je kunt opmerken:

  • Ondersteuning toegevoegd voor Synopsys ARC HS (ARCv2 ISA)-processors. De port vereist minimaal binutils 2.32, gcc 8.3 en Linux kernel 5.1 om te kunnen draaien. Er worden drie ABI-varianten ondersteund: arc-linux-gnu, arc-linux-gnuhf en arceb-linux-gnu (big-endian);
  • Laden van auditmodules gespecificeerd in secties DT_AUDIT en
    DT_DEPAUDIT van het uitvoerbare bestand.

  • Voor de powerpc64le-architectuur is ondersteuning voor het IEEE128 long double-type geïmplementeerd, wat wordt ingeschakeld bij het bouwen met de “-mabi=ieeelongdouble” optie.
  • Sommige API's zijn geannoteerd met het GCC 'access'-attribuut, waardoor betere waarschuwingen kunnen worden gegenereerd wanneer ze worden gecompileerd in GCC 10 om mogelijke bufferoverflows en andere out-of-bounds-scenario's te detecteren.
  • Voor Linux-systemen zijn de functies pthread_attr_setsigmask_np en
    pthread_attr_getsigmask_np, waarmee de toepassing een signaalmasker kan specificeren voor threads die zijn gemaakt met pthread_create.

  • Coderingsgegevens, tekentype-informatie en transliteratietabellen zijn bijgewerkt om de Unicode 13.0.0-specificatie te ondersteunen;
  • Nieuw headerbestand toegevoegd , die de variabele __libc_single_threaded definieert, die kan worden gebruikt in toepassingen voor optimalisaties met één thread.
  • Functies sigabbrev_np en sigdescr_np toegevoegd die de verkorte naam en beschrijving van het signaal retourneren (bijvoorbeeld "HUP" en "Hangup" voor SIGHUP).
  • Functies strerrorname_np en strerrordesc_np toegevoegd die de naam en beschrijving van de fout retourneren (bijvoorbeeld "EINVAL" en "Ongeldig argument" voor EINVAL).
  • Voor het ARM64-platform is een vlag "--enable-standard-branch-protection" toegevoegd (of -mbranch-protection=standard in GCC), waardoor het ARMv8.5-BTI-mechanisme (Branch Target Indicator) de uitvoering van instructiesets die niet uitgevoerd mogen worden vertakkende overgangen. Het blokkeren van overgangen naar willekeurige delen van de code wordt geïmplementeerd om de creatie van gadgets te voorkomen bij exploits die gebruik maken van return-georiënteerde programmeertechnieken (ROP - Return-Oriented Programming; de aanvaller probeert zijn code niet in het geheugen te plaatsen, maar werkt op reeds bestaande stukken van machine-instructies die eindigen met een retourbesturingsinstructie, waaruit een reeks oproepen wordt opgebouwd om de gewenste functionaliteit te verkrijgen).
  • Er is een grote opschoning van verouderde functies uitgevoerd, waaronder het verwijderen van de opties “--enable-obsolete-rpc” en “--enable-obsolete-nsl”, het headerbestand . De functies sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore en sigset, de arrays sys_siglist, _sys_siglist en sys_sigabbrev, de symbolen sys_errlist, _sys_errlist, sys_nerr en _sys_nerr, en de NSS-module hesiod zijn verouderd.
  • ldconfig is standaard verplaatst om het nieuwe ld.so.cache-formaat te gebruiken, dat al bijna 20 jaar in glibc wordt ondersteund.
  • Kwetsbaarheden opgelost:
    • CVE-2016-10228 – Er treedt een lus op in het iconv-hulpprogramma wanneer het wordt uitgevoerd met de optie “-c” bij het verwerken van onjuiste multi-bytegegevens.
    • CVE-2020-10029 Stack-corruptie bij het aanroepen van trigonometrische functies met een pseudo-null-argument.
    • CVE-2020-1752 - Een gebruik-na-vrije geheugentoegang in de glob-functie bij het uitbreiden van een verwijzing naar de thuismap (“~user”) in paden.
    • CVE-2020-6096 – Onjuiste afhandeling op het ARMv7-platform van negatieve parameterwaarden in memcpy() en memmove(), die de grootte van het gekopieerde gebied bepalen. Staat toe organiseer de uitvoering van code bij het verwerken van gegevens die op een bepaalde manier zijn geformatteerd in de functies memcpy() en memmove(). Het is veelzeggend dat het probleem bleef bijna twee maanden niet gecorrigeerd sinds de informatie openbaar werd gemaakt en vijf maanden nadat de Glibc-ontwikkelaars op de hoogte waren gesteld.

Bron: opennet.ru

Voeg een reactie