Glibc 2.34 arriva con correzioni di vulnerabilità, nuove funzioni per Linux e altro

È stata recentemente annunciata la pubblicazione della nuova versione di Glibc, la 2.34. Il rilascio è avvenuto dopo sei mesi di sviluppo e include diverse modifiche importanti, tra cui spiccano l'integrazione delle librerie libpthread, libdl, libutil e libanl, oltre a varie correzioni di bug, uno dei quali causava arresti anomali del programma.

Per chi non la conoscesse, Glibc è una libreria C di GNU, comunemente nota come glibc, ed è la libreria runtime standard per il linguaggio C di GNU. Nei sistemi in cui viene utilizzata, questa libreria C, che fornisce e definisce chiamate di sistema e altre funzioni di base, è utilizzata da quasi tutti i programmi.

Principali novità di Glibc 2.34

In questa nuova versione di Glibc 2.34, le librerie principali libpthread, libdl, libutil e libanl sono state integrate ; l'utilizzo delle loro funzionalità nelle applicazioni non richiede più il collegamento tramite gli indicatori -lpthread, -ldl, -lutil e -lanl.

Inoltre, viene menzionato che sono stati fatti i preparativi per integrare libresolv in libc, il che consentirà un processo di aggiornamento di glibc più agevole e semplificherà l'implementazione a runtime. Sono state fornite anche librerie stub per garantire la compatibilità con le applicazioni create utilizzando versioni precedenti di glibc.

Tra le modifiche incentrate su Linux in Glibc 2.34, la più rilevante è l' aggiunta della possibilità di utilizzare il tipo time_t a 64 bit in configurazioni che tradizionalmente utilizzavano il tipo time_t a 32 bit . Questa funzionalità è disponibile solo sui sistemi con kernel versione 5.1 e successive.

Un'altra novità specifica di Linux è l' implementazione della funzione `execveat` , che permette di eseguire un file eseguibile da un descrittore di file aperto . Questa nuova funzione viene utilizzata anche nell'implementazione della chiamata `fexecve`, che non richiede il montaggio del pseudo-filesystem `/proc` all'avvio.

È stata inoltre aggiunta la funzione close_range(), disponibile per le versioni di Linux 5.9 e successive, che consente a un processo di chiudere contemporaneamente un intero intervallo di descrittori di file aperti. In aggiunta, è stato implementato il parametro glibc.pthread.stack_cache_size, utilizzabile per regolare le dimensioni della cache dello stack di pthread.

Inoltre, è stata aggiunta la funzione `_Fork`, che sostituisce la funzione `fork` e soddisfa i requisiti "async-signal-safe", ovvero può essere chiamata in modo sicuro dai gestori di segnali. Durante l'esecuzione di `_Fork`, viene creato un ambiente minimo, sufficiente per chiamare funzioni nei gestori di segnali come `raise` ed `execute`, senza invocare funzionalità che potrebbero modificare i lock o lo stato interno.

Per la parte delle vulnerabilità risolte in Glibc 2.34 si menzionano le seguenti:

CVE-2021-27645: errore del processo nscd (demone di caching del server dei nomi) dovuto a una doppia chiamata alla funzione free durante l'elaborazione di richieste di gruppi di rete appositamente create.

CVE-2021-33574: Accesso a un'area di memoria use-after-free nella funzione mq_notify quando si utilizza il tipo di notifica SIGEV_THREAD con un attributo thread per il quale è impostata una maschera di binding CPU alternativa. Questo problema può causare un arresto anomalo, ma non sono escluse altre opzioni di attacco.

CVE-2021-35942: Un overflow della dimensione dei parametri nella funzione wordexp potrebbe causare l'arresto anomalo dell'applicazione.

Tra le altre modifiche degne di nota si segnalano:

  • La funzione timespec_getres, definita nella bozza dello standard ISO C2X, è stata aggiunta e la funzione timespec_get è stata aumentata con funzionalità simili alla funzione POSIX clock_getres.
  • Nel file gconv-modules è rimasto solo un set minimo di moduli gconv principali e il resto è stato spostato in un file gconv-modules-extra.conf aggiuntivo situato nella directory gconv-modules.d.
  • L'uso di collegamenti simbolici per collegare oggetti condivisi installabili alla versione Glibc è stato rimosso. Questi oggetti sono ora installati così come sono (ad es. libc.so.6 è ora un file anziché un collegamento a libc-2.34.so).
  • Su Linux, funzioni come shm_open e sem_open ora richiedono un filesystem per la memoria condivisa montata sul punto di montaggio /dev/shm.

Infine, se siete interessati a saperne di più su questa nuova versione, potete trovare i dettagli al seguente link.


Aggiungi come fonte preferita in Google