Glibc 2.35 arriva con miglioramenti, correzioni di bug e altro ancora

Dopo sei mesi di sviluppo è stato annunciato il rilascio della nuova versione di Glibc 2.35 in quale include correzioni da 66 sviluppatori e dei miglioramenti implementati possiamo scoprire che è stato aggiunto il supporto per la locale "C.UTF-8", che include regole di confronto per tutti i codici Unicode, ma è limitato all'uso di intervalli ASCII nelle funzioni fnmatch, regexec e regcomp per salvare spazio.

La localizzazione è di circa 400 KB, di cui 346 KB sono dati LC_CTYPE per Unicode e devono essere installati separatamente (non incorporati in Glibc). I dati di codifica, le informazioni sul tipo di carattere e le tabelle di traslitterazione sono state aggiornate per supportare la specifica Unicode 14.0.0.

Un altro cambiamento che spicca è quello Y implementare funzioni e macro che arrotondano il risultato a un tipo più ristretto, Oltre a implementare funzioni e macro per trovare il minimo e il massimo dei numeri in virgola mobile dei tipi float, long double, _FloatN e _FloatNx, descritti nella specifica IEEE 754-2019.

per le funzioni exp10, le macro corrispondenti vengono aggiunte al file di intestazione, che non sono legati a tipi specifici, inoltre è stata aggiunta la macro _PRINTF_NAN_LEN_MAX a , proposto nella bozza della norma ISO C2X.

Il sistema di collegamento dinamico implementa un nuovo algoritmo di classificazione DSO utilizzando la ricerca di profondità (DFS) per risolvere i problemi di prestazioni durante la gestione delle dipendenze del ciclo. Per selezionare l'algoritmo di ordinamento DSO, viene proposto il parametro glibc.rtld.dynamic_sort, che può essere impostato su "1" per tornare all'algoritmo precedente.

Oltre ad esso aggiunto il supporto per una nuova funzione '__memcmpeq' all'ABI, che viene utilizzato dai compilatori per ottimizzare l'uso di 'memcmp' quando il valore di ritorno di questa funzione viene utilizzato solo per verificare lo stato di completamento di un'operazione.

Il supporto per la registrazione automatica dei thread utilizzando la chiamata di sistema rseq (sequenze riavviabili) fornita dal kernel Linux 4.18. La chiamata di sistema rseq permette di organizzare l'esecuzione continua di un gruppo di istruzioni che non viene interrotto e conferma il risultato con l'ultima istruzione del gruppo. In sostanza, fornisce una funzione per l'esecuzione atomica molto veloce di operazioni che, se interrotte da un altro thread, vengono ripulite e riprovate.

D'altra parte, fornisce compilazione predefinita di tutti i file eseguibili dei programmi integrati e una suite di test in modalità PIE (eseguibile indipendente dalla posizione).

Per disabilitare questo comportamento, viene fornita l'opzione “–disable-default-pie”., inoltre per Linux, ha aggiunto un'impostazione glibc.malloc.hugetlb per modificare l'implementazione di malloc per utilizzare la chiamata di sistema madvise con il flag MADV_HUGEPAGE per mmap e sbrk, o utilizzare direttamente pagine di memoria di grandi dimensioni specificando il flag MAP_HUGETLB nelle chiamate mmap.

Nel primo caso, è possibile ottenere un aumento delle prestazioni utilizzando le pagine enormi trasparenti in modalità madvise e nel secondo caso è possibile utilizzare le pagine enormi riservate dal sistema (pagine enormi).

Va inoltre notato che alcune vulnerabilità sono state risolte in questa nuova versione:

  • CVE-2022-23218, CVE-2022-23219: un buffer overflow nelle funzioni svcunix_create e clnt_create causato dalla copia del contenuto di un parametro filename nello stack senza controllare la dimensione dei dati copiati. Per le applicazioni create senza protezione dello stack e che utilizzano il protocollo "unix", la vulnerabilità potrebbe portare all'esecuzione di codice dannoso durante l'elaborazione di nomi di file molto lunghi.
  • CVE-2021-3998: una vulnerabilità nella funzione realpath() causata dalla restituzione di un valore errato in determinate condizioni contenenti dati residui non puliti dallo stack. Per il programma SUID-root fusermount, la vulnerabilità può essere utilizzata per ottenere informazioni riservate dalla memoria di processo, ad esempio per ottenere informazioni sui puntatori.
  • CVE-2021-3999: overflow del buffer a byte singolo nella funzione getcwd(). Il problema è causato da un bug che esiste dal 1995. Per chiamare un overflow, in uno spazio dei nomi del punto di montaggio separato, chiama semplicemente chdir() nella directory "/".

Infine Se sei interessato a saperne di più, puoi controllare i dettagli nel file seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.