Vydanie systémovej knižnice Glibc 2.34

Po šiestich mesiacoch vývoja bola vydaná systémová knižnica GNU C Library (glibc) 2.34, ktorá plne vyhovuje požiadavkám noriem ISO C11 a POSIX.1-2017. Nové vydanie obsahuje opravy od 66 vývojárov.

Niektoré z vylepšení implementovaných v Glibc 2.34 zahŕňajú:

  • Knižnice libpthread, libdl, libutil a libanl sú integrované do hlavnej štruktúry libc, použitie ich funkcionality v aplikáciách už nevyžaduje prepojenie pomocou príznakov -lpthread, -ldl, -lutil a -lanl. Boli urobené prípravy na integráciu libresolv do libc. Integrácia umožní hladší proces aktualizácie glibc a zjednoduší implementáciu za behu. Knižnice stub poskytujú spätnú kompatibilitu s aplikáciami vytvorenými so staršími verziami glibc. V dôsledku rozšírenia počtu štruktúr a funkcií poskytovaných v glibc môžu nastať problémy v aplikáciách, v ktorých dochádza k prieniku mien s doteraz nepoužívanými knižnicami libpthread, libdl, libutil, libresolv a libanl.
  • Poskytuje možnosť použiť 64-bitový typ time_t v konfiguráciách, ktoré tradične používali 32-bitový typ time_t. V takýchto konfiguráciách, napríklad na systémoch x86, je predvolená hodnota stále 32-bitová time_t, ale toto správanie je teraz možné zmeniť pomocou makra "_TIME_BITS". Táto funkcia je dostupná iba na systémoch s jadrom Linuxu aspoň verzie 5.1.
  • Pridaná funkcia _Fork, náhrada za funkciu vidlice, ktorá spĺňa požiadavky “async-signal-safe”, t.j. umožňujúce bezpečné volanie od operátorov signálov. Počas vykonávania _Fork sa vytvorí minimálne prostredie, ktoré je dostatočné na volanie funkcií v obsluhe signálov, ako je raise a execve, bez toho, aby zahŕňalo funkcie, ktoré by mohli zmeniť zámky alebo vnútorný stav. Volanie _Fork bude definované v budúcej verzii štandardu POSIX, ale zatiaľ je zahrnuté ako rozšírenie GNU.
  • Pre platformu Linux bola implementovaná funkcia execveat, ktorá umožňuje spustiť spustiteľný súbor z otvoreného deskriptora súboru. Nová funkcia sa používa aj pri implementácii volania fexecve, ktoré pri štarte nevyžaduje pripojený pseudo-FS /proc.
  • Pridaná funkcia timespec_getres, definovaná v návrhu normy ISO C2X, ktorá rozširuje funkciu timespec_get o možnosti podobné funkcii POSIX clock_getres.
  • Pridaná funkcia close_range(), ktorá umožňuje procesu zatvoriť celý rad otvorených deskriptorov súborov naraz. Funkcia je dostupná na systémoch s jadrom Linux verzie aspoň 5.9.
  • Pridané funkcie closefrom a posix_spawn_file_actions_addclosefrom_np, ktoré vám umožňujú zatvoriť naraz všetky deskriptory súborov, ktorých počet je väčší alebo rovný zadanej hodnote.
  • V režimoch "_DYNAMIC_STACK_SIZE_SOURCE" a "_GNU_SOURCE" už PTHREAD_STACK_MIN, MINSIGSTKSZ a SIGSTKSZ nie sú konštanty, čo umožňuje podporu pre dynamicky veľké sady registrov, ako sú tie, ktoré poskytuje rozšírenie ARM SVE.
  • Linker implementuje voľbu "--list-diagnostics" na zobrazenie informácií súvisiacich s operáciami definície IFUNC (nepriama funkcia) a výberom podadresára glibc-hwcaps.
  • Bolo implementované makro __STDC_WANT_IEC_60559_EXT__ určené na kontrolu prítomnosti funkcií definovaných v prílohe F špecifikácie ISO C2X.
  • Pre systémy powerpc64* bola implementovaná možnosť „--disable-scv“, ktorá vám umožňuje zostaviť glibc bez podpory inštrukcie scv.
  • V súbore gconv-modules zostala iba minimálna sada základných modulov gconv a zvyšok sa presunie do dodatočného súboru gconv-modules-extra.conf, ktorý sa nachádza v adresári gconv-modules.d.
  • Pre platformu Linux je implementovaný parameter glibc.pthread.stack_cache_size, ktorý možno použiť na konfiguráciu veľkosti vyrovnávacej pamäte zásobníka pthread.
  • Funkcia inet_neta zo súboru hlavičky bola zastaraná , ako aj rôzne zriedka používané funkcie z (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname, p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_hoputas, p res_is_hoservt, p res_is_hoservt, s dopyt res_name, res_queriesmatch, res_randomid, sym_ntop , sym_ntos, sym_ston) a (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdoména). Namiesto týchto funkcií sa odporúča používať samostatné knižnice pre prácu s DNS.
  • Funkcie pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np a pthread_yield boli zastarané a namiesto nich boli použité pthread_mutex_consistent, thread_mutexattr_getrobust, hread_mutexattr_setrobust a schread.
  • Prestalo sa používať symbolické odkazy na viazanie nainštalovaných zdieľaných objektov na verziu Glibc. Takéto objekty sú teraz nainštalované tak, ako sú (napr. libc.so.6 je teraz súbor a nie odkaz na libc-2.34.so).
  • V predvolenom nastavení sú funkcie ladenia v malloc deaktivované, ako napríklad MALLOC_CHECK_ (glibc.malloc.check), mtrace() a mcheck(), ktoré sú presunuté do samostatnej knižnice libc_malloc_debug.so, do ktorej sa dostali aj zastarané funkcie malloc_get_state a malloc_set_state bol presunutý.
  • V systéme Linux teraz funkcie ako shm_open a sem_open vyžadujú, aby fungovalo zariadenie /dev/shm.
  • Opravené chyby zabezpečenia:
    • CVE-2021-27645: Proces nscd (démon ukladania do vyrovnávacej pamäte nameservera) zlyhá v dôsledku dvojitého volania bezplatnej funkcie pri spracovávaní špeciálne vytvorených požiadaviek sieťovej skupiny.
    • CVE-2021-33574: Prístup k už uvoľnenej oblasti pamäte (use-after-free) vo funkcii mq_notify pri použití typu upozornenia SIGEV_THREAD s atribútom vlákna, pre ktorý je nastavená alternatívna maska ​​afinity CPU. Problém by mohol viesť k havárii, ale nemožno vylúčiť iné možnosti útoku.
    • CVE-2021-35942: Pretečenie veľkosti parametra vo funkcii wordexp môže spôsobiť zlyhanie aplikácie.

Zdroj: opennet.ru

Pridať komentár