Neseniai paskelbta apie naujos „Glibc 2.34“ versijos išleidimą. Ji pasirodė po šešių mėnesių kūrimo ir joje yra keletas svarbių pakeitimų, iš kurių svarbiausi yra „libpthread“, „libdl“, „libutil“ ir „libanl“ bibliotekų įtraukimas, taip pat įvairių klaidų ištaisymai, iš kurių viena sukeldavo gedimus.
Tiems, kurie nėra susipažinę su „Glibc“, tai GNU C biblioteka, paprastai žinoma kaip „glibc“, ir standartinė GNU C kalbos vykdymo laiko biblioteka. Sistemose, kuriose ji naudojama, šią C biblioteką, kuri teikia ir apibrėžia sisteminius iškvietimus ir kitas pagrindines funkcijas, naudoja beveik visos programos.
Pagrindinės naujos „Glibc 2.34“ funkcijos
Šioje naujoje „Glibc 2.34“ versijoje integruotos pagrindinės bibliotekos „libpthread“, „libdl“, „libutil“ ir „libanl“ ; norint naudoti jų funkcijas programose, nebereikia jų susieti su indikatoriais „-lpthread“, „-ldl“, „-lutil“ ir „-lanl“.
Be to, minima, kad buvo pasirengta integruoti „libresolv“ į „libc“, o tai leis sklandžiau atnaujinti „glibc“ ir supaprastinti diegimą vykdymo metu. Taip pat buvo pateiktos papildomos bibliotekos, skirtos suderinamumui su programomis, sukurtomis naudojant ankstesnes „glibc“ versijas.
Tarp „Glibc 2.34“ versijoje atliktų „Linux“ pakeitimų labiausiai pastebimas yra pridėta galimybė naudoti 64 bitų „time_t“ tipą konfigūracijose , kuriose tradiciškai buvo naudojamas 32 bitų „time_t“ tipas . Ši funkcija galima tik sistemose su 5.1 ir naujesnėmis branduolio versijomis.
Kitas „Linux“ būdingas pakeitimas yra funkcijos „execveat“ įdiegimas , leidžiantis vykdyti vykdomąjį failą iš atviro failo deskriptoriaus . Ši nauja funkcija taip pat naudojama įgyvendinant iškvietimą „fexecve“, kuriam nereikia pseudo-failų sistemos „/proc“ prijungti paleidžiant sistemą.
Taip pat buvo pridėta funkcija close_range(), kuri prieinama „Linux“ 5.9 ir naujesnėse versijose ir gali būti naudojama norint leisti procesui vienu metu uždaryti visą atidarytų failų aprašų diapazoną. Be to, buvo įdiegtas parametras glibc.pthread.stack_cache_size, kurį galima naudoti „pthread“ steko talpyklos dydžiui reguliuoti.
Be to, buvo pridėta funkcija „_Fork“, pakeičianti funkciją „fork“ , kuri atitinka „async-signal-safe“ reikalavimus, o tai reiškia, kad ją galima saugiai iškviesti iš signalų tvarkyklių. Funkcijos „_Fork“ vykdymo metu sukuriama minimali aplinka, kurios pakanka iškviesti tokias funkcijas signalų tvarkyklėse kaip „raise“ ir „execute“, neiškviečiant funkcijų, kurios galėtų pakeisti užraktus ar vidinę būseną.
Kalbant apie dalį „Glibc 2.34“ ištaisytų pažeidžiamumų, paminėta:
CVE-2021-27645: nscd proceso (vardų serverio talpyklos demono) klaida dėl dvigubo „free“ funkcijos iškvietimo apdorojant specialiai sukurtas tinklo grupių užklausas.
CVE-2021-33574: Prieiga prie „use-after-free“ atminties srities funkcijoje „mq_notify“, kai naudojamas SIGEV_THREAD pranešimų tipas su gijos atributu, kuriam nustatyta alternatyvi CPU susiejimo kaukė. Ši problema gali sukelti gedimą, tačiau neatmetamos ir kitos atakos galimybės.
CVE-2021-35942: Parametro dydžio perpildymas funkcijoje „wordexp“ gali sukelti programos gedimą.
Kiti svarbūs pakeitimai:
- Pridėta „timespec_getres“ funkcija, apibrėžta ISO C2X standarto projekte, ir „timespec_get“ funkcija padidinta naudojant galimybes, panašias į funkciją „POSIX clock_getres“.
- Gconv-modules faile liko tik minimalus pagrindinių gconv modulių rinkinys, o likusieji buvo perkelti į papildomą failą gconv-modules-extra.conf, esantį kataloge gconv-modules.d
- Simbolinių nuorodų naudojimas įdiegtiems bendrinamiems objektams susieti su „Glibc“ versija buvo pašalintas. Šie objektai dabar yra įdiegti tokie, kokie yra (pvz., „Libc.so.6“ dabar yra failas, o ne nuoroda į „libc-2.34.so“).
- „Linux“ tokioms funkcijoms kaip „shm_open“ ir „sem_open“ dabar reikalinga bendros atminties failų sistema, prijungta prie / dev / shm prijungimo taško.
Galiausiai, jei norite sužinoti daugiau apie šią naują versiją, išsamią informaciją galite rasti šioje nuorodoje.