Dopo sei mesi di sviluppo, è stata pubblicata la versione della libreria GNU C Library (glibc) 2.40, che risponde pienamente ai requisiti degli standard ISO C11 e POSIX.1-2017. La nuova versione include correzioni da 68 sviluppatori.
Tra i miglioramenti implementati in Glibc 2.40 si possono notare:
- Nel file di intestazione math.h sono state aggiunte nuove funzioni esponenziali e logaritmiche definite nello standard C23: exp2m1, exp10m1, log2p1, log10p1 e logp1. Le funzioni sono disponibili in versioni per i tipi float, double, long double, _FloatN e _FloatNx.
- È stato aggiunto il macro _ISOC23_SOURCE, che definisce l'utilizzo delle funzionalità proposte nello standard C23 (attualmente in Glibc sono implementate solo alcune funzionalità di C23). È possibile abilitare C23 anche durante la compilazione specificando in GCC le opzioni -std=c23, -std=gnu23, -std=c2x o -std=gnu2x.
- È stata aggiunta l'impostazione "glibc.rtld.enable_secure", che consente di eseguire il programma come se avesse il flag di cambiamento dell'identificatore utente (setuid) durante i test.
- Sul platform Linux, il file di intestazione epoll.h è stato aggiornato per supportare i nuovi ioctl e le strutture epoll introdotti nel kernel Linux 6.9.
- La funzionalità per rilevare potenziali overflow del buffer e errori di sicurezza correlati durante l'esecuzione delle funzioni per la gestione delle stringhe e della memoria («_FORTIFY_SOURCE») è adattata per la compilazione di Glibc utilizzando il compilatore Clang.
- Nella libreria delle funzioni matematiche vettoriali (libmvec) sono state proposte implementazioni delle funzioni acosh, asinh, atanh, cbrt, cosh, erf, erfc, hypot, pow, sinh e tanh per l'architettura Aarch64.
- Nei sistemi x86, per accelerare la scrittura di grandi set di dati nella funzione memset, è stata fornita la possibilità di disattivare l'uso di buffer temporanei. L'ottimizzazione si attiva tramite la configurazione «x86_memset_non_temporal_threshold».
- I macro nel file di intestazione stdbit.h, che lavorano con vari tipi (type-generic), sono stati convertiti per utilizzare le funzioni incorporate __builtin_stdc_bit_ceil per supportare operandi con i tipi __int128 e _BitInt(N) con GCC 14.
- I campi con contatore temporale epocale nelle strutture lastlog, utmp e utmpx sono stati convertiti dall'uso di un tipo intero a 32 bit firmato a un tipo intero senza segno, consentendo di estendere il tempo massimo indirizzabile dal contatore dal 2038 al 2106.
- Vulnerabilità risolte:
- CVE-2024-2961 — overflow del buffer durante la conversione di stringhe appositamente formattate in codifica ISO-2022-CN-EXT tramite la funzione iconv(). Nella pratica, questa vulnerabilità può essere sfruttata per attacchi remoti alle applicazioni PHP, portando all'esecuzione di codice.
- CVE-2024-33599 — overflow del buffer nel codice per la gestione della cache netgroup nel processo nscd (Name Service Cache Daemon). La vulnerabilità può essere sfruttata inviando una richiesta appositamente formattata dal client.
- CVE-2024-33600 — dereferenziazione di un puntatore nullo nel processo nscd, che può portare a un arresto anomalo durante l'elaborazione di determinate richieste.
- CVE-2024-33601 — un errore nella gestione della cache netgroup può portare a un arresto anomalo del processo nscd a causa di un'impossibilità di allocare memoria.
- CVE-2024-33602 — corruzione della memoria durante la gestione della cache netgroup nel processo nscd.
Fonte: opennet.ru
