Glibc 2.35 kommt mit Verbesserungen, Fehlerbehebungen und mehr

Nach sechs Monaten Entwicklungszeit die Veröffentlichung der neuen Version von Glibc 2.35 wurde angekündigt in welchem enthält Korrekturen von 66 Entwicklern und von den implementierten Verbesserungen können wir feststellen, dass die Unterstützung für das Gebietsschema "C.UTF-8" hinzugefügt wurde, das Sortierungen für alle Unicode-Codes enthält, sich jedoch darauf beschränkt, die Verwendung von ASCII-Bereichen in den Funktionen fnmatch, regexec und regcomp einzusparen Platz.

Das Gebietsschema ist ungefähr 400 KB groß, wovon 346 KB LC_CTYPE-Daten für Unicode sind, und muss separat installiert werden (nicht in Glibc integriert). Kodierungsdaten, Zeichentypinformationen und Transliterationstabellen wurden aktualisiert, um die Unicode 14.0.0-Spezifikation zu unterstützen.

Eine weitere Veränderung, die auffällt, ist die folgende Y Funktionen und Makros implementieren, die das Ergebnis auf einen engeren Typ runden, Zusätzlich zur Implementierung von Funktionen und Makros zum Ermitteln des Minimums und Maximums von Gleitkommazahlen der Typen Float, Long Double, _FloatN und _FloatNx, beschrieben in der IEEE 754-2019-Spezifikation.

für Funktionen exp10 werden die entsprechenden Makros der Header-Datei hinzugefügt, die nicht an bestimmte Typen gebunden sind, sowie das Makro _PRINTF_NAN_LEN_MAX wurde hinzugefügt , vorgeschlagen im Entwurf des ISO-C2X-Standards.

Das dynamische Verknüpfungssystem implementiert einen neuen Klassifizierungsalgorithmus DSO mit Tiefensuche (DFS) um Leistungsprobleme beim Umgang mit Schleifenabhängigkeiten zu beheben. Zur Auswahl des DSO-Sortieralgorithmus wird der Parameter glibc.rtld.dynamic_sort vorgeschlagen, der auf „1“ gesetzt werden kann, um auf den vorherigen Algorithmus zurückzugreifen.

Daneben Unterstützung für eine neue Funktion '__memcmpeq' hinzugefügt an die ABI, die von Compilern verwendet wird, um die Verwendung von `memcmp' zu optimieren, wenn der Rückgabewert dieser Funktion nur verwendet wird, um den Abschlussstatus einer Operation zu prüfen.

Das Unterstützung für die automatische Thread-Registrierung Verwenden des Systemaufrufs rseq (restartable sequences), der seit Linux-Kernel 4.18 bereitgestellt wird. Der Systemaufruf rseq ermöglicht es, die kontinuierliche Ausführung einer Gruppe von Anweisungen zu organisieren die nicht unterbrochen wird und das Ergebnis mit der letzten Anweisung in der Gruppe festschreibt. Im Wesentlichen bietet es eine Einrichtung für eine sehr schnelle atomare Ausführung von Operationen, die, wenn sie von einem anderen Thread unterbrochen werden, bereinigt und erneut versucht werden.

Andererseits bietet es Standardkompilierung aller ausführbaren Dateien der eingebauten Programme und eine Testsuite im PIE-Modus (positionsunabhängige ausführbare Datei).

Um dieses Verhalten zu deaktivieren, die Option „–disable-default-pie“ ist vorgesehen, plus für Linux, eine glibc.malloc.hugetlb-Einstellung hinzugefügt, um die malloc-Implementierung so zu ändern, dass sie den madvise-Systemaufruf mit dem MADV_HUGEPAGE-Flag für mmap und sbrk verwendet oder direkt große Speicherseiten verwendet, indem das MAP_HUGETLB-Flag in mmap-Aufrufen angegeben wird.

Im ersten Fall kann ein Performance-Boost durch die Verwendung von transparenten Huge Pages im Madvise-Modus erreicht werden, im zweiten Fall können Sie systemreservierte Huge Pages (Huge Pages) verwenden.

Es sollte auch beachtet werden, dass einige Schwachstellen in dieser neuen Version behoben wurden:

  • CVE-2022-23218, CVE-2022-23219: Ein Pufferüberlauf in den Funktionen svcunix_create und clnt_create, der durch das Kopieren des Inhalts eines Dateinamenparameters auf den Stapel verursacht wurde, ohne die Größe der kopierten Daten zu prüfen. Bei Anwendungen, die ohne Stack-Schutz erstellt wurden und das „unix“-Protokoll verwenden, könnte die Schwachstelle zur Ausführung von bösartigem Code führen, wenn sehr lange Dateinamen verarbeitet werden.
  • CVE-2021-3998: eine Schwachstelle in der Funktion realpath(), die dadurch verursacht wird, dass unter bestimmten Bedingungen ein falscher Wert zurückgegeben wird, der ungereinigte Restdaten aus dem Stack enthält. Für das SUID-Root-Fusermount-Programm kann die Schwachstelle genutzt werden, um vertrauliche Informationen aus dem Prozessspeicher zu erhalten, beispielsweise um Zeigerinformationen zu erhalten.
  • CVE-2021-3999: Einzelbyte-Pufferüberlauf in der Funktion getcwd(). Das Problem wird durch einen seit 1995 bestehenden Fehler verursacht. Um einen Überlauf in einem separaten Einhängepunkt-Namensraum aufzurufen, rufen Sie einfach chdir() im Verzeichnis „/“ auf.

Schließlich Wenn Sie mehr darüber erfahren möchten, Sie können die Details in der überprüfen folgenden Link


Hinterlasse einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert mit *

*

*

  1. Verantwortlich für die Daten: Miguel Ángel Gatón
  2. Zweck der Daten: Kontrolle von SPAM, Kommentarverwaltung.
  3. Legitimation: Ihre Zustimmung
  4. Übermittlung der Daten: Die Daten werden nur durch gesetzliche Verpflichtung an Dritte weitergegeben.
  5. Datenspeicherung: Von Occentus Networks (EU) gehostete Datenbank
  6. Rechte: Sie können Ihre Informationen jederzeit einschränken, wiederherstellen und löschen.