Выпуск системной библиотеки Glibc 2.26
Опубликовано 02 Август 2017 18:55:19
После шести месяцев разработки состоялся релиз системной библиотеки GNU C Library (glibc) 2.26, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В состав нового выпуска включены исправления от 66 разработчиков.
Источник: http://www.opennet.ru/opennews/art.shtml?num=46959
Из добавленных в Glibc 2.26 улучшений можно отметить:
- В функции malloc реализована поддержка кэша, индивидуального для каждого потока, что позволило избавиться от блокировок, возникающих при использовании общего для всех потоков кэша, и существенно поднять производительность при выделении и освобождении небольших блоков памяти;
- В библиотеку math для архитектур ia64, powerpc64le, x86-32 и x86-64 добавлена поддержка 128-разрядных операций с плавающей запятой, определённых в стандартах ISO/IEC/IEEE 60559:2011 (IEEE 754-2008) и ISO/IEC TS 18661-3:2015. Для задействования данной возможности в программах компилятор должен поддерживать тип _Float12 или __float128. Функциональность доступна при включении набора _GNU_SOURCE или __STDC_WANT_IEC_60559_TYPES_EXT__;
- Объявлены устаревшими и отключены по умолчанию (для включения требуется сборка с "--enable-obsolete-rpc") компоненты Sun RPC, включая rpcgen, librpcsvc и заголовочные файлы Sun RPC. Также объявлены устаревшими модули NIS/NIS+, а также библиотеки libnss_nis, libnss_nisplus, libnss_compat и libnsl. В качестве замены рекомендуется использовать TIRPC, в котором имеется поддержка IPv6, или rpcsvc-proto;
- Расширены возможности встроенного DNS-резолвера: реализовано определение изменения содержимого файла /etc/resolv.conf для оперативной загрузки изменённой конфигурации (для запрета автообновления предусмотрена опция "no-reload"); обеспечена возможность указания произвольного числа элементов в списке "domain search" в /etc/resolv.conf (ранее можно было указать не больше шести доменов); при указании опции "rotate" в glibc теперь случайным образом выбирается сервер имён, который будет использован первым (ранее первым всегда использовался сервер, указанным вторым в списке);
- По умолчанию включены средства тонкой настройки runtime-компонентов, которые позволяют изменять поведение Glibc при помощи переменной окружения GLIBC_TUNABLES;
- Добавлена функция reallocarray, позволяющая выделить память для нескольких отличающихся по размеру объектов без дополнительных затрат на очистку памяти, но с сохранением средств борьбы с целочисленными переполнениями;
- Добавлены функции-обвязки для новых системных вызовов Linux - preadv2() и pwritev2(), которые отличаются от preadv() и pwritev() наличием ещё одного аргумента для передачи ядру дополнительных флагов. В настоящее время при наличии ядра Linux 4.7+ поддерживаются флаги RWF_SYNC (сброс данных и метаданных из кэша на носитель после выполнения операции) и RWF_DSYNC (принудительный сброс на носитель только данных);
- В posix_spawnattr_setflags добавлена поддержка флага POSIX_SPAWN_SETSID, используемого для создания нового идентификатора сеанса session ID для порождённого процесса. Данный флаг намечен для включения в следующей версии стандарта POSIX, поэтому пока поставляется в составе расширений "_GNU_SOURCE";
- Заголовочный файл errno.h теперь безопасно использовать из блоков на языке ассемблера, прошедших обработку в Си-препроцессоре;
- Возможности, связанные с кодировками, информацией о типах символов и таблицами транслитерации, приведены в соответствие со спецификацией Unicode 10.0.0;
- Удалён порт для Native Client с архитектурой ARMv7-A;
- Из заголовочного файла string.h исключены inline-версии строковых функций, а макросы __USE_STRING_INLINES и __NO_STRING_INLINES больше ни на что не влияют;
- Удалён нестандартный заголовочный файл xlocale.h, вместо которого следует использовать locale.h. Также удалён устаревший файл sys/ultrasound.h;
- Удалена поддержка устаревшей функции cfree() вместо которой следует использовать free();
- Для работы теперь требуется ядро Linux 3.2 или более новый выпуск. Для сборки Glibc необходимо наличие GNU Binutils 2.25+ и GCC 4.9+ (ограничение не распространяется на сборку приложений, использующих Glibc, только на сборку самого Glibc);
- Устранены уязвимости:
- CVE-2017-1000366 - локальное повышение привилегий через манипуляцию с содержимым переменной окружения LD_LIBRARY_PATH при вызове suid-приложений. На базе данной уязвимости была построена серия эксплоитов для локального получения прав root в рамках атаки Stack Сlash;
- CVE-2017-12132 - DNS-резолвер подвержен спуфинг-атакам, манипулирующим фрагментацией пакетов большого размера;
- CVE-2010-3192 - утечка информации через повреждение стека при вызове функции __stack_chk_fail;
- CVE-2017-12133 - обращение к буферу после его освобождения (use-after-free) в коде clntudp_call из состава Sun RPC.
Источник: http://www.opennet.ru/opennews/art.shtml?num=46959
|
0 | Tweet | Нравится |
|