Glibc 2.35 містить удосконалення, виправлення помилок тощо

Після шести місяців розвитку було оголошено про вихід нової версії Glibc 2.35 в якому містить виправлення від 66 розробників і з реалізованих покращень ми можемо виявити, що була додана підтримка мовного стандарту "C.UTF-8", який включає сортування для всіх кодів Unicode, але обмежений використанням діапазонів ASCII у функціях fnmatch, regexec і regcomp для збереження простір.

Місцевий стандарт становить приблизно 400 КБ, з яких 346 КБ — це дані LC_CTYPE для Unicode, і їх необхідно встановити окремо (не вбудовано в Glibc). Дані кодування, інформація про типи символів і таблиці транслітерації оновлено для підтримки специфікації Unicode 14.0.0.

Ще одна зміна, яка виділяється, полягає в тому, Ю реалізувати функції та макроси, які округляють результат до більш вузького типу, На додаток до реалізації функцій і макросів для пошуку мінімальних і максимальних чисел з плаваючою комою типи float, long double, _FloatN і _FloatNx, описані в специфікації IEEE 754-2019.

для функцій exp10, відповідні макроси додаються до заголовного файлу, які не прив’язані до певних типів, плюс макрос _PRINTF_NAN_LEN_MAX додано до , запропонованого в проекті стандарту ISO C2X.

Система динамічного зв'язування реалізує новий алгоритм класифікації DSO за допомогою пошуку глибини (DFS) для вирішення проблем продуктивності під час обробки залежностей циклів. Щоб вибрати алгоритм сортування DSO, пропонується параметр glibc.rtld.dynamic_sort, який можна встановити на «1», щоб повернутися до попереднього алгоритму.

Окрім цього додано підтримку нової функції '__memcmpeq' до ABI, який використовується компіляторами для оптимізації використання `memcmp', коли повертається значення цієї функції використовується лише для перевірки стану завершення операції.

Файл підтримка автоматичної реєстрації потоків використовуючи системний виклик rseq (перезавантажувані послідовності), який надається з ядра Linux 4.18. Системний виклик rseq дозволяє організувати безперервне виконання групи інструкцій який не переривається і фіксує результат з останнім оператором у групі. По суті, він забезпечує можливість дуже швидкого атомарного виконання операцій, які, якщо їх перериває інший потік, очищаються та повторюються.

З іншого боку, це забезпечує стандартна компіляція всіх виконуваних файлів вбудованих програм і набору тестів у режимі PIE (позиційно-незалежний виконуваний файл).

Щоб вимкнути цю поведінку, надається параметр «–disable-default-pie»., плюс для Linux, додано параметр glibc.malloc.hugetlb, щоб змінити реалізацію malloc, щоб використовувати системний виклик madvise з прапором MADV_HUGEPAGE для mmap і sbrk, або безпосередньо використовувати великі сторінки пам’яті, вказавши прапор MAP_HUGETLB у викликах mmap.

У першому випадку підвищення продуктивності можна досягти, використовуючи прозорі величезні сторінки в режимі madvise, а в другому випадку можна використовувати величезні сторінки, зарезервовані системою (Huge Pages).

Також слід зазначити, що в цій новій версії були виправлені деякі вразливості:

  • CVE-2022-23218, CVE-2022-23219: переповнення буфера у функціях svcunix_create і clnt_create, викликане копіюванням вмісту параметра імені файлу в стек без перевірки розміру скопійованих даних. Для додатків, створених без захисту стека та з використанням протоколу "unix", вразливість може призвести до виконання шкідливого коду при обробці дуже довгих імен файлів.
  • CVE-2021-3998: вразливість у функції realpath(), викликана поверненням неправильного значення за певних умов, що містить неочищені залишкові дані зі стека. Для програми fusermount з коренем SUID вразливість можна використовувати для отримання конфіденційної інформації з пам’яті процесу, наприклад, для отримання інформації про покажчик.
  • CVE-2021-3999: Переповнення однобайтового буфера у функції getcwd(). Проблема спричинена помилкою, яка існує з 1995 року. Щоб викликати переповнення в окремому просторі імен точки монтування, просто викликайте chdir() у каталозі "/".

В кінці кінців Якщо вам цікаво дізнатись більше про це, Ви можете перевірити деталі в наступне посилання.


Будьте першим, щоб коментувати

Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.