Glibc 2.35 systeembibliotheek release

Na zes maanden ontwikkeling is de GNU C Library (glibc) 2.35 systeembibliotheek uitgebracht, die volledig voldoet aan de eisen van de ISO C11- en POSIX.1-2017-standaarden. De nieuwe release bevat oplossingen van 66 ontwikkelaars.

Enkele van de verbeteringen die in Glibc 2.35 zijn geïmplementeerd, zijn onder meer:

  • Ondersteuning toegevoegd voor de landinstelling "C.UTF-8", die sorteerregels bevat voor alle Unicode-codes, maar om ruimte te besparen is deze beperkt tot het gebruik van ASCII-bereiken in de fnmatch-, regexec- en regcomp-functies. De landinstelling is ongeveer 400 KB, waarvan 346 KB LC_CTYPE-gegevens voor Unicode, en vereist een afzonderlijke installatie (niet ingebouwd in Glibc).
  • Coderingsgegevens, tekentype-informatie en transliteratietabellen zijn bijgewerkt om de Unicode 14.0.0-specificatie te ondersteunen.
  • IN En Er zijn functies en macro's geïmplementeerd die het resultaat afronden op een smaller type: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafN, fMfmafNx, fMxfmafN en fMxfmafNx. De functies zijn beschreven in de specificaties TS 18661-1:2014, TS 18661-3:2015 en toegevoegd aan het concept van de toekomstige ISO C2X C-standaard.
  • IN En functies en macro's geïmplementeerd voor het vinden van het minimum en maximum van drijvende-kommagetallen met de typen float, long double, _FloatN en _FloatNx, beschreven in de IEEE 754-2019-specificatie en toegevoegd aan het concept van de toekomstige ISO C2X C-standaard: fmaximum, fmaximum_num , fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
  • IN constanten toegevoegd voor drijvende-kommagetallen met enkele precisie: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf, M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_SQRT2f en M_SQRT1_2f.
  • Voor functies exp10 in headerbestand Er zijn overeenkomstige macro's toegevoegd die niet aan specifieke typen zijn gekoppeld.
  • IN heeft de macro _PRINTF_NAN_LEN_MAX toegevoegd die wordt voorgesteld in de concept-ISO C2X-standaard.
  • Formaatspecificaties "%b" en "%B" toegevoegd aan de printf-familie van functies om gehele getallen in binaire weergave af te drukken.
  • Het dynamische koppelingssysteem implementeert een nieuw DSO-sorteeralgoritme dat gebruik maakt van depth-first search (DFS) om prestatieproblemen aan te pakken bij het afhandelen van lusafhankelijkheden. Om het DSO-sorteeralgoritme te selecteren, wordt de parameter glibc.rtld.dynamic_sort voorgesteld, die kan worden ingesteld op “1” om terug te keren naar het oude algoritme.
  • De ABI heeft ondersteuning toegevoegd voor een nieuwe functie '__memcmpeq', die door compilers wordt gebruikt om het gebruik van 'memcmp' te optimaliseren als de door deze functie geretourneerde waarde alleen wordt gebruikt om de voltooiingsstatus van een bewerking te controleren.
  • Ondersteuning toegevoegd voor het automatisch registreren van threads met behulp van de rseq (restartable sequences) systeemaanroep die wordt geboden sinds Linux kernel 4.18. Met de rseq-systeemaanroep kunt u de continue uitvoering van een groep instructies organiseren die niet wordt onderbroken en het resultaat wordt bevestigd door de laatste instructie in de groep. In wezen biedt het een middel voor een zeer snelle atomaire uitvoering van bewerkingen die, als ze worden onderbroken door een andere thread, worden opgeschoond en opnieuw worden geprobeerd.
  • Symlink /usr/bin/ld.so toegevoegd.
  • De standaardassemblage van alle uitvoerbare bestanden van ingebedde programma's en de testset in PIE-modus (positie-onafhankelijk uitvoerbaar) is aanwezig. Om dit gedrag uit te schakelen, is de optie “--disable-default-pie” beschikbaar.
  • Voor Linux is een instelling glibc.malloc.hugetlb toegevoegd om het mogelijk te maken dat de malloc-implementatie wordt omgeschakeld naar het gebruik van de madvise-systeemaanroep met de vlag MADV_HUGEPAGE voor mmap en sbrk, of om direct grote geheugenpagina's te gebruiken door de vlag MAP_HUGETLB in mmap op te geven oproepen. In het eerste geval kunnen prestatiewinsten worden behaald als Transparent Huge Pages in de gekke modus worden gebruikt, en in het tweede geval wordt de mogelijkheid geboden om door het systeem gereserveerde Huge Pages te gebruiken.
  • Functie _dl_find_object toegevoegd die kan worden gebruikt om informatie over het afwikkelen van de call-stack toe te voegen.
  • Ondersteuning toegevoegd voor de OpenRISC-architectuur (or1k-linux-gnu) in soft-float-modus. De port vereist binutils 2.35, GCC 11 en Linux kernel 5.4.
  • Er is een build-vlag "--with-rtld-early-cflags" toegevoegd, die kan worden gebruikt om extra compilatievlaggen op te geven die worden gebruikt bij het bouwen van de initiële code voor dynamische koppelingen.
  • Voor het Linux-platform is de functie epoll_pwait2 toegevoegd, die verschilt van epoll_wait doordat een time-out met nauwkeurigheid van nanoseconden wordt opgegeven.
  • Functie posix_spawn_file_actions_addtcsetpgrp_np toegevoegd om racecondities te elimineren bij het instellen van een controleterminal voor een nieuw proces.
  • Voor applicaties die zijn gecompileerd met Glibc en GCC 12+ is de beveiligingsmodus “_FORTIFY_SOURCE=3” geïmplementeerd, die mogelijke bufferoverflows detecteert bij het uitvoeren van stringfuncties die zijn gedefinieerd in het headerbestand string.h. Het verschil met de modus “_FORTIFY_SOURCE=2” komt neer op extra controles, die mogelijk tot verminderde prestaties kunnen leiden.
  • Ondersteuning voor Intel MPX (Memory Protection Extensions), gebruikt om pointers voor geheugengrenzen te controleren, is stopgezet (deze technologie is niet wijdverspreid geworden en is al verwijderd uit GCC en LLVM).
  • Het prelink-mechanisme en de bijbehorende omgevingsvariabelen LD_TRACE_PRELINKING en LD_USE_LOAD_BIAS zijn verouderd en zullen in een toekomstige release worden verwijderd.

    Kwetsbaarheden opgelost:

    • CVE-2022-23218, CVE-2022-23219 – Bufferoverflow in de functies svcunix_create en clnt_create, veroorzaakt door het kopiëren van de inhoud van de bestandsnaamparameter naar de stapel zonder de grootte van de gekopieerde gegevens te controleren. Voor applicaties die zijn gebouwd zonder stack-beveiliging en die het “unix”-protocol gebruiken, kan de kwetsbaarheid leiden tot de uitvoering van aanvallercode bij het verwerken van zeer lange bestandsnamen.
    • CVE-2021-3998 is een kwetsbaarheid in de realpath()-functie als gevolg van het retourneren, onder bepaalde omstandigheden, van een onjuiste waarde die niet-opgeschoonde resterende gegevens uit de stapel bevat. Voor het SUID-root fusermount-programma kan de kwetsbaarheid worden gebruikt om gevoelige informatie uit het procesgeheugen te halen, bijvoorbeeld om informatie over pointers te verkrijgen.
    • CVE-2021-3999 - Bufferoverloop van één byte in de functie getcwd(). Het probleem wordt veroorzaakt door een bug die al sinds 1995 aanwezig is. Om een ​​overflow te veroorzaken, roept u eenvoudigweg chdir() aan in de map "/" in een aparte naamruimte voor het mountpunt.

    Bron: opennet.ru

Voeg een reactie