Релиз на системната библиотека Glibc 2.41

След шестмесечна разработка беше публикуван релиз на системната библиотека GNU C Library (glibc) 2.41, която напълно отговаря на изискванията на стандартите ISO C11 и POSIX.1-2017. В създаването на новото издание участваха 79 разработчици.

От реализираните в Glibc 2.41 подобрения могат да бъдат отбелязани:

  • За платформата Linux са добавени новите функции sched_setattr и sched_getattr, чрез които могат да се задават/четат параметри на планиращия алгоритъм. На практика функциите позволяват настройване на политики за планиране на заявки, като SCHED_DEADLINE, при които се използват допълнителни параметри, освен приоритета.
  • В утилитата iconv е добавена поддръжка за преобразуване на кодиране на място (ако имената на входния и изходния файлове съвпадат, iconv сега автоматически създава временно файл и след завършване на преобразуването го заменя с оригиналния файл).
  • В заглавния файл math.h са добавени тригонометрични функции, появили се в стандарта C23 (TS 18661-4:2015): acospi, asinpi, atan2pi, atanpi, cospi, sinpi и tanpi.
  • От проекта CORE-MATH са пренесени оптимизирани и използващи правилно закръгление варианти на функции exp10m1f, exp2m1f, expm1f, log10f, log2p1f, log1pf, log10p1f, cbrtf, erff, erfcf, lgammaf, tgammaf, tanf, acosf, acoshf, asinf, asinhf, atanf, atan2f, atanhf, coshf, sinhf и tanhf.
  • Добавена е поддръжка на разширение ARM64 GCS (Guarded Control Stack) за хардуерна защита на адресите за връщане от функции и блокиране на експлойти, използващи методите на връщане-ориентирано програмиране (ROP — Return-Oriented Programming, експлойтът се формира от вече съществуващи парчета машинни инструкции, завършващи с инструкция за връщане на управлението). ARM64 GCS позволява използване на техниката на сянковия стек (shadow stack) за защита на процесите в пространството на потребителя — след предаване на управлението на функцията, адресите на връщане се запазват от процесора не само в обикновения стек, но и в отделен сянков стек, който не може да бъде променен директно. Преди излизането от функцията адресът за връщане се извлича от сянковия стек и се сверява с адреса за връщане от основния стек. За компилиране на Glibc с поддръжка на GCS е необходимо наличие на поне версии binutils 2.44 и GCC 15.
  • Извършена е значителна работа по подобряване на генерирането на код и повишаване на производителността на математическите функции за архитектура ARM64/AArch64. Реализирани са оптимизации с помощта на векторни инструкции (SVE, Scalable Vector Extension) и SIMD разширения (Neon).
  • За системи с ARM64/AArch64 процесори е добавена поддръжка за механизма Memory Protection Keys, използван за ограничаване на достъпа до страници с памет без промяна на таблицата със страници.
  • За системи с PowerPC64 процесори е добавена поддръжка на разширени инструкции за защита от използване на обратнопоточно програмиране в експлойти.
  • Добавен е нов тип архитектура arch_kind_hygon за китайските x86-64 процесори Hygon, изградени на базата на технологии на AMD.
  • Значително е разширен тестовият пакет за glibc, а броят на тестовете в него е увеличен от 5408 до 6232 в сравнение с предишното издание.
  • Добавена е възможност за тестване на glibc с компилатори C и C++, различни от тези, използвани за реалното изграждане. Например, ‘configure TEST_CC="gcc-6.4.1" TEST_CXX="g++-6.4.1"‘ и ‘configure TEST_CC="clang" TEST_CXX="clang++"‘.
  • В опциите, указани в файла /etc/resolv.conf и променливата на средата RES_OPTIONS, е реализирана възможността за използване на префикса "-" за премахване на предишно зададена опция с това име. Например, ако в /etc/resolv.conf е указано „options no-aaaa“, то при стартиране на процеса с променливата на средата „RES_OPTIONS=-no-aaaa“ ще бъде отменена забраната за изпращане на DNS заявки за получаване на AAAA записи.
  • В DNS резолвера е добавена поддръжка за опцията „strict-error“, при която функцията getaddrinfo(), ако не е посочен тип адреси (AF_UNSPEC), ще се опита да получи стойности за A (IPv4) и AAAA (IPv6) записи от друг DNS сървър, ако заявката за A или AAAA записа към първия DNS сървър е завършила с грешка. Без посочване на „strict-error“ в подобна ситуация ще бъде върнат адресът, получен в резултат на успешно обработена заявка, а стойността на неуспешната заявка ще бъде игнорирана. Например, ако сървър е върнал „A“ запис, но е дал грешка при заявката за „AAAA“, getaddrinfo без опция „strict-error“ веднага ще върне само IPv4 адрес, а с опция „strict-error“ ще се опита да повтори заявките към друг DNS сървър.
  • Данните за кодировки, информацията за типове символи и таблиците за транслитерация са актуализирани, за да поддържат спецификацията Unicode 16.0.0.
  • Добавен макрос «_ISOC2Y_SOURCE», който позволява активиране на функциите, определени в черновика на стандарта C2Y. Подобни функции могат да бъдат активирани и с макроса _GNU_SOURCE и чрез компилаторските флагове («gcc -std=gnu2y»).
  • Реализиран е инструментариум benchtest за проследяване на производителността на различни функции (обикновено математически).
  • Добавена е настройка glibc.rtld.execstack, която позволява ясно забраняване на използването на изпълним стек.
  • Добавена е поддръжка за разширяемия ABI rseq (restartable sequences), който предоставя механизъм за бързо атомарно изпълнение на операции (в случай на прекъсване на операцията от друг поток, състоянието се нулира и се прави повторна опит). В новата версия е добавена възможността за използване на разширени функции в rseq, които липсват в оригиналния ABI, като идентификатори за паралелно изпълнение (mm_cid, memory-map concurrency ID) и идентификатори на NUMA възли (node_id).
  • Прекратена е поддръжката на порта за big-endian системи ARC (arceb-linux-gnu).
  • Отстранена е уязвимост (CVE-2025-039), водеща до преливане на буфер при изпълнение на функцията assert(). Преливането настъпва при задаване на твърде дълго име на програмата (argv[0]). Проблемът се счита за неопасен, тъй като извън буфера се записват 4 байта, чийто съдържание не може да контролира атакуващият. Важно е самата поява на уязвимост в отладъчните функции, произлизаща от грешка при извеждане на името на текущото приложение.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster