După șase luni de dezvoltare lansarea bibliotecii de sistem (glibc) , care respectă pe deplin standardele ISO C11 și POSIX.1-2017. Noul release include corecturi de la 67 de dezvoltatori.
Printre modificările implementate în Glibc 2.32 se pot menționa:
- A fost adăugată suport pentru procesoarele Synopsys ARC HS (ARCv2 ISA). Portarea necesită cel puțin binutils 2.32, gcc 8.3 și kernel Linux 5.1. Sunt acceptate trei variante ABI arc-linux-gnu, arc-linux-gnuhf și arceb-linux-gnu (big-endian);
- A fost implementată încărcarea modulelor de audit, specificate în secțiunile DT_AUDIT și
DT_DEPAUDIT ale fișierului executabil. - Pentru arhitectura powerpc64le a fost implementat suport pentru tipul IEEE128 long double, activat la compilare cu opțiunea „-mabi=ieeolongdouble”.
- Anumite API-uri sunt annotate folosind atributul GCC ‘access’, permițând generarea de avertizări mai calitative la compilare în GCC 10, pentru a identifica posibilele suprascrieri de buffer și alte erori de depășire a limitelor.
- Pentru sistemele Linux au fost implementate funcțiile pthread_attr_setsigmask_np și
pthread_attr_getsigmask_np, care permit aplicației să specifice o mască de semnal pentru thread-urile create cu pthread_create. - Datele de codare, informațiile despre tipurile de caractere și tabelele de transliterare au fost actualizate pentru a susține specificația Unicode 13.0.0;
- A fost adăugat un nou fișier de antet <sys/single_threaded.h>, care definește variabila __libc_single_threaded, care poate fi folosită în aplicații pentru optimizări monothreading.
- Au fost adăugate funcții sigabbrev_np și sigdescr_np, care returnează denumirea abreviată și descrierea semnalului (de exemplu, „HUP” și „Hangup” pentru SIGHUP).
- Au fost adăugate funcții strerrorname_np și strerrordesc_np, care returnează numele și descrierea erorii (de exemplu, „EINVAL” și „Argument invalid” pentru EINVAL).
- Pentru platforma ARM64 a fost adăugată opțiunea „—enable-standard-branch-protection” (sau -mbranch-protection=standard în GCC), activând mecanismul ARMv8.5-BTI (Branch Target Indicator) pentru a proteja execuția seturilor de instrucțiuni către care nu ar trebui să se facă salturi în cadrul branșării. Blocarea salturilor către zone aleatorii de cod este implementată pentru a contracara crearea gadgeturilor în exploitate, folosind tehnici de programare orientate pe returnare (ROP — Return-Oriented Programming, unde atacatorul nu încearcă să plaseze propriul cod în memorie, ci operează cu fragmente existente de instrucțiuni mașină, care se termină cu o instrucțiune de returnare a controlului, din care se construiesc lanțuri de apeluri pentru a obține funcționalitatea dorită).
- A fost realizată o curățare majoră a caracteristicilor învechite, inclusiv opțiunile „—enable-obsolete-rpc” și „—enable-obsolete-nsl” au fost eliminate, fișierul de antet <sys/sysctl.h>. Funcțiile sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore și sigset, array-urile sys_siglist, _sys_siglist și sys_sigabbrev, simbolurile sys_errlist, _sys_errlist, sys_nerr și _sys_nerr, modulul NSS hesiod au fost declarate obsolete.
- ldconfig, în mod implicit, a fost mutat să folosească noul format ld.so.cache, care este suportat în glibc de aproape 20 de ani.
- S-au remediat vulnerabilitățile:
- CVE-2016-10228 — buclă infinisă în utilitarul iconv, care apare la rularea cu opțiunea „-c”, atunci când se procesează date multibite necorespunzătoare.
- CVE-2020-10029 — corupția stivei la apelul funcțiilor trigonometrice cu un argument pseudo-zero.
- CVE-2020-1752 — accesul la o zonă de memorie după ce a fost eliberată (use-after-free) în funcția glob atunci când se expune o referință către directorul home („~user”) în căi.
- CVE-2020-6096 — procesarea incorectă pe platforma ARMv7 a valorilor negative pentru parametrul din memcpy() și memmove(), care definește dimensiunea zonei copiate. organizarea executării codului în cadrul funcțiilor memcpy() și memmove() pentru datele prezentate într-un anumit mod. Este remarcabil că problema nerezolvată aproape două luni de la publicarea informațiilor și cinci luni de la notificarea dezvoltatorilor Glibc.
Sursa: opennet.ro
