Після шести місяців розробки опубліковано реліз системної бібліотеки 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.
Джерело: opennet.ru
