Наскоро беше обявено пускането на новата версия на Glibc 2.34. Тя идва след шест месеца разработка и включва няколко важни промени, най-вече включването на библиотеките libpthread, libdl, libutil и libanl, както и различни корекции на грешки, една от които причиняваше сривове.
За тези, които не са запознати с Glibc, това е GNU C библиотека, известна като glibc, и е стандартната библиотека за изпълнение на езика GNU C. В системите, където се използва, тази C библиотека, която предоставя и дефинира системни повиквания и други основни функции, се използва от почти всички програми.
Основни нови функции на Glibc 2.34
В тази нова версия на Glibc 2.34, основните библиотеки libpthread, libdl, libutil и libanl са интегрирани ; използването на тяхната функционалност в приложения вече не изисква свързването им с индикаторите -lpthread, -ldl, -lutil и -lanl.
Освен това се споменава, че са направени подготовки за интегриране на libresolv в libc, което ще позволи по-плавен процес на надграждане на glibc и ще опрости имплементацията по време на изпълнение. Предоставени са и библиотеки тип „stub“ за съвместимост с приложения, изградени с помощта на по-ранни версии на glibc.
Сред промените, насочени към Linux в Glibc 2.34, най-забележителната е добавената възможност за използване на 64-битовия тип time_t в конфигурации , които традиционно използваха 32-битовия тип time_t . Тази функция е достъпна само на системи с версия на ядрото 5.1 и по-висока.
Друга промяна, специфична за Linux, е имплементацията на функцията `execveat` , която ви позволява да изпълните изпълним файл от отворен файлов дескриптор . Тази нова функция се използва и при имплементацията на извикването `fexecve`, което не изисква псевдофайловата система `/proc` да бъде монтирана при стартиране.
Добавена е и функцията close_range(), която е достъпна за Linux версии 5.9 и по-нови и може да се използва, за да позволи на процес да затвори цял диапазон от отворени файлови дескриптори наведнъж. Освен това е имплементиран параметърът glibc.pthread.stack_cache_size, който може да се използва за регулиране на размера на кеша на pthread стека.
Освен това е добавена функцията `_Fork`, заместител на функцията `fork` , която отговаря на изискванията за "async-signal-safe", което означава, че може да бъде безопасно извикана от обработчици на сигнали. По време на изпълнението на `_Fork` се формира минимална среда, достатъчна за извикване на функции в обработчици на сигнали като `raise` и `execute`, без да се извикват функции, които биха могли да променят заключванията или вътрешното състояние.
За частта от уязвимостите, фиксирана в Glibc 2.34, се споменава следното:
CVE-2021-27645: Неуспех на процеса nscd (демон за кеширане на сървъри за имена) поради двойно извикване на функцията free при обработка на специално създадени заявки за мрежови групи.
CVE-2021-33574: Достъп до област от паметта, използвана след освобождаване на място, във функцията mq_notify при използване на типа известие SIGEV_THREAD с атрибут на нишка, за който е зададена алтернативна маска за свързване с процесора. Този проблем може да причини срив, но не са изключени и други опции за атака.
CVE-2021-35942: Препълване на размера на параметъра във функцията wordexp може да доведе до срив на приложението.
Други забележителни промени включват:
- Добавена е функцията timespec_getres, дефинирана в проекта на ISO C2X стандарт и функцията timespec_get е увеличена с възможности, подобни на функцията POSIX clock_getres.
- Във файла gconv-modules остана само минимален набор от основни модули gconv, а останалите бяха преместени в допълнителен файл gconv-modules-extra.conf, разположен в директорията gconv-modules.d.
- Премахнато е използването на символни връзки за свързване на инсталируеми споделени обекти с версията на Glibc. Тези обекти вече са инсталирани такива, каквито са (например libc.so.6 вече е файл, а не връзка към libc-2.34.so).
- В Linux функции като shm_open и sem_open вече изискват файлова система за споделената памет, монтирана на / dev / shm точката на монтиране.
И накрая, ако се интересувате да научите повече за тази нова версия, можете да намерите подробностите на следния линк.