Недавно анонсирован выпуск новой версии 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.
Кроме того, упоминается, что были сделаны приготовления для интеграции libreolv в libc, с которой интеграция позволит более плавный процесс обновления glibc и это упростит реализацию во время выполнения, а также были предоставлены библиотеки-заглушки для совместимости с приложениями, созданными с помощью более ранних версий glibc.
Со стороны изменений, касающихся Linux Glibc 2.34 выделяет добавлена возможность использования 64-битного типа time_t в конфигах который традиционно использовал тип time_t 32 бит. Эта функция доступна только в системах с ядром 5.1 и выше.
Еще одно специфическое изменение для Linux - это реализация функции execveatчто позволяет запускать исполняемый файл из открытого файлового дескриптора. Новая функция также используется в реализации вызова fexecve, который не требует монтирования псевдофайловой системы / proc при запуске.
Также добавлена функция close_range (), который доступен для Linux версии 5.9. и выше и которые могут быть используется, чтобы позволить процессу закрыть полный диапазон файловых дескрипторов open в то же время, дополнительно реализован параметр glibc.pthread.stack_cache_size, который можно использовать для настройки размера кеша стека pthread.
Кроме того, добавлена функция _Fork, замена для функции вилка который отвечает требованиям «async-signal-safe», то есть его можно безопасно вызывать из обработчиков сигналов. Во время выполнения _Fork формируется минимальная среда, достаточная для вызова функций в обработчиках сигналов, таких как raise и execve, без вызова функций, которые могут изменять блокировки или внутреннее состояние.
Что касается части уязвимостей, исправленных в 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.
В конце концов если вам интересно узнать об этом больше этой новой версии вы можете проверить подробности по следующей ссылке.