Rilascio della libreria di sistema Glibc 2.34

Dopo sei mesi di sviluppo è stata rilasciata la libreria di sistema GNU C Library (glibc) 2.34, che è pienamente conforme ai requisiti degli standard ISO C11 e POSIX.1-2017. La nuova versione include correzioni di 66 sviluppatori.

Alcuni dei miglioramenti implementati in Glibc 2.34 includono:

  • Le librerie libpthread, libdl, libutil e libanl sono integrate nella struttura principale di libc, l'uso delle loro funzionalità nelle applicazioni non richiede più il collegamento utilizzando i flag -lpthread, -ldl, -lutil e -lanl. Sono stati fatti i preparativi per l'integrazione di libresolv in libc. L'integrazione consentirà un processo di aggiornamento di glibc più fluido e semplificherà l'implementazione del runtime. Le librerie stub vengono fornite per garantire la compatibilità con le applicazioni create con versioni precedenti di glibc. A causa dell'espansione del numero di strutture e funzioni fornite in glibc, possono sorgere problemi nelle applicazioni in cui vi è un'intersezione di nomi con le librerie precedentemente non utilizzate libpthread, libdl, libutil, libresolv e libanl.
  • Fornisce la possibilità di utilizzare un tipo time_t a 64 bit in configurazioni che tradizionalmente utilizzavano un tipo time_t a 32 bit. In tali configurazioni, ad esempio sui sistemi x86, il valore predefinito è ancora time_t a 32 bit, ma questo comportamento può ora essere modificato utilizzando la macro "_TIME_BITS". Questa funzionalità è disponibile solo su sistemi con almeno la versione 5.1 del kernel Linux.
  • Aggiunta la funzione _Fork, sostitutiva della funzione fork che soddisfa i requisiti di "async-signal-safe", ovvero consentendo chiamate sicure dai gestori di segnale. Durante l'esecuzione di _Fork, viene creato un ambiente minimo sufficiente per chiamare funzioni nei gestori di segnale come raise ed execve senza coinvolgere funzionalità che potrebbero modificare i blocchi o lo stato interno. La chiamata _Fork sarà definita in una versione futura dello standard POSIX, ma per ora è inclusa come estensione GNU.
  • Per la piattaforma Linux è stata implementata la funzione execveat che permette di eseguire un file eseguibile da un descrittore di file aperto. La nuova funzione viene utilizzata anche nell'implementazione della chiamata fexecve, che non richiede uno pseudo-FS /proc montato all'avvio.
  • Aggiunta la funzione timespec_getres, definita nella bozza dello standard ISO C2X, che estende la funzione timespec_get con funzionalità simili alla funzione POSIX clock_getres.
  • Aggiunta la funzione close_range(), che consente a un processo di chiudere contemporaneamente un intero intervallo di descrittori di file aperti. La funzione è disponibile su sistemi con kernel Linux almeno della versione 5.9.
  • Aggiunte le funzioni closefrom e posix_spawn_file_actions_addclosefrom_np, che consentono di chiudere contemporaneamente tutti i descrittori di file, il cui numero è maggiore o uguale al valore specificato.
  • Nelle modalità "_DYNAMIC_STACK_SIZE_SOURCE" e "_GNU_SOURCE", PTHREAD_STACK_MIN, MINSIGSTKSZ e SIGSTKSZ non sono più costanti, consentendo il supporto per set di registri di dimensioni dinamiche come quelli forniti nell'estensione ARM SVE.
  • Il linker implementa l'opzione "--list-diagnostics" per visualizzare le informazioni relative alle operazioni di definizione IFUNC (funzione indiretta) e alla selezione della sottodirectory glibc-hwcaps.
  • È stata implementata la macro __STDC_WANT_IEC_60559_EXT__ pensata per verificare la presenza delle funzioni definite nell'Allegato F della specifica ISO C2X.
  • Per i sistemi powerpc64* è stata implementata l'opzione “--disable-scv”, che consente di compilare glibc senza supportare l'istruzione scv.
  • Solo il set minimo di moduli gconv principali viene lasciato nel file gconv-modules e il resto viene spostato in un file aggiuntivo gconv-modules-extra.conf, situato nella directory gconv-modules.d.
  • Per la piattaforma Linux è implementato il parametro glibc.pthread.stack_cache_size che può essere utilizzato per configurare la dimensione della cache dello stack pthread.
  • La funzione inet_neta dal file di intestazione è stata deprecata , così come varie funzioni usate raramente da (dn_count_labels, fp_nquery, fp_query, fp_resstat, hostalias, loc_aton, loc_ntoa, p_cdname, p_cdnname, p_class, p_fqname, p_fqnname, p_option, p_query, p_rcode, p_time, p_type, putlong, putshort, res_hostalias, res_isourserver, res_ richiesta nome, res_queriesmatch, res_randomid, sym_ntop , sym_ntos, sym_ston) e (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain). Invece di queste funzioni, si consiglia di utilizzare librerie separate per lavorare con DNS.
  • Le funzioni pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np e pthread_yield sono state deprecate e al loro posto dovrebbero essere utilizzate pthread_mutexattr_getrobust, thread_mutexattr_getrobust, hread_mutexattr_setrobust e sched_yield.
  • Smesso di utilizzare collegamenti simbolici per associare gli oggetti condivisi installati alla versione di Glibc. Tali oggetti ora sono installati così come sono (ad esempio libc.so.6 ora è un file anziché un collegamento a libc-2.34.so).
  • Per impostazione predefinita, le funzionalità di debug in malloc sono disabilitate, come MALLOC_CHECK_ (glibc.malloc.check), mtrace() e mcheck(), che vengono spostate in una libreria separata libc_malloc_debug.so, nella quale sono presenti anche le funzioni obsolete malloc_get_state e malloc_set_state stato spostato.
  • Su Linux, funzioni come shm_open e sem_open ora richiedono il funzionamento del dispositivo /dev/shm.
  • Vulnerabilità risolte:
    • CVE-2021-27645: il processo nscd (daemon di caching del nameserver) si arresta in modo anomalo a causa di una doppia chiamata alla funzione gratuita durante l'elaborazione di richieste di netgroup appositamente predisposte.
    • CVE-2021-33574: accesso a un'area di memoria già liberata (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 affinità CPU alternativa. Il problema potrebbe portare ad uno schianto, ma non si possono escludere altre opzioni di attacco.
    • CVE-2021-35942: un overflow della dimensione del parametro nella funzione wordexp può causare l'arresto anomalo dell'applicazione.

Fonte: opennet.ru

Aggiungi un commento