Vydání systémové knihovny Glibc 2.34

Po šesti měsících vývoje byl zveřejněn nový release systémové knihovny GNU C Library (glibc) 2.34, která plně splňuje požadavky standardů ISO C11 a POSIX.1-2017. Nové verze zahrnuje opravy od 66 vývojářů.

Mezi vylepšeními, která byla realizována v Glibc 2.34, lze zmínit:

  • Do hlavního jádra libc byly integrovány knihovny libpthread, libdl, libutil a libanl, jejichž funkčnost v aplikacích již nevyžaduje propojování pomocí příznaků -lpthread, -ldl, -lutil a -lanl. Byla provedena příprava na integraci libresolv do libc. Integrace umožní dosáhnout souvislejšího procesu aktualizace glibc a usnadní implementaci runtime. Pro zajištění zpětné kompatibility s aplikacemi sestavenými se staršími verzemi glibc byly poskytnuty stub knihovny. Vzhledem k rozšíření počtu struktur a funkcí poskytovaných v glibc se mohou vyskytnout problémy v aplikacích, kde došlo ke kolizi názvů s dříve nepoužívanými knihovnami libpthread, libdl, libutil, libresolv a libanl.
  • Byla poskytnuta možnost použití 64bitového typu time_t v konfiguracích, kde se tradičně používal 32bitový typ time_t. V takových konfiguracích, například na systémech x86, zůstává ve výchozím nastavení zatím 32bitový time_t, ale toto chování lze nyní změnit pomocí makra „_TIME_BITS“. Možnost je k dispozici pouze na systémech s jádrem Linux minimálně verze 5.1.
  • Byla přidána funkce _Fork, náhrada funkce fork, která je v souladu s požadavky „async-signal-safe“, tedy umožňuje bezpečné volání z obsluh signálů. Během provádění _Fork vzniká minimální prostředí, dostatečné pro volání funkcí v obsluhách signálů, jako jsou raise a execve, bez využívání prostředků, které by mohly vést ke změně zámků nebo vnitřního stavu. Volání _Fork bude definováno v budoucí verzi standardu POSIX, ale prozatím je zahrnuto mezi rozšíření GNU.
  • Pro platformu Linux byla implementována funkce execveat, která umožňuje spustit spustitelný soubor z otevřeného popisovače souboru. Nová funkce se také využívá při implementaci volání fexecve, které nevyžaduje k spuštění přítomnost přimontovaného pseudo-FS /proc.
  • Byla přidána funkce timespec_getres, definovaná v návrhu standardu ISO C2X, která doplní funkci timespec_get o možnosti podobné POSIX funkci clock_getres.
  • Byla přidána funkce close_range(), která umožňuje procesu zavřít celé rozmezí otevřených popisovačů souborů najednou. Funkce je dostupná na systémech s jádrem Linux verze 5.9 nebo novější.
  • Byly přidány funkce closefrom a posix_spawn_file_actions_addclosefrom_np, které umožňují zavřít všechny popisovače souborů s číslem větším nebo rovným zadané hodnotě.
  • V režimech „_DYNAMIC_STACK_SIZE_SOURCE“ a „_GNU_SOURCE“ již hodnoty PTHREAD_STACK_MIN, MINSIGSTKSZ a SIGSTKSZ nejsou konstanty, což umožňuje podporu registrů dynamické velikosti, například poskytovaných rozšířením ARM SVE.
  • Ve linkeru byla implementována možnost „—list-diagnostics“ pro výstup informací souvisejících s operacemi definice IFUNC (indirect function) a výběru podadresáře glibc-hwcaps.
  • Byl realizován makro __STDC_WANT_IEC_60559_EXT__, určené pro kontrolu přítomnosti funkcí definovaných v aplikaci „F“ specifikace ISO C2X.
  • Pro systémy powerpc64* byla implementována možnost „—disable-scv“, která umožňuje sestavit glibc bez podpory instrukce scv.
  • V souboru gconv-modules zůstal pouze minimální soubor základních gconv modulů, zatímco ostatní byly přesunuty do dalšího souboru gconv-modules-extra.conf umístěného v adresáři gconv-modules.d.
  • Pro platformu Linux byla implementována proměnná glibc.pthread.stack_cache_size, která může být použita pro nastavení velikosti cache zásobníku pthread.
  • Funkce inet_neta z hlavičkového souboru byla prohlášena za zastaralou, stejně jako různé zřídka používané funkce 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_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_nameinquery, 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_subdomain). Místo těchto funkcí se doporučuje používat samostatné knihovny pro práci s DNS.
  • Funkce pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np a pthread_yield byly prohlášeny za zastaralé, přičemž by měly být nahrazeny pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust a sched_yield.
  • Byly zrušeny symbolické odkazy pro propojení instalovaných sdílených objektů s verzí Glibc. Tyto objekty jsou nyní instalovány tak, jak jsou (například libc.so.6 nyní představuje soubor, nikoli odkaz na libc-2.34.so).
  • Ve výchozím nastavení jsou zakázány ladicí funkce v malloc, jako je MALLOC_CHECK_ (glibc.malloc.check), mtrace() a mcheck(), které byly přesunuty do samostatné knihovny libc_malloc_debug.so, do které byly také přesunuty zastaralé funkce malloc_get_state a malloc_set_state.
  • V Linuxu je nyní pro fungování funkcí, jako jsou shm_open a sem_open, nutné mít zařízení /dev/shm.
  • Opraveny zranitelnosti:
    • CVE-2021-27645: pád procesu nscd (daemon pro mezipaměť názvů) kvůli dvojímu vyvolání funkce free při zpracování speciálně upravených požadavků na netgroup.
    • CVE-2021-33574: přístup k již uvolněné oblasti paměti (use-after-free) ve funkci mq_notify při použití typu oznámení SIGEV_THREAD s atributem vlákna, pro který je nastavena alternativní maska pro vázání na CPU. Problém může vést k pádu, ale nelze vyloučit ani další varianty útoků.
    • CVE-2021-35942: přetečení parametru velikosti ve funkci wordexp může vést k pádu aplikace.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster