Glibc 2.35 stiže s poboljšanjima, ispravkama grešaka i još mnogo toga

Nakon šest mjeseci razvoja najavljeno je izdavanje nove verzije Glibc 2.35 u kojem uključuje popravke od 66 programera a od implementiranih poboljšanja možemo pronaći da je dodata podrška za "C.UTF-8" lokalizaciju, koja uključuje usporedbe za sve Unicode kodove, ali je ograničena na korištenje ASCII raspona u funkcijama fnmatch, regexec i regcomp za spremanje svemir.

Lokalizacija je približno 400 KB, od čega su 346 KB LC_CTYPE podaci za Unicode i moraju se instalirati zasebno (ne ugrađeni u Glibc). Podaci o kodiranju, informacije o tipu znakova i tablice transliteracije su ažurirane kako bi podržale Unicode 14.0.0 specifikaciju.

Druga promjena koja se ističe je ta Y implementirati funkcije i makroe koji zaokružuju rezultat na uži tip, Pored implementacije funkcija i makronaredbi za pronalaženje minimalnog i maksimuma brojeva s pomičnim zarezom, tipova float, long double, _FloatN i _FloatNx, opisanih u specifikaciji IEEE 754-2019.

za funkcije exp10, odgovarajući makroi se dodaju u datoteku zaglavlja, koji nisu vezani za određene tipove, plus _PRINTF_NAN_LEN_MAX makro je dodan u , predložen u nacrtu ISO C2X standarda.

Sistem dinamičkog povezivanja implementira novi algoritam klasifikacije ODS pomoću pretrage dubine (DFS) za rješavanje problema performansi prilikom rukovanja ovisnostima petlje. Za odabir DSO algoritma sortiranja, predlaže se parametar glibc.rtld.dynamic_sort, koji se može postaviti na "1" da se vrati na prethodni algoritam.

Osim toga dodana podrška za novu funkciju '__memcmpeq' na ABI, koji kompajleri koriste za optimizaciju upotrebe `memcmp' kada se povratna vrijednost ove funkcije koristi samo za provjeru statusa završetka operacije.

The podrška za automatsku registraciju niti koristeći sistemski poziv rseq (restartabilne sekvence) koji se pruža od Linux kernela 4.18. Sistemski poziv rseq omogućava da se organizuje kontinuirano izvršavanje grupe instrukcija koji se ne prekida i urezuje rezultat sa posljednjom naredbom u grupi. U suštini, pruža mogućnost za vrlo brzo atomsko izvršavanje operacija koje se, ako ih prekine druga nit, čiste i pokušavaju ponovo.

S druge strane, pruža zadana kompilacija svih izvršnih datoteka ugrađenih programa i test paketa u PIE (izvršna datoteka neovisna o poziciji) modu.

Da biste onemogućili ovo ponašanje, omogućena je opcija “–disable-default-pie”., plus za Linux, dodao je postavku glibc.malloc.hugetlb za ​​promjenu malloc implementacije da koristi sistemski poziv madvise sa oznakom MADV_HUGEPAGE za mmap i sbrk, ili direktno koristi velike memorijske stranice specificiranjem oznake MAP_HUGETLB u mmap pozivima.

U prvom slučaju, povećanje performansi se može postići korišćenjem transparentnih ogromnih stranica u madvise modu, au drugom slučaju možete koristiti sistemski rezervisane ogromne stranice (Huge Pages).

Također treba napomenuti da su neke ranjivosti ispravljene u ovoj novoj verziji:

  • CVE-2022-23218, CVE-2022-23219: Prelivanje bafera u funkcijama svcunix_create i clnt_create uzrokovano kopiranjem sadržaja parametra naziva datoteke na stog bez provjere veličine kopiranih podataka. Za aplikacije napravljene bez zaštite steka i koje koriste "unix" protokol, ranjivost bi mogla dovesti do izvršenja zlonamjernog koda prilikom obrade vrlo dugih imena datoteka.
  • CVE-2021-3998: ranjivost u funkciji realpath() uzrokovana vraćanjem netačne vrijednosti pod određenim uvjetima koji sadrže neočišćene preostale podatke iz steka. Za SUID-root fusermount program, ranjivost se može koristiti za dobivanje osjetljivih informacija iz procesne memorije, na primjer, za dobivanje informacija o pokazivaču.
  • CVE-2021-3999: Jednobajtni prekoračenje bafera u funkciji getcwd(). Problem je uzrokovan greškom koja postoji od 1995. Da biste pozvali overflow, u zasebnom imenskom prostoru tačke montiranja, samo pozovite chdir() u direktoriju "/".

Konačno Ako ste zainteresirani da saznate više o tome, detalje možete provjeriti u sljedeći link.