Выпуск системной библиотеки Glibc 2.32

Материал из Викиновостей, свободного источника новостей

6 августа 2020 года

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

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

  • Добавлена поддержка процессоров Synopsys ARC HS (ARCv2 ISA). Для работы порта требуется как минимум binutils 2.32, gcc 8.3 и ядро Linux 5.1. Поддерживается три варианта ABI arc-linux-gnu, arc-linux-gnuhf и arceb-linux-gnu (big-endian);
  • Реализована загрузка модулей аудита, указанных в секциях DT_AUDIT и DT_DEPAUDIT исполняемого файла.
  • Для архитектуры powerpc64le реализована поддержка типа IEEE128 long double, включаемая при сборке с опцией "-mabi=ieeelongdouble".
  • В некоторые API аннотированы с использованием GCC-атрибута 'access', позволяющего при компиляции в GCC 10 генерировать более качественные предупреждения при определении возможных переполнений буферов и других вариантов выхода за допустимые границы.
  • Для Linux-систем реализованы функции pthread_attr_setsigmask_np и pthread_attr_getsigmask_np, дающие приложению возможность указать маску сигнала для потоков, созданных при помощи pthread_create.
  • Данные кодировок, информация о типах символов и таблицы транслитерации обновлены для поддержки спецификации Unicode 13.0.0;
  • Добавлен новый заголовочный файл <sys/single_threaded.h>, опредеяющий переменную __libc_single_threaded, которую можно исопользовать в приложениях для однопоточных оптимизаций.
  • Добавлены функции sigabbrev_np и sigdescr_np, возвращающие сокращённое название и описание сигнала (например, "HUP" и Hangup" для SIGHUP).
  • Добавлены функции strerrorname_np и strerrordesc_np, возвращающие имя и описание ошибки (например, "EINVAL" и "Invalid argument" для EINVAL).
  • Для платформы ARM64 добавлен флаг "--enable-standard-branch-protection" (или -mbranch-protection=standard в GCC), задействующий механизм ARMv8.5-BTI (Branch Target Indicator) для защиты выполнения наборов инструкций, на которые не должны выполняться переходы при ветвлении. Блокирование переходов на произвольные участки кода реализовано для противодействия созданию гаджетов в эксплоитах, использующих приёмы возвратно-ориентированного программирования (ROP - Return-Oriented Programming, атакующий не пытается разместить свой код в памяти, а оперирует уже имеющимися кусками машинных инструкций, завершающихся инструкцией возврата управления, из которых выстраиваются цепочка вызовов для получения нужной функциональности).
  • Проведена большая чистка устаревших возможностей, в том числе удалены опции "--enable-obsolete-rpc" и "--enable-obsolete-nsl", заголовочный файл <sys/sysctl.h>. Объявлены устаревшими функции sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore и sigset, массивы sys_siglist, _sys_siglist и sys_sigabbrev, символы sys_errlist, _sys_errlist, sys_nerr и _sys_nerr, NSS-модуль hesiod.
  • ldconfig по умолчанию переведён на использование нового формата ld.so.cache, который поддерживается в glibc уже почти 20 лет.* The hesiod NSS module has been deprecated and will be removed in a future version of glibc. System administrators are encouraged to switch to other approaches for networked account databases, such as LDAP.
  • Устранены уязвимости:
  • CVE-2016-10228 - зацикливание в утилите iconv, проявляющееся при запуске с опцией "-c", в случае обработки некорректных многобайтовых данных.
  • CVE-2020-10029 - повреждение стека при вызове тригонометрических функций с псевдонулевым аргументом.
  • CVE-2020-1752 - обращение к области памяти после её освобождения (use-after-free) в функции glob при раскрытии ссылки на домашний каталог ("~user") в путях.
  • CVE-2020-6096 - на платформе ARMv7 позволяет организовать выполнение кода при обработке в функциях memcpy() и memmove() определённым образом оформленных данных. Показательно, что проблема оставалась неисправленной почти два месяца с момента публичного раскрытия информации и пять месяцев с момента уведомления разработчиков Glibc.

Источники[править]

Creative Commons
Creative Commons
Эта статья содержит материалы из статьи «Выпуск системной библиотеки Glibc 2.32», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии[править]

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.