Rilascio 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 gli standard ISO C11 e POSIX.1-2017. La nuova versione include correzioni da 67 sviluppatori.

Realizzato in Glibc 2.32 migliorie si possono evidenziare:

  • È stata aggiunta il supporto per i processori Synopsys ARC HS (ARCv2 ISA). Per il funzionamento del porting sono necessari almeno binutils 2.32, gcc 8.3 e 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 audit 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, abilitato durante la compilazione con l'opzione “-mabi=ieeolongdouble”.
  • Alcuni API sono annotati utilizzando l'attributo GCC ‘access’, che permette di generare avvisi di migliore qualità su possibili overflow di buffer e altre varianti di fuoriuscita dai confini consentiti durante la compilazione in GCC 10.
  • Per i sistemi Linux sono state implementate le funzioni pthread_attr_setsigmask_np e
    pthread_attr_getsigmask_np, che consentono all'applicazione di specificare una maschera di segnale per i thread creati utilizzando pthread_create.
  • I dati delle codifiche, le informazioni sui tipi di carattere e le tabelle di traslitterazione sono stati aggiornati per supportare la specifica Unicode 13.0.0;
  • È stato aggiunto un nuovo file di intestazione , che definisce la variabile __libc_single_threaded, utilizzabile nelle applicazioni per ottimizzazioni a thread singolo.
  • Sono state aggiunte le funzioni sigabbrev_np e sigdescr_np, che restituiscono il nome abbreviato e la descrizione di un 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 di un errore (ad esempio, «EINVAL» e «Argomento non valido» per EINVAL).
  • Per la piattaforma ARM64 è stato aggiunto il flag «—enable-standard-branch-protection» (o -mbranch-protection=standard in GCC), che attiva il meccanismo ARMv8.5-BTI (Branch Target Indicator) per proteggere l'esecuzione di insiemi di istruzioni a cui non dovrebbero essere fatti salti in caso di branching. Il blocco dei salti su aree di codice arbitrarie è implementato per contrastare la creazione di gadget nelle exploit che utilizzano tecniche di Programmazione Orientata al Ritorno (ROP — Return-Oriented Programming, dove l'attaccante non cerca di inserire il proprio codice in memoria, ma opera su fragmente già esistenti di istruzioni macchina che terminano con un'istruzione di ritorno, creando una catena di chiamate per ottenere la funzionalità desiderata).
  • È stata effettuata una pulizia approfondita delle funzionalità obsolete, comprese 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, il modulo NSS hesiod.
  • ldconfig è stato impostato di default per utilizzare il nuovo formato ld.so.cache, supportato in glibc da quasi 20 anni.
  • Vulnerabilità risolte:
    • CVE-2016-10228 — un ciclo infinito nell'utilità iconv, manifestandosi quando eseguito con l'opzione «-c», nel caso di elaborazione di dati multibyte non validi.
    • CVE-2020-10029 — corruzione dello stack durante la chiamata a funzioni trigonometriche con argomenti pseudo-zero.
    • CVE-2020-1752 — accesso a memoria già liberata (use-after-free) nella funzione glob quando si espande un collegamento alla directory home («~user») nei percorsi.
    • CVE-2020-6096 — gestione non corretta su piattaforma ARMv7 di valori negativi del parametro in memcpy() e memmove(), che definisce la dimensione dell'area da copiare. Consente di eseguire codice quando si elaborano in memcpy() e memmove() dati formattati in un certo modo. È significativo che il problema sia rimasto rimasta non corretta per quasi due mesi dall'annuncio pubblico e cinque mesi dalla notifica agli sviluppatori di Glibc.

Fonte: opennet.ru

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