Glibc 2.35 przybywa z ulepszeniami, poprawkami błędów i nie tylko

Po sześciu miesiącach rozwoju ogłoszono wydanie nowej wersji Glibc 2.35 w którym zawiera poprawki 66 programistów a wśród zaimplementowanych ulepszeń możemy zauważyć, że dodano obsługę lokalizacji „C.UTF-8”, która obejmuje sortowanie dla wszystkich kodów Unicode, ale ogranicza się do korzystania z zakresów ASCII w funkcjach fnmatch, regexec i regcomp do zapisania przestrzeń.

Lokalizacja ma około 400 KB, z czego 346 KB to dane LC_CTYPE dla Unicode i muszą być zainstalowane oddzielnie (nie wbudowane w Glibc). Kodowanie danych, informacje o typie znaków i tabele transliteracji zostały zaktualizowane w celu obsługi specyfikacji Unicode 14.0.0.

Kolejną wyróżniającą się zmianą jest to Y implementować funkcje i makra, które zaokrąglają wynik do węższego typu, Oprócz implementacji funkcji i makr, aby znaleźć minimalną i maksymalną liczbę zmiennoprzecinkową typów float, long double, _FloatN i _FloatNx, opisanych w specyfikacji IEEE 754-2019.

dla funkcji exp10, odpowiednie makra są dodawane do pliku nagłówkowego, które nie są powiązane z konkretnymi typami, plus makro _PRINTF_NAN_LEN_MAX zostało dodane do , zaproponowany w projekcie normy ISO C2X.

System dynamicznego łączenia implementuje nowy algorytm klasyfikacji DSO przy użyciu wyszukiwania głębokości (DFS) aby rozwiązać problemy z wydajnością podczas obsługi zależności pętli. Aby wybrać algorytm sortowania DSO, proponuje się parametr glibc.rtld.dynamic_sort, który można ustawić na „1”, aby powrócić do poprzedniego algorytmu.

poza tym dodano obsługę nowej funkcji '__memcmpeq' do ABI, który jest używany przez kompilatory do optymalizacji użycia `memcmp', gdy wartość zwracana przez tę funkcję jest używana tylko do sprawdzenia statusu zakończenia operacji.

Plik obsługa automatycznej rejestracji wątków używając wywołania systemowego rseq (restartable sequences) dostępnego od jądra Linuksa 4.18. Wywołanie systemowe rseq pozwala zorganizować ciągłą realizację grupy dyspozycji który nie jest przerywany i zatwierdza wynik ostatnią instrukcją w grupie. Zasadniczo zapewnia możliwość bardzo szybkiego atomowego wykonywania operacji, które, jeśli zostaną przerwane przez inny wątek, są czyszczone i ponawiane.

Z drugiej strony zapewnia: domyślna kompilacja wszystkich plików wykonywalnych wbudowanych programów i zestawu testów w trybie PIE (plik wykonywalny niezależny od pozycji).

Aby wyłączyć to zachowanie, dostępna jest opcja „–wyłącz-domyślne-pie”, plus dla Linuksa, dodano ustawienie glibc.malloc.hugetlb, aby zmienić implementację malloc tak, aby używała wywołania systemowego madvise z flagą MADV_HUGEPAGE dla mmap i sbrk lub bezpośrednio używała dużych stron pamięci, określając flagę MAP_HUGETLB w wywołaniach mmap.

W pierwszym przypadku wzrost wydajności można osiągnąć, używając przezroczystych Huge Pages w trybie madvise, a w drugim przypadku korzystając z zarezerwowanych przez system ogromnych stron (Huge Pages).

Należy również zauważyć, że w nowej wersji naprawiono niektóre luki:

  • CVE-2022-23218, CVE-2022-23219: Przepełnienie buforu w funkcjach svcunix_create i clnt_create spowodowane skopiowaniem zawartości parametru nazwy pliku na stos bez sprawdzania rozmiaru kopiowanych danych. W przypadku aplikacji zbudowanych bez ochrony stosu i korzystających z protokołu „unix”, luka może prowadzić do wykonania złośliwego kodu podczas przetwarzania bardzo długich nazw plików.
  • CVE-2021-3998: luka w funkcji realpath() spowodowana zwróceniem nieprawidłowej wartości w pewnych warunkach zawierających nieoczyszczone dane resztkowe ze stosu. W przypadku programu fusermount SUID-root, luka może zostać wykorzystana do uzyskania poufnych informacji z pamięci procesu, na przykład do uzyskania informacji wskazujących.
  • CVE-2021-3999: przepełnienie bufora jednobajtowego w funkcji getcwd(). Problem jest spowodowany błędem, który istnieje od 1995 roku. Aby wywołać przepełnienie, w oddzielnej przestrzeni nazw punktu montowania, po prostu wywołaj chdir() w katalogu "/".

W końcu Jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły w następujący link.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.