The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

19.02.2016 19:45

После шести месяцев разработки состоялся релиз системной библиотеки 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
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43910-glibc
Ключевые слова: glibc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (22) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Mr. Cake (?), 20:35, 19/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    >В функцию getaddrinfo добавлена проверка на наличие некоторых некорректных ответов через внутренний сокет netlink, так как наиболее вероятной причиной повреждения ответа является ошибочное повторное использование закрытого файлового дескриптора netlink в многопоточных приложениях

    Т. е. убивают процесс на основании того, что кому-то что-то показалось. Ооок.

     
     
  • 2.10, Аноним (-), 01:46, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, на основании повреждения ответа. Точно так же как сейчас при повреждении например кучи.
     
     
  • 3.19, Аноним (-), 16:59, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Если говорить конкретно getaddrinfo - то клиент отправляет запрос и получает ответ, тут всё просто. Поэтому у Mr. Cake всё правильно. Я также сначала подумал, перечитал, и понял, в предложении ведь не уточняется какого именно ответа. А значит надо брать самый очевидный ответ - клиент падает при получении кривого ответа.
     

  • 1.3, Spoofing (?), 20:52, 19/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    подскажите пожалуйста, а после обновления glibc, нужно ли следом пересобрать весь "мир"? или достаточно перезагрузиться? т.е. необходимо перезапустить все программы, в которых используется getaddrinfo(), чтобы они подхватили новую исправленную версию библиотеки glibc?
     
     
  • 2.4, anonymous (??), 21:02, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > подскажите пожалуйста, а после обновления glibc, нужно ли следом пересобрать весь "мир"?
    > или достаточно перезагрузиться? т.е. необходимо перезапустить все программы, в которых
    > используется getaddrinfo(), чтобы они подхватили новую исправленную версию библиотеки
    > glibc?

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

     
     
  • 3.5, Аноним (-), 21:05, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    в генте бизибокс с глибц?
     
     
  • 4.11, anonymous (??), 11:33, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > в генте бизибокс с глибц?

    Судя по FAQ bb: https://busybox.net/FAQ.html#libc
    поддерживаются uClibc и glibc, по дефолту в большинстве x86 profile'ов используется glibc. Соответствено, я предполагаю, что оно будет линковаться с glibc.

     
  • 2.7, Z (??), 21:44, 19/02/2016 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Насколько я понимаю,

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

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

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

     
     
  • 3.12, anonymous (??), 11:34, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Насколько я понимаю,
    > 1. бинарная совместимость, которую glibc жестко поддерживает, позволяет использовать
    > старые программы с новой glibc, и
    > 2. перезагружаться не надо, заново запущенные процесс начнут использовать новую glibc,
    > т.е. сервисы нужно перезагрузить, а init раньше нужно было сказать telinit
    > q и он использовал новую glibc, как с systemd не знаю,
    > но он, наверняка тоже умеет без перезагрузки.
    > Это если у тебя Linux, как на винде не в курсе.

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

     
  • 3.16, Eklykti (?), 13:19, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > как с systemd не знаю

    systemctl daemon-reexec

     

  • 1.9, Michael Shigorin (ok), 00:32, 20/02/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Уже отправлена в сизиф коллегой, принявшим участие в разработке. :)
     
     
  • 2.13, _KUL (ok), 11:51, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А можно узнать процент вклада от общего обёма строк?
     
     
  • 3.14, Сергей (??), 12:41, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Как вы используете этот процент?
     
     
  • 4.15, Andrey Mitrofanov (?), 12:48, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Как вы используете этот процент?

    Целому одному мы все тут устроим стоячую овацию.

     
     
  • 5.17, Сергей (??), 14:21, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Остальные уже использовали? ;-)
     
     
  • 6.20, _KUL (ok), 18:21, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Разве отвечать вопросами на вопрос для джентельменов это приемлемо?
     
     
  • 7.21, РОСКОМУЗОР (?), 19:47, 20/02/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Вполне. У некоторых национальностей это даже традиция.
     
  • 5.22, Какаянахренразница (ok), 07:06, 22/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Как вы используете этот процент?
    > Целому одному мы все тут устроим стоячую овацию.

    У вас что-то не так с приведением типов. Один целый (int i = 1) не может содержать процент (float).

     
     
  • 6.23, Andrey Mitrofanov (?), 11:09, 22/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Как вы используете этот процент?
    >> Целому одному мы все тут устроим стоячую овацию.
    > У вас что-то не так с приведением типов. Один целый (int i
    > = 1) не может содержать процент (float).

    Ты меня с _чем_-то путаешь.  То ли с конпелятором,то ли с калькулятором.

     
     
  • 7.24, Аноним (-), 14:17, 23/02/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >>>> Как вы используете этот процент?
    >>> Целому одному мы все тут устроим стоячую овацию.
    >> У вас что-то не так с приведением типов. Один целый (int i
    >> = 1) не может содержать процент (float).
    > Ты меня с _чем_-то путаешь.  То ли с конпелятором,то ли с
    > калькулятором.

    Ну если ты что-то, то так тебе и надо. Самоопределение красноречивое.

     
  • 3.25, Аноним (-), 01:25, 24/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    несмотря на читаемый сарказм, все контрибуторы - Важны.
    на самом деле сдедующаыя либа - еще интереснее будет, там список измнений и улучшений - более впечатляющий, но она будет хотеть уже не то 5.2 не то 5.3 GCC, что в общем-то - скорее плюс, чем минус, тоже.
     
  • 2.26, skybon (ok), 13:20, 25/02/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Шигорин никогда не упустит шанс пропиарить Альт.

    Нет, за качество Альта ничего не говорю, но сам PR выглядит немного комично.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру