Po šesti měsících vývoje byl vydán nový systémový knihovní balíček GNU C Library (glibc) 2.40, který plně vyhovuje požadavkům norem ISO C11 a POSIX.1-2017. Nová verze zahrnuje opravy od 68 vývojářů.
Mezi vylepšeními implementovanými v Glibc 2.40 lze vyzdvihnout:
- Do hlavičkového souboru math.h byly přidány nové exponenciální a logaritmické funkce definované v normě C23: exp2m1, exp10m1, log2p1, log10p1 a logp1. Funkce jsou k dispozici v variantách pro typy float, double, long double, _FloatN a _FloatNx.
- Byl přidán makro _ISOC23_SOURCE, které definuje použití funkcí nabízených v normě C23 (v současnosti je v Glibc implementována pouze část funkcí C23). Použití C23 lze také povolit při kompilaci pomocí volby v GCC -std=c23, -std=gnu23, -std=c2x nebo -std=gnu2x.
- Byla přidána nastavení 'glibc.rtld.enable_secure', která umožňuje během testování spouštět program tak, jako by měl flag pro změnu identifikátoru uživatele (setuid).
- Na platformě Linux byl hlavičkový soubor epoll.h aktualizován pro podporu nových ioctl a struktur epoll, které se objevily v jádře Linux 6.9.
- Funkčnost pro detekci možných přetečení bufferu a s tím souvisejících chyb zabezpečení během vykonávání funkcí pro manipulaci se řetězci a správu paměti ('_FORTIFY_SOURCE') byla přizpůsobena pro sestavení Glibc pomocí překladače Clang.
- V knihovně s vektorovými matematickými funkcemi (libmvec) byly navrženy implementace funkcí acosh, asinh, atanh, cbrt, cosh, erf, erfc, hypot, pow, sinh a tanh pro architekturu Aarch64.
- Na systémech x86 byla pro urychlení zápisu velkých datových sad ve funkci memset poskytnuta možnost vypnout použití dočasných bufferů. Optimalizace se aktivuje pomocí nastavení 'x86_memset_non_temporal_threshold'.
- Makra v hlavičkovém souboru stdbit.h, pracující s různými typy (type-generic), byla při použití GCC 14 převedena na použití vestavěných funkcí __builtin_stdc_bit_ceil pro podporu operandů s typy __int128 a _BitInt(N).
- Pole s epochálním počítadlem času ve strukturách lastlog, utmp a utmpx byla převedena z použití 32bitového podepsaného typu na nepodepsaný typ, což umožňuje prodloužit maximálně adresovatelné počítadlo času z roku 2038 na rok 2106.
- Opraveny zranitelnosti:
- CVE-2024-2961 — přetečení zásobníku při převodu speciálně formátovaných řetězců v kódování ISO-2022-CN-EXT funkcí iconv(). V praxi může být zranitelnost využita k dálkovému útoku na aplikace PHP, což povede k provedení kódu.
- CVE-2024-33599 — přetečení zásobníku v kódu pro práci s cache netgroup v procesu nscd (Name Service Cache Daemon). Zranitelnost může být zneužita zasláním speciálně formátované žádosti ze strany klienta.
- CVE-2024-33600 — dereferencování nulového ukazatele v procesu nscd, což může vést k havárii při zpracování určitých žádostí.
- CVE-2024-33601 — chyba při práci s cache netgroup může vést k havárii procesu nscd důsledkem selhání alokace paměti.
- CVE-2024-33602 — poškození paměti při práci s cache netgroup v procesu nscd.
Zdroj: opennet.ru
