После шести месяцев разработки опубликован релиз системной библиотеки 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
- CVE-2024-2961