Ostatnio ogłoszono wydanie nowej wersji Glibc 2.34 który nadchodzi po sześciu miesiącach rozwoju i w którym dokonano kilku dość ważnych zmian, wśród których znalazły się biblioteki libpthread, libdl, libutil i libanl, a także różne poprawki błędów, z których jedna powodowała blokady.
Dla tych, którzy nie są zaznajomieni z Glibc, powinni wiedzieć, co to jest biblioteka GNU C, powszechnie znana jako glibc to standardowa biblioteka uruchomieniowa GNU C. W systemach, w których jest używany, ta biblioteka C, która udostępnia i definiuje wywołania systemowe i inne podstawowe funkcje, jest używany przez prawie wszystkie programy.
Główne nowe funkcje Glibc 2.34
W tej nowej wersji Glibc 2.34, która jest prezentowana libpthread, libdl, libutil i libanl zostały zintegrowane z główną biblioteką, korzystanie z jego funkcji w aplikacjach nie wymaga już wiązania ich z flagami -lpthread, -ldl, -lutil i -lanl.
Ponadto jest o tym mowa poczyniono przygotowania do integracji libreolv z libc, z którym integracja pozwoli na płynniejszy proces aktualizacji glibc Uprości to implementację środowiska uruchomieniowego, a biblioteki pośredniczące zostały również udostępnione w celu zapewnienia kompatybilności z aplikacjami zbudowanymi we wcześniejszych wersjach glibc.
Ze strony zmian skupionych na Linuksie Glibc 2.34 podkreśla dodano możliwość używania 64-bitowego typu time_t w configs który tradycyjnie używał typu time_t 32-bitowy. Ta funkcja jest dostępna tylko w systemach z jądrem 5.1 i wyższym.
Kolejną konkretną zmianą dla Linuksa jest realizacja funkcji execveatŻe pozwala na uruchomienie pliku wykonywalnego z otwartego deskryptora pliku. Nowa funkcja jest również wykorzystywana w implementacji wywołania fexecve, które nie wymaga montowania pseudosystemu plików /proc podczas uruchamiania.
Dodano również funkcję close_range(), który jest dostępny dla wersji Linuksa 5.9 i wyższe i które mogą być używany, aby umożliwić procesowi zamknięcie pełnego zakresu deskryptorów plików otwarte w tym samym czasie, dodatkowo zaimplementowany jest parametr glibc.pthread.stack_cache_size, który może być użyty do dostosowania rozmiaru pamięci podręcznej stosu pthread.
Ponadto dodano funkcję _Fork, zamiennik dla funkcji widelec który spełnia wymagania „bezpiecznego dla sygnału asynchronicznego”, to znaczy, że można go bezpiecznie wywołać z programów obsługi sygnałów. Podczas wykonywania _Fork tworzone jest minimalne środowisko, wystarczające do wywoływania funkcji w procedurach obsługi sygnałów, takich jak raise i execve, bez wywoływania funkcji, które mogą zmieniać blokady lub stan wewnętrzny.
W przypadku części luk naprawionych w Glibc 2.34 wymieniono:
CVE-2021-27645: Proces nscd (demon buforowania serwera nazw) nie powiódł się z powodu podwójnego wywołania funkcji free podczas przetwarzania specjalnie spreparowanych żądań grup sieciowych.
CVE-2021-33574: dostęp do obszaru pamięci już zwolnionego (użyj po zwolnieniu) w funkcji mq_notify podczas używania typu powiadomienia SIGEV_THREAD z atrybutem wątku, dla którego ustawiono alternatywną maskę powiązania procesora. Problem może spowodować awarię, ale inne opcje ataku nie są wykluczone.
CVE-2021-35942: Przepełnienie rozmiaru parametru w funkcji wordexp może spowodować awarię aplikacji.
Z innych zmian które wyróżniają się:
- Dodano funkcję timespec_getres, zdefiniowaną w projekcie standardu ISO C2X, a funkcję timespec_get rozszerzono o możliwości podobne do funkcji clock_getres POSIX.
- W pliku gconv-modules pozostał tylko minimalny zestaw głównych modułów gconv, a reszta została przeniesiona do dodatkowego pliku gconv-modules-extra.conf znajdującego się w katalogu gconv-modules.d.
- Użycie dowiązań symbolicznych do łączenia instalowalnych obiektów współdzielonych z wersją Glibc zostało usunięte. Obiekty te są teraz instalowane tak, jak są (np. libc.so.6 jest teraz plikiem, a nie linkiem do libc-2.34.so).
- W systemie Linux funkcje takie jak shm_open i sem_open wymagają teraz systemu plików dla pamięci współdzielonej zamontowanej w punkcie montowania / dev / shm.
W końcu jeśli chcesz dowiedzieć się więcej na ten temat tej nowej wersji możesz sprawdzić szczegóły w poniższym linku.