Glibc 2.34 vine cu remedieri de vulnerabilități, funcții noi pentru Linux și multe altele

Lansarea noii versiuni de Glibc 2.34 a fost anunțată recent . Aceasta vine după șase luni de dezvoltare și include mai multe modificări importante, cea mai notabilă fiind includerea bibliotecilor libpthread, libdl, libutil și libanl, precum și diverse corecții de erori, dintre care una cauza blocări.

Pentru cei care nu sunt familiarizați cu Glibc, este o bibliotecă GNU C, cunoscută în mod obișnuit sub numele de glibc, și este biblioteca standard de execuție pentru limbajul GNU C. Pe sistemele unde este utilizată, această bibliotecă C, care oferă și definește apeluri de sistem și alte funcții de bază, este utilizată de aproape toate programele.

Principalele caracteristici noi ale Glibc 2.34

În această nouă versiune de Glibc 2.34, au fost integrate bibliotecile principale libpthread, libdl, libutil și libanl ; utilizarea funcționalității lor în aplicații nu mai necesită conectarea lor cu indicatorii -lpthread, -ldl, -lutil și -lanl.

În plus, se menționează că s-au făcut pregătiri pentru integrarea libresolv în libc, ceea ce va permite un proces de actualizare glibc mai fluid și va simplifica implementarea în timpul rulării. De asemenea, au fost furnizate biblioteci stub pentru compatibilitate cu aplicațiile construite folosind versiuni anterioare de glibc.

Printre modificările axate pe Linux în Glibc 2.34, cea mai notabilă este capacitatea adăugată de a utiliza tipul time_t pe 64 de biți în configurații care utilizau în mod tradițional tipul time_t pe 32 de biți . Această caracteristică este disponibilă numai pe sistemele cu versiunea de kernel 5.1 și o versiune ulterioară.

O altă modificare specifică Linux este implementarea funcției `execveat` , care permite executarea unui fișier executabil dintr-un descriptor de fișier deschis . Această nouă funcție este utilizată și în implementarea apelului `fexecve`, care nu necesită montarea pseudo-sistemului de fișiere `/proc` la pornire.

Funcția close_range() a fost adăugată și ea, disponibilă pentru versiunile Linux 5.9 și ulterioare și poate fi utilizată pentru a permite unui proces să închidă simultan o întreagă gamă de descriptori de fișiere deschise. În plus, a fost implementat parametrul glibc.pthread.stack_cache_size, care poate fi utilizat pentru a ajusta dimensiunea memoriei cache a stivei pthread.

În plus, a fost adăugată funcția `_Fork`, un înlocuitor pentru funcția `fork` care îndeplinește cerințele „async-signal-safe”, ceea ce înseamnă că poate fi apelată în siguranță din gestionatoarele de semnale. În timpul execuției funcției `_Fork`, se formează un mediu minimal, suficient pentru a apela funcții în gestionatoarele de semnale, cum ar fi `raise` și `execute`, fără a invoca caracteristici care ar putea schimba blocările sau starea internă.

Pentru partea vulnerabilităților remediate în Glibc 2.34, sunt menționate următoarele:

CVE-2021-27645: eroare a procesului nscd (daemon de memorare în cache a serverului de nume) din cauza unui apel dublu către funcția free în timpul procesării cererilor de grup de rețea special concepute.

CVE-2021-33574: Acces la o zonă de memorie use-after-free în funcția mq_notify atunci când se utilizează tipul de notificare SIGEV_THREAD cu un atribut de fir de execuție pentru care este setată o mască alternativă de legare CPU. Această problemă poate provoca o blocare, dar alte opțiuni de atac nu sunt excluse.

CVE-2021-35942: Depășirea dimensiunii parametrilor în funcția wordexp ar putea duce la blocarea aplicației.

Alte schimbări notabile includ:

  • Funcția timespec_getres, definită în proiectul standardului ISO C2X, a fost adăugată și funcția timespec_get a fost mărită cu funcții similare funcției POSIX clock_getres.
  • În fișierul gconv-modules, a rămas doar un set minim de module gconv principale, iar restul au fost mutate într-un fișier suplimentar gconv-modules-extra.conf aflat în directorul gconv-modules.d.
  • Utilizarea linkurilor simbolice pentru a lega obiecte partajabile instalabile de versiunea Glibc a fost eliminată. Aceste obiecte sunt acum instalate așa cum este (de exemplu, libc.so.6 este acum un fișier mai degrabă decât un link către libc-2.34.so).
  • Pe Linux, funcțiile precum shm_open și sem_open necesită acum un sistem de fișiere pentru memoria partajată montată pe punctul de montare / dev / shm.

În cele din urmă, dacă sunteți interesați să aflați mai multe despre această nouă versiune, puteți găsi detalii la următorul link.


Adăugați ca sursă preferată în Google