Glibc 2.34 System Library Release

Efter seks måneders udvikling er GNU C Library (glibc) 2.34 systembiblioteket blevet frigivet, som fuldt ud overholder kravene i ISO C11 og POSIX.1-2017 standarderne. Den nye udgivelse indeholder rettelser fra 66 udviklere.

Nogle af forbedringerne implementeret i Glibc 2.34 inkluderer:

  • Libpthread-, libdl-, libutil- og libanl-bibliotekerne er integreret i libc-hovedstrukturen, brugen af ​​deres funktionalitet i applikationer kræver ikke længere sammenkædning ved hjælp af flagene -lpthread, -ldl, -lutil og -lanl. Der er lavet forberedelser til integration af libresolv i libc. Integration vil give mulighed for en mere problemfri glibc-opdateringsproces og vil forenkle runtime-implementering. Stub-biblioteker leveres for at give bagudkompatibilitet med applikationer bygget med ældre versioner af glibc. På grund af udvidelsen af ​​antallet af strukturer og funktioner i glibc, kan der opstå problemer i applikationer, hvor der er en skæring af navne med tidligere ubrugte biblioteker libpthread, libdl, libutil, libresolv og libanl.
  • Giver mulighed for at bruge en 64-bit time_t-type i konfigurationer, der traditionelt brugte en 32-bit time_t-type. I sådanne konfigurationer, for eksempel på x86-systemer, er standarden stadig 32-bit time_t, men denne adfærd kan nu ændres ved hjælp af makroen "_TIME_BITS". Denne funktion er kun tilgængelig på systemer med mindst Linux-kerneversion 5.1.
  • Tilføjet _Fork-funktionen, en erstatning for gaffelfunktionen, der opfylder kravene til “async-signal-safe”, dvs. tillader sikkert opkald fra signalbehandlere. Under udførelse af _Fork skabes et minimalt miljø, der er tilstrækkeligt til at kalde funktioner i signalhandlere såsom raise og execve uden at involvere funktioner, der kan ændre låse eller intern tilstand. _Fork-kaldet vil blive defineret i en fremtidig version af POSIX-standarden, men indtil videre er det inkluderet som en GNU-udvidelse.
  • For Linux-platformen er execveat-funktionen implementeret, som giver dig mulighed for at køre en eksekverbar fil fra en åben filbeskrivelse. Den nye funktion bruges også i implementeringen af ​​fexecve-kaldet, som ikke kræver en monteret pseudo-FS /proc ved opstart.
  • Tilføjet timespec_getres-funktionen, defineret i udkastet til ISO C2X-standarden, som udvider timespec_get-funktionen med funktioner svarende til POSIX clock_getres-funktionen.
  • Tilføjet close_range() funktion, som gør det muligt for en proces at lukke en hel række af åbne filbeskrivelser på én gang. Funktionen er tilgængelig på systemer med en Linux-kerne på mindst version 5.9.
  • Tilføjede funktioner closefrom og posix_spawn_file_actions_addclosefrom_np, så du kan lukke alle filbeskrivelser på én gang, hvis antal er større end eller lig med den angivne værdi.
  • I tilstandene "_DYNAMIC_STACK_SIZE_SOURCE" og "_GNU_SOURCE" er PTHREAD_STACK_MIN, MINSIGSTKSZ og SIGSTKSZ ikke længere konstanter, hvilket tillader understøttelse af registersæt med dynamisk størrelse, såsom dem, der leveres i ARM SVE-udvidelsen.
  • Linkeren implementerer "--list-diagnostics" muligheden for at vise information relateret til IFUNC (indirekte funktion) definitionsoperationer og glibc-hwcaps undermappevalg.
  • Makroen __STDC_WANT_IEC_60559_EXT__ er blevet implementeret, designet til at kontrollere tilstedeværelsen af ​​funktioner defineret i bilag F i ISO C2X-specifikationen.
  • For powerpc64*-systemer er "--disable-scv" muligheden implementeret, som giver dig mulighed for at bygge glibc uden at understøtte scv-instruktionen.
  • Kun det mindste sæt af kerne-gconv-moduler er tilbage i filen gconv-modules, og resten flyttes til en ekstra fil gconv-modules-extra.conf, der er placeret i mappen gconv-modules.d.
  • For Linux-platformen er glibc.pthread.stack_cache_size-parameteren implementeret, som kan bruges til at konfigurere størrelsen af ​​pthread-stack-cachen.
  • Udfasede inet_neta-funktionen fra -headerfilen, samt forskellige sjældent brugte funktioner fra (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdnname, p_cdname, p_cdname, p_cdname, p_cdname p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_ston) og _datenose/csser (maknst>) og <arpa/ kanon, ns _parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). I stedet for disse funktioner anbefales det at bruge separate biblioteker til at arbejde med DNS.
  • Funktionerne pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np og pthread_yield er blevet forældet, og pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr og sch_se skal bruges i stedet.
  • Stoppet med at bruge symbolske links til at binde installerede delte objekter til Glibc-versionen. Sådanne objekter er nu installeret som de er (f.eks. er libc.so.6 nu en fil snarere end et link til libc-2.34.so).
  • Som standard er fejlfindingsfunktioner i malloc deaktiveret, såsom MALLOC_CHECK_ (glibc.malloc.check), mtrace() og mcheck(), som flyttes til et separat bibliotek libc_malloc_debug.so, hvori de forældede funktioner malloc_get_state og malloc_set_state også har blevet flyttet.
  • På Linux kræver funktioner som shm_open og sem_open nu, at /dev/shm-enheden fungerer.
  • Sårbarheder rettet:
    • CVE-2021-27645: nscd-processen (navneserver-caching-dæmon) går ned på grund af et dobbeltkald til den gratis funktion, når der behandles specielt udformede netgruppeanmodninger.
    • CVE-2021-33574: Adgang til et allerede frigivet hukommelsesområde (use-after-free) i mq_notify-funktionen ved brug af SIGEV_THREAD-meddelelsestypen med en trådattribut, for hvilken der er indstillet en alternativ CPU-affinitetsmaske. Problemet kan føre til et nedbrud, men andre angrebsmuligheder kan ikke udelukkes.
    • CVE-2021-35942: Et parameterstørrelsesoverløb i wordexp-funktionen kan få applikationen til at gå ned.

Kilde: opennet.ru

Tilføj en kommentar