Vydání systémové knihovny Glibc 2.32

Po šesti měsících vývoje publikováno vydání systémové knihovny Knihovna GNU C (glibc) 2.32, který plně vyhovuje požadavkům norem ISO C11 a POSIX.1-2017. Nová verze obsahuje opravy od 67 vývojářů.

Z těch implementovaných v Glibc 2.32 vylepšení můžete si všimnout:

  • Přidána podpora pro procesory Synopsys ARC HS (ARCv2 ISA). Port vyžaduje ke spuštění alespoň binutils 2.32, gcc 8.3 a linuxové jádro 5.1. Podporovány jsou tři varianty ABI: arc-linux-gnu, arc-linux-gnuhf a arceb-linux-gnu (big-endian);
  • Načítání modulů auditu specifikovaných v sekcích DT_AUDIT a
    DT_DEPAUDIT spustitelného souboru.

  • Pro architekturu powerpc64le je implementována podpora pro dlouhý dvojitý typ IEEE128, který je povolen při sestavování s volbou „-mabi=ieeelongdouble“.
  • Některá rozhraní API jsou označena atributem GCC 'access', který umožňuje generovat lepší varování při kompilaci v GCC 10, aby bylo možné detekovat možné přetečení vyrovnávací paměti a další scénáře mimo hranice.
  • Pro systémy Linux jsou funkce pthread_attr_setsigmask_np a
    pthread_attr_getsigmask_np, které dávají aplikaci možnost určit masku signálu pro vlákna vytvořená pomocí pthread_create.

  • Data kódování, informace o typu znaků a transliterační tabulky byly aktualizovány, aby podporovaly specifikaci Unicode 13.0.0;
  • Přidán nový soubor záhlaví , která definuje proměnnou __libc_single_threaded, kterou lze použít v aplikacích pro jednovláknové optimalizace.
  • Přidány funkce sigabbrev_np a sigdescr_np, které vracejí zkrácený název a popis signálu (například „HUP“ a „Hangup“ pro SIGHUP).
  • Přidány funkce strerrorname_np a strerrordesc_np, které vracejí název a popis chyby (například "EINVAL" a "Neplatný argument" pro EINVAL).
  • Pro platformu ARM64 byl přidán příznak "--enable-standard-branch-protection" (nebo -mbranch-protection=standard v GCC), který umožňuje mechanismu ARMv8.5-BTI (Branch Target Indicator) chránit provádění sad instrukcí, které by se neměly provádět, větvení přechodů. Blokování přechodů do libovolných částí kódu je implementováno, aby se zabránilo vytváření gadgetů v exploitech, které využívají návratově orientované programovací techniky (ROP - Return-Oriented Programming; útočník se nesnaží umístit svůj kód do paměti, ale operuje s již existujícími kusy strojových instrukcí, které končí zpětnou řídicí instrukcí, ze které je vytvořen řetězec volání pro získání požadované funkčnosti).
  • Bylo provedeno velké vyčištění zastaralých funkcí, včetně odstranění možností „--enable-obsolete-rpc“ a „--enable-obsolete-nsl“, soubor záhlaví . Funkce sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore a sigset, pole sys_siglist, _sys_siglist a sys_sigabbrev, symboly sys_errlist, _sys_errlist, sys_nerr a _sys_nerr a modul NSS byly deaktivovány
  • ldconfig byl ve výchozím nastavení přesunut tak, aby používal nový formát ld.so.cache, který je v glibc podporován téměř 20 let.
  • Opravené chyby zabezpečení:
    • CVE-2016-10228 – Smyčka v obslužném programu iconv nastane při spuštění s volbou „-c“ při zpracování nesprávných vícebajtových dat.
    • CVE-2020-10029 Poškození zásobníku při volání goniometrických funkcí s argumentem pseudo-null.
    • CVE-2020-1752 - Přístup k paměti ve funkci glob po použití po uvolnění při rozbalení odkazu na domovský adresář („~user“) v cestách.
    • CVE-2020-6096 – Nesprávné zpracování negativních hodnot parametrů v memcpy() a memmove(), které určuje velikost kopírované oblasti na platformě ARMv7. Umožňuje organizovat provádění kódu při zpracování dat naformátovaných určitým způsobem ve funkcích memcpy() a memmove(). Je příznačné, že problém zůstalo neopravené téměř dva měsíce od zveřejnění informací a pět měsíců od oznámení vývojářům Glibc.

Zdroj: opennet.ru

Přidat komentář