Po šesti měsících vývoje vydání systémové knihovny (glibc) , která plně vyhovuje normám ISO C11 a POSIX.1-2017. Nová verze obsahuje opravy od 67 vývojářů.
Zrealizováno v Glibc 2.32 můžeme zmínit:
- Byla přidána podpora procesorů Synopsys ARC HS (ARCv2 ISA). Pro funkčnost portu je potřeba alespoň binutils 2.32, gcc 8.3 a jádro Linux 5.1. Podporovány jsou tři varianty ABI arc-linux-gnu, arc-linux-gnuhf a arceb-linux-gnu (big-endian);
- Bylo implementováno načítání modulů auditu uvedených v sekcích DT_AUDIT a
DT_DEPAUDIT spustitelného souboru. - Pro architekturu powerpc64le byla implementována podpora typu IEEE128 long double, zahrnutá při sestavení s parametrem „-mabi=ieeelongdouble“.
- Některé API jsou anotovány pomocí atributu GCC ‘access’, což umožňuje při kompilaci v GCC 10 generovat kvalitnější varování při určování možných přetečení bufferů a dalších variant výstupu za povolené hranice.
- Pro systémy Linux byly implementovány funkce pthread_attr_setsigmask_np a
pthread_attr_getsigmask_np, které aplikaci umožňují specifikovat masku signálů pro vlákna vytvořená pomocí pthread_create. - Data kódování, informace o typech znaků a tabulky transliterace byly aktualizovány pro podporu specifikace Unicode 13.0.0;
- Byl přidán nový hlavičkový soubor , který definuje proměnnou __libc_single_threaded, jež může být použita v aplikacích pro optimalizace v jednovláknových aplikacích.
- Byly 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).
- Byly přidány funkce strerrorname_np a strerrordesc_np, které vracejí název a popis chyby (například „EINVAL“ a „Invalid argument“ pro EINVAL).
- Pro platformu ARM64 byla přidána volba „—enable-standard-branch-protection“ (nebo -mbranch-protection=standard v GCC), která aktivuje mechanismus ARMv8.5-BTI (Branch Target Indicator) pro ochranu vykonávání sad instrukcí, na které by neměly být prováděny přechody během větvení. Blokování přechodů na libovolné části kódu bylo implementováno k prevenci vzniku gadgetů v exploitech, které využívají techniky návratově orientovaného programování (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 kousky strojových instrukcí, které končí instrukcí pro návrat řízení, z nichž se vytváří řetězec volání pro získání požadované funkčnosti).
- Byla provedena výrazná očista zastaralých funkcí, včetně odstranění možností „—enable-obsolete-rpc“ a „—enable-obsolete-nsl“, hlavičkového souboru . Byly označeny za zastaralé 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, NSS modul hesiod.
- ldconfig je nyní ve výchozím nastavení převeden na používání nového formátu ld.so.cache, který je podporován v glibc již téměř 20 let.
- Opraveny zranitelnosti:
- CVE-2016-10228 – zamykání v utilitě iconv, projevující se při spuštění s možností „-c“, když se zpracovávají neplatná multibyte data.
- CVE-2020-10029 – poškození zásobníku při volání trigonometrických funkcí s pseudo-nulovým argumentem.
- CVE-2020-1752 – přístup k oblasti paměti po jejím uvolnění (use-after-free) ve funkci glob při rozbalení odkazu na domovský adresář („~user“) v cestách.
- CVE-2020-6096 – nesprávné zpracování na platformě ARMv7 záporných hodnot parametru v memcpy() a memmove(), určující velikost kopírované oblasti. organizovat provádění kódu při zpracování v funkcích memcpy() a memmove() specifickým způsobem formátovaných dat. Je pozoruhodné, že problém neopravený téměř dva měsíce od okamžiku veřejného oznámení a pět měsíců od upozornění vývojářů Glibc.
Zdroj: opennet.ru
