Veröffentlichung der Systembibliothek Glibc 2.34

Nach sechsmonatiger Entwicklungszeit wurde die Version 2.34 der GNU C Library (glibc) veröffentlicht, die vollständig den Anforderungen der Standards ISO C11 und POSIX.1-2017 entspricht. Die neue Version enthält Korrekturen von 66 Entwicklern.

Zu den Verbesserungen in Glibc 2.34 gehören:

  • Die libpthread-, libdl-, libutil- und libanl-Bibliotheken sind nun vollständig in libc integriert, sodass Anwendungen diese Funktionen nutzen können, ohne dass bei der Verlinkung die Flags -lpthread, -ldl, -lutil und -lanl erforderlich sind. Zudem wurde die Vorbereitung zur Integration von libresolv in libc durchgeführt. Diese Integration wird einen kohärenteren Aktualisierungsprozess für glibc ermöglichen und die Implementierung zur Laufzeit vereinfachen. Um die Abwärtskompatibilität mit Anwendungen, die mit älteren Versionen von glibc erstellt wurden, zu gewährleisten, stehen Placeholder-Bibliotheken zur Verfügung. Aufgrund der Erweiterung der in glibc verfügbaren Strukturen und Funktionen können in Anwendungen, in denen Namenskonflikte mit zuvor ungenutzten Bibliotheken wie libpthread, libdl, libutil, libresolv und libanl auftreten, Probleme entstehen.
  • Die Möglichkeit zur Verwendung des 64-Bit time_t-Typs wurde in Konfigurationen eingeführt, in denen traditionell der 32-Bit time_t-Typ verwendet wurde. In solchen Konfigurationen, beispielsweise auf x86-Systemen, bleibt standardmäßig weiterhin der 32-Bit time_t erhalten, aber dieses Verhalten kann jetzt mit dem Makro „_TIME_BITS“ geändert werden. Diese Möglichkeit ist nur auf Systemen mit einem Linux-Kernel der Version 5.1 oder höher verfügbar.
  • Die Funktion _Fork wurde hinzugefügt, eine sichere Alternative zur fork-Funktion, die den Anforderungen von «async-signal-safe» entspricht, d.h. sie erlaubt einen sicheren Aufruf aus Signalhandlern. Bei der Ausführung von _Fork wird eine minimale Umgebung geschaffen, die erforderlich ist, um Funktionen in Signalhandlern wie raise und execve aufzurufen, ohne Funktionen zu verwenden, die zu Änderungen von Sperren oder des internen Zustands führen können. Der Aufruf von _Fork wird in einer zukünftigen Version des POSIX-Standards definiert, ist jedoch vorerst Teil der GNU-Erweiterungen.
  • Für die Linux-Plattform wurde die Funktion execveat implementiert, die es ermöglicht, eine ausführbare Datei aus einem geöffneten Dateideskriptor zu starten. Diese neue Funktion wird ebenfalls bei der Implementierung des Aufrufs fexecve verwendet, der beim Starten kein montiertes Pseudo-Dateisystem /proc benötigt.
  • Die Funktion timespec_getres wurde hinzugefügt, die im Entwurf des ISO C2X Standards definiert ist und die Funktion timespec_get um Möglichkeiten erweitert, die der POSIX-Funktion clock_getres ähnlich sind.
  • Die Funktion close_range() wurde hinzugefügt, die es einem Prozess ermöglicht, einen gesamten Bereich offener Dateideskriptoren auf einmal zu schließen. Diese Funktion ist auf Systemen mit Linux-Kernversion mindestens 5.9 verfügbar.
  • Die Funktionen closefrom und posix_spawn_file_actions_addclosefrom_np wurden hinzugefügt, die es ermöglichen, alle Dateideskriptoren, deren Nummer größer oder gleich dem angegebenen Wert ist, gleichzeitig zu schließen.
  • In den Modi „_DYNAMIC_STACK_SIZE_SOURCE“ und „_GNU_SOURCE“ sind die Werte PTHREAD_STACK_MIN, MINSIGSTKSZ und SIGSTKSZ jetzt keine Konstanten mehr, was die Unterstützung von dynamisch großen Registersets, wie sie durch die ARM SVE-Erweiterung bereitgestellt werden, ermöglicht.
  • Im Konfigurator wurde die Option „—list-diagnostics“ implementiert, um Informationen zu den IFUNC-Bestimmungsoperationen (indirekte Funktion) und der Auswahl des glibc-hwcaps-Unterverzeichnisses anzuzeigen.
  • Es wurde das Makro __STDC_WANT_IEC_60559_EXT__ eingeführt, das zur Überprüfung der Verfügbarkeit von in der Anwendung „F“ der ISO C2X-Spezifikation definierten Funktionen dient.
  • Für Systeme der Architektur powerpc64* wurde die Option „—disable-scv“ implementiert, die es ermöglicht, glibc ohne Unterstützung der SCV-Anweisung zu kompilieren.
  • In der Datei gconv-modules wurde nur die minimale Menge an grundlegenden gconv-Modulen belassen, während die restlichen in eine zusätzliche Datei gconv-modules-extra.conf verschoben wurden, die im Verzeichnis gconv-modules.d abgelegt ist.
  • Für die Linux-Plattform wurde der Parameter glibc.pthread.stack_cache_size implementiert, der zur Anpassung der Größe des pthread-Stack-Caches verwendet werden kann.
  • Die Funktion inet_neta aus der Header-Datei sowie verschiedene selten verwendete Funktionen aus (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_nameinquery, res_queriesmatch, res_randomid, sym_ntop, sym_ntos, sym_ston) und (ns_datetosecs, ns_format_ttl, ns_makecanon, ns_parse_ttl, ns_samedomain, ns_samename, ns_sprintrr, ns_sprintrrf, ns_subdomain) wurden als veraltet erklärt. Statt dieser Funktionen wird empfohlen, separate Bibliotheken für die Arbeit mit DNS zu verwenden.
  • Die Funktionen pthread_mutex_consistent_np, thread_mutexattr_getrobust_np, pthread_mutexattr_setrobust_np und pthread_yield wurden als veraltet erklärt. Stattdessen sollten pthread_mutex_consistent, thread_mutexattr_getrobust, thread_mutexattr_setrobust und sched_yield verwendet werden.
  • Die Verwendung von symbolischen Links zur Bindung installierter Shared Objects an die Version von Glibc wurde eingestellt. Solche Objekte werden jetzt 'wie sie sind' installiert (zum Beispiel ist libc.so.6 jetzt eine Datei und kein Link zu libc-2.34.so).
  • Standardmäßig sind die Debugging-Funktionen in malloc deaktiviert, wie MALLOC_CHECK_ (glibc.malloc.check), mtrace() und mcheck(), die in eine separate Bibliothek libc_malloc_debug.so ausgelagert wurden, in die auch die veralteten Funktionen malloc_get_state und malloc_set_state verschoben wurden.
  • In Linux ist für die Verwendung von Funktionen wie shm_open und sem_open jetzt das Gerät /dev/shm erforderlich.
  • Sicherheitsanfälligkeiten wurden behoben:
    • CVE-2021-27645: Der Prozess nscd (Name Server Caching Daemon) stürzt aufgrund eines doppelten Aufrufs der Funktion free ab, wenn speziell gestaltete Netgroup-Anfragen bearbeitet werden.
    • CVE-2021-33574: Der Zugriff auf bereits freigegebenen Speicher (use-after-free) in der Funktion mq_notify tritt auf, wenn der Benachrichtigungstyp SIGEV_THREAD mit einer Thread-Attribut verwendet wird, dessen alternativer CPU-Bindungsmaske festgelegt ist. Das Problem kann zu einem Absturz führen, jedoch sind auch andere Angriffsvarianten möglich.
    • CVE-2021-35942: Eine Überlauf des Parameterwerts in der Funktion wordexp kann zu einem Absturz der Anwendung führen.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster