Wydanie biblioteki systemowej Glibc 2.32

Po sześciu miesiącach rozwoju opublikowany wydanie biblioteki systemowej Biblioteka GNU C (glibc) 2.32, który jest w pełni zgodny z wymaganiami norm ISO C11 i POSIX.1-2017. Nowa wersja zawiera poprawki od 67 programistów.

Zaimplementowano w Glibc 2.32 ulepszenia możesz zauważyć:

  • Dodano obsługę procesorów Synopsys ARC HS (ARCv2 ISA). Port wymaga co najmniej binutils 2.32, gcc 8.3 i jądra. Linux 5.1. Obsługiwane są trzy warianty ABI: arc-linux-gnu, arc-linux-gnuhf i arceb-linux-gnu (big-endian);
  • Zaimplementowano ładowanie modułów audytu określonych w sekcjach DT_AUDIT i
    DT_DEPAUDIT pliku wykonywalnego.
  • W architekturze powerpc64le zaimplementowano obsługę typu IEEE128 long double, którą można włączyć podczas kompilacji z opcją „-mabi=ieeelongdouble”.
  • Niektóre interfejsy API są opatrzone adnotacją GCC „access”, dzięki której GCC 10 może generować lepsze ostrzeżenia podczas kompilacji, dotyczące potencjalnych przepełnień bufora i innych sytuacji wykraczających poza zakres.
  • dla Linux-systemy zaimplementowały funkcje pthread_attr_setsigmask_np i
    pthread_attr_getsigmask_np, które umożliwiają aplikacji określenie maski sygnału dla wątków utworzonych za pomocą pthread_create.
  • Dane kodowania, informacje o typach znaków i tabele transliteracji zostały zaktualizowane, aby obsługiwały specyfikację Unicode 13.0.0;
  • Dodano nowy plik nagłówkowy , który definiuje zmienną __libc_single_threaded, która może być używana w aplikacjach do optymalizacji jednowątkowej.
  • Dodano funkcje sigabbrev_np i sigdescr_np, które zwracają skróconą nazwę i opis sygnału (np. „HUP” i „Hangup” dla SIGHUP).
  • Dodano funkcje strerrorname_np i strerrordesc_np, które zwracają nazwę i opis błędu (np. „EINVAL” i „Nieprawidłowy argument” dla EINVAL).
  • Dla platformy ARM64 dodano flagę „--enable-standard-branch-protection” (lub -mbranch-protection=standard w GCC), która umożliwia mechanizmowi ARMv8.5-BTI (Branch Target Indicator) ochronę wykonywania zestawów instrukcji, do których nie należy przechodzić podczas rozgałęziania. Blokowanie skoków do dowolnych sekcji kodu jest implementowane w celu przeciwdziałania tworzeniu gadżetów w exploitach, które wykorzystują programowanie zorientowane na powrót (ROP - Return-Oriented Programming, atakujący nie próbuje umieścić swojego kodu w pamięci, ale operuje na istniejących fragmentach instrukcji maszynowych, które kończą się instrukcją powrotu, z której budowany jest łańcuch wywołań w celu uzyskania pożądanej funkcjonalności).
  • Przeprowadzono gruntowne czyszczenie przestarzałych funkcji, w tym usunięto opcje „--enable-obsolete-rpc” i „--enable-obsolete-nsl” oraz plik nagłówkowy Funkcje sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore i sigset, tablice sys_siglist, _sys_siglist i sys_sigabbrev, symbole sys_errlist, _sys_errlist, sys_nerr i _sys_nerr, moduł NSS hesiod zostały uznane za przestarzałe.
  • Domyślnie ldconfig korzysta z nowego formatu ld.so.cache, który jest obsługiwany w bibliotece glibc od prawie 20 lat.
  • Naprawiono luki:
    • CVE-2016-10228 – W przypadku użycia opcji -c podczas przetwarzania nieprawidłowych danych wielobajtowych w narzędziu iconv występuje pętla.
    • CVE-2020-10029 – Uszkodzenie stosu podczas wywoływania funkcji trygonometrycznych z argumentem pseudo-null.
    • CVE-2020-1752 – Problem z użyciem funkcji glob po zwolnieniu podczas rozwijania odwołania do katalogu domowego („~user”) w ścieżkach.
    • CVE-2020-6096 – Nieprawidłowa obsługa wartości ujemnych parametru w memcpy() i memmove(), który określa rozmiar kopiowanego obszaru, na platformie ARMv7. Pozwala zorganizować wykonywanie kodu podczas przetwarzania danych sformatowanych w określony sposób w funkcjach memcpy() i memmove(). Istotne jest, że problem pozostał niestosowano poprawki przez prawie dwa miesiące od publicznego ujawnienia i pięć miesięcy od powiadomienia twórców Glibc.

Źródło: opennet.ru

Kup niezawodny hosting dla stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron internetowych z ochroną DDoS, serwery VPS VDS | ProHoster