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

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

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

  • В заголовочный файл math.h добавлены новые экспоненциальные и логарифмические функции, определённые в стандарте C23: exp2m1, exp10m1.log2p1, log10p1 и logp1. Функции доступны в вариантах для типов float, double, long double, _FloatN и _FloatNx.

  • Добавлен макрос _ISOC23_SOURCE, определяющий использование возможностей, предложенных в стандарте C23 (в настоящее время в Glibc реализованы лишь часть возможностей C23). Использование C23 также можно включить при компиляции через указание в GCC опций -std=c23, -std=gnu23, -std=c2x или -std=gnu2x.

  • Добавлена настройка «glibc.rtld.enable_secure», позволяющая при проведении тестирования запускать программу так, как если бы она имела флаг смены идентификатора пользователя (setuid).

  • На платформе Linux заголовочный файл epoll.h обновлён для поддержки новых ioctl и структур epoll, появившихся в ядре Linux 6.9.

  • Функциональность для выявления возможных переполнений буфера и связанных с безопасностью ошибок во время выполнения функций работы со строками и управления памятью (»_FORTIFY_SOURCE») адаптирована для сборки Glibc при помощи компилятора Clang.

  • В библиотеке с векторными математическими функциями (libmvec) предложены реализации функций acosh, asinh, atanh, cbrt, cosh, erf, erfc, hypot, pow, sinh и tanh для архитектуры Aarch64.

  • На системах x86 для ускорения записи больших наборов данных в функции memset предоставлена возможность отключения использования временных буферов. Оптимизация активируется при помощи настройки «x86_memset_non_temporal_threshold».

  • Макросы в заголовочном файле stdbit.h, работающие с различными типами (type-generic), при использовании GCC 14 переведены на использование встроенных функций __builtin_stdc_bit_ceil для поддержки операндов с типами __int128 и _BitInt (N).

  • Поля с эпохальным счётчиком времени в структурах lastlog, utmp и utmpx переведены с использования 32-разрядного знакового типа на беззнаковый тип, что позволяет продлить максимальное адресуемое счётчиком время с 2038 года до 2106 года.

  • Устранены уязвимости:
    • CVE-2024–2961  — переполнение буфера при преобразовании специально оформленных строк в кодировке ISO-2022-CN-EXT функцией iconv (). На практике уязвимость может быть использована для удалённой атаки на PHP-приложения, приводящей к выполнению кода.

    • CVE-2024–33599 — переполнение буфера в коде для работы с кэшем netgroup в процессе nscd (Name Service Cache Daemon). Уязвимость может быть эксплуатирована через отправку клиентом специально оформленного запроса.
    • CVE-2024–33600 — разыменование нулевого указателя в процессе nscd, которое может привести к аварийному завершению при обработке определённых запросов.

    • CVE-2024–33601 — ошибка при работке с кэшем netgroup может привести к аварийному завершению процесса nscd из-за сбоя при выделении памяти.

    • CVE-2024–33602 — повреждение памяти при работе с кэшем netgroup в процессе nscd.



    Источник: http://www.opennet.ru/opennews/art.shtml? num=61594

© OpenNet