Фев 19, 2016 - 0 Comments - Интересно -

Релиз системной библиотеки Glibc 2.23

19.02.2016 19:45 Релиз системной библиотеки Glibc 2.23

После шести месяцев разработки состоялся релиз системной библиотеки GNU C Library (glibc) 2.23, которая полностью следует требованиям стандартов ISO C11 и POSIX.1-2008. В подготовке нового выпуска использованы патчи от 74 разработчиков.

Из добавленных в Glibc 2.23 улучшений можно отметить:

  • Поддержка Unicode 8.0.0: обновлены все кодировки, информация о типах символов и таблицы транслитерации, для которых также задействованы новые или обновлённые скрипты генерации, позволившие закрыть несколько давно висевших отчётов об ошибках;
  • Вызовы sched_setaffinity и pthread_setaffinity_np теперь не пытаются угадать внутренние параметры активных CPU в ядре, что позволило исключить сбои при попытке изменения привязки процессов к определённым CPU (CPU affinity). В случае необходимости определения эффективных привязок CPU в приложениях следует вызывать функцию sched_getaffinity или pthread_getaffinity_np, так как ранее заданные установки могут быть откорректированы ядром;
  • При сборке с опцией «-D_FILE_OFFSET_BITS=64» теперь можно использовать заголовочный файл fts.h, в котором для больших файлов предлагаются новые вызовы fts64_children, fts64_close, fts64_open, fts64_read и fts64_set;
  • В функцию getaddrinfo добавлена проверка на наличие некоторых некорректных ответов через внутренний сокет netlink. В случае поступления подобных ответов, подверженный проблеме процесс будет завершён с сообщением о непредвиденной ошибке («Unexpected error NUM on netlink descriptor NUM» или » «Unexpected netlink response of size NUM on descriptor NUM»), так как наиболее вероятной причиной повреждения ответа является ошибочное повторное использование закрытого файлового дескриптора netlink в многопоточных приложениях;
  • Устранён дефект в реализации вызова malloc, связанный с выполнением лишних запросов на сериализацию памяти в многопоточных приложениях, с большой частотой создающих и завершающих потоки. Проблема проявлялась начиная с glibc 2.15 (2012 год) или начиная с glibc 2.10 при сборке с опцией «—enable-experimental-malloc» (2009 год). После устранения ошибки наблюдается значительное увеличение пропускной способности одновременных запросов распределение памяти;
  • Добавлена новая сборочная опция «—disable-timezone-tools», дающая возможность отключить сборку и установку утилит, связанных с обработкой баз часовых поясов (zic, zdump и tzselect);
  • Удалён устаревший заголовочный файл «regexp.h», вместо которого следует использовать «regex.h»;
  • Удалён заголовочный файл «sys/kdaemon.h», а устаревшие функции bdflush, create_module, get_kernel_syms, query_module и uselib теперь недоступны для вновь скомпонованных бинарных файлов. Данный заголовочный файл и функции специфичны для систем на базе ядра Linux и потеряли смысл на системах с ядром Linux новее 2.6;
  • Проведена оптимизация строковых операций, функций работы с памятью и вызовов wcsmbs для систем IBM z13;
  • Вновь скомпонованные программы, в которых определена переменная signgam, теперь не смогут установить её через функции lgamma, lgammaf и lgammal, так как данная переменная теперь определена в заголовочном файле math.h;
  • Для сборки Glibc 2.23 теперь требуется как минимум GCC 4.7, для сборки связанных с Glibc программ по-прежнему могут применяться старые версии GCC и иные компиляторы;
  • Устранены уязвимости:
    • CVE-2015-7547 — несколько дней назад анонсированная критическая уязвимость в libresolv, позволяющая удалённо выполнить код в системе при резолвинге подконтрольного атакующему доменного имени в любом приложении, использующем вызов getaddrinfo(). Проблема является одной из самых опасных уязвимостей за последнее время и может проявиться в широком спектре клиентских и серверных программ, от почтовых серверов до web-приложений на PHP и Ruby on Rails;
    • CVE-2015-8776 — крах, вызванный обращением за границы буфера, в котором размещена структура tm при вызове функции strftime;
    • CVE-2015-8777 — возможность использования переменной окружения LD_POINTER_GUARD для отключения механизмов защиты указателей в исполняемых файлах, запущенных в режиме AT_SECURE;
    • CVE-2015-8778 — целочисленное переполнение в функциях hcreate и hcreate_r, которое может привести к обращению к областям памяти вне границ буфера;
    • CVE-2015-8779 — выход за границы стека в функции catopen;
    • CVE-2014-9761 — выход за границы стека при обработке слишком больших строк в функциях nan, nanf и nanl;
  • Закрыто 264 отчёта об ошибках.
  1. Главная ссылка к новости (https://sourceware.org/ml/libc…)
  2. OpenNews: Удалённо эксплуатируемая уязвимость в Glibc, охватывающая большинство сетевых приложений в Linux
  3. OpenNews: Состоялся релиз системной библиотеки Glibc 2.22
  4. OpenNews: Выпуск системной библиотеки Glibc 2.21
  5. OpenNews: Уязвимость GHOST в Glibc может проявляться в web-приложениях на языке PHP
  6. OpenNews: Выпуск системной библиотеки Glibc 2.20, ознаменовавший слияние с Eglibc
Тип: Программы
Ключевые слова: glibc, (найти похожие документы)
При перепечатке указание ссылки на opennet.ru обязательно
 
+1 +/
подскажите пожалуйста, а после обновления glibc, нужно ли следом пересобрать весь «мир»? или достаточно перезагрузиться? т.е. необходимо перезапустить все программы, в которых используется getaddrinfo(), чтобы они подхватили новую исправленную версию библиотеки glibc?
 
 
+1 +/
> подскажите пожалуйста, а после обновления glibc, нужно ли следом пересобрать весь «мир»?
> или достаточно перезагрузиться? т.е. необходимо перезапустить все программы, в которых
> используется getaddrinfo(), чтобы они подхватили новую исправленную версию библиотеки
> glibc?

В обычной генту, скомпилированной без особых изысков, достаточно будет перезагрузиться, т.к. всё слинковано динамически. Возможно, часть системных вещей типа busybox может быть слинкована статически — их надо будет пересобрать, но это смотрите свой профайл.

 
+4 +/
Насколько я понимаю,

1. бинарная совместимость, которую glibc жестко поддерживает, позволяет использовать старые программы с новой glibc, и

2. перезагружаться не надо, заново запущенные процесс начнут использовать новую glibc, т.е. сервисы нужно перезагрузить, а init раньше нужно было сказать telinit q и он использовал новую glibc, как с systemd не знаю, но он, наверняка тоже умеет без перезагрузки.

Это если у тебя Linux, как на винде не в курсе.

 
 
+1 +/
> Насколько я понимаю,
> 1. бинарная совместимость, которую glibc жестко поддерживает, позволяет использовать
> старые программы с новой glibc, и
> 2. перезагружаться не надо, заново запущенные процесс начнут использовать новую glibc,
> т.е. сервисы нужно перезагрузить, а init раньше нужно было сказать telinit
> q и он использовал новую glibc, как с systemd не знаю,
> но он, наверняка тоже умеет без перезагрузки.
> Это если у тебя Linux, как на винде не в курсе.

«перезагрузиться» используется в смысле «легкий способ перезапустить все процессы».

 

Ваш комментарий
 

This entry passed through the Full-Text RSS service — if this is your content and you’re reading it on someone else’s site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Человек ? *