Uscita della libreria di sistema Glibc 2.32

Dopo sei mesi di sviluppo pubblicato rilascio della libreria di sistema GNU C Library (glibc) 2.32, che soddisfa completamente i requisiti degli standard ISO C11 e POSIX.1-2017. La nuova versione include correzioni da 67 sviluppatori.

Tra le implementazioni in Glibc 2.32 miglioramenti si possono notare:

  • È stato aggiunto il supporto per i processori Synopsys ARC HS (ARCv2 ISA). Per far funzionare la porta è necessario almeno binutils 2.32, gcc 8.3 e un kernel Linux 5.1. Sono supportate tre varianti ABI: arc-linux-gnu, arc-linux-gnuhf e arceb-linux-gnu (big-endian);
  • È stata implementata il caricamento dei moduli di auditing specificati nelle sezioni DT_AUDIT e
    DT_DEPAUDIT del file eseguibile.
  • Per l'architettura powerpc64le è stato implementato il supporto per il tipo IEEE128 long double, attivabile durante la compilazione con l'opzione «-mabi=ieeolongdouble».
  • Alcuni API sono stati annotati utilizzando l'attributo GCC ‘access’, permettendo durante la compilazione in GCC 10 di generare avvisi di qualità superiore nella rilevazione di potenziali overflow di buffer e altri casi di superamento dei limiti.
  • Per i sistemi Linux sono state implementate le funzioni pthread_attr_setsigmask_np e
    pthread_attr_getsigmask_np, che offrono all'applicazione la possibilità di specificare una maschera di segnale per i thread creati tramite pthread_create.
  • I dati di codifica, le informazioni sui tipi di caratteri e le tabelle di translitterazione sono stati aggiornati per supportare la specifica Unicode 13.0.0;
  • È stato aggiunto un nuovo file di intestazione <sys/single_threaded.h>, che definisce la variabile __libc_single_threaded, utilizzabile nelle applicazioni per ottimizzazioni monothread.
  • Sono state aggiunte le funzioni sigabbrev_np e sigdescr_np, che restituiscono il nome abbreviato e la descrizione del segnale (ad esempio, «HUP» e «Hangup» per SIGHUP).
  • Sono state aggiunte le funzioni strerrorname_np e strerrordesc_np, che restituiscono il nome e la descrizione dell'errore (ad esempio, «EINVAL» e «Invalid argument» per EINVAL).
  • Per la piattaforma ARM64 è stato aggiunto il flag «—enable-standard-branch-protection» (o -mbranch-protection=standard in GCC), attivando il meccanismo ARMv8.5-BTI (Branch Target Indicator) per proteggere l'esecuzione di insiemi di istruzioni su cui non devono avvenire salti durante il branching. Il blocco dei salti verso aree arbitrarie di codice è stato implementato per contrastare la creazione di gadget negli exploit che utilizzano tecniche di programmazione orientata al ritorno (ROP - Return-Oriented Programming, in cui l'attaccante non cerca di inserire il proprio codice in memoria, ma opera su frammenti esistenti di istruzioni macchina che terminano con l'istruzione di ritorno, da cui si costruiscono catene di chiamate per ottenere la funzionalità desiderata).
  • È stata effettuata una profonda pulizia delle funzionalità obsolete, tra cui sono state rimosse le opzioni «—enable-obsolete-rpc» e «—enable-obsolete-nsl», il file di intestazione . Sono state dichiarate obsolete le funzioni sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore e sigset, gli array sys_siglist, _sys_siglist e sys_sigabbrev, i simboli sys_errlist, _sys_errlist, sys_nerr e _sys_nerr, e il modulo NSS hesiod.
  • ldconfig per impostazione predefinita è stato trasferito all'utilizzo del nuovo formato ld.so.cache, supportato in glibc da quasi 20 anni.
  • Sono state risolte le vulnerabilità:
    • CVE-2016-10228 - un ciclo infinito nell'utility iconv, che si manifesta quando si avvia con l'opzione «-c» nel caso di elaborazione di dati multibyte non corretti.
    • CVE-2020-10029 - corruzione dello stack durante la chiamata di funzioni trigonometriche con un argomento pseudo-zero.
    • CVE-2020-1752 - accesso ad un'area di memoria dopo che è stata liberata (use-after-free) nella funzione glob quando si espande un riferimento alla home directory («~user») nei percorsi.
    • CVE-2020-6096 - gestione errata sulla piattaforma ARMv7 di valori negativi del parametro in memcpy() e memmove(), che definisce la dimensione dell'area da copiare. Permette di organizzare l'esecuzione di codice durante l'elaborazione in funzioni memcpy() e memmove() di dati strutturati in un certo modo. È significativo che il problema sia rimasto non risolto per quasi due mesi dall'annuncio pubblico e cinque mesi dal notificare i sviluppatori di Glibc.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster