Выпуск сістэмнай бібліятэкі Glibc 2.32

Пасля шасці месяцаў распрацоўкі апублікаваны рэліз сістэмнай бібліятэкі GNU C Library (glibc) 2.32, якая цалкам прытрымліваецца патрабаванням стандартаў ISO C11 і POSIX.1-2017. У склад новага выпуску ўключаны выпраўленні ад 67 распрацоўшчыкаў.

З рэалізаваных у Glibc 2.32 паляпшэнняў можна адзначыць:

  • Дададзена падтрымка працэсараў Synopsys ARC HS (ARCv2 ISA). Для працы порта патрабуецца прынамсі binutils 2.32, gcc 8.3 і ядро ​​Linux 5.1. Падтрымліваецца тры варыянты ABI arc-linux-gnu, arc-linux-gnuhf і arceb-linux-gnu (big-endian);
  • Рэалізавана загрузка модуляў аўдыту, указаных у секцыях DT_AUDIT і
    DT_DEPAUDIT выкананага файла.

  • Для архітэктуры powerpc64le рэалізавана падтрымка тыпу IEEE128 long double, якая ўключаецца пры зборцы з опцыяй "-mabi=ieeelongdouble".
  • Некаторыя API анатаваны з выкарыстаннем GCC-атрыбута 'access', які дазваляе пры кампіляцыі ў GCC 10 генераваць больш якасныя папярэджанні пры азначэнні магчымых перапаўненняў буфераў і іншых варыянтаў вынахаду за дапушчальныя межы.
  • Для Linux-сістэм рэалізаваны функцыі pthread_attr_setsigmask_np і
    pthread_attr_getsigmask_np, якія даюць з дадаткам магчымасць паказаць маску сігналу для патокаў, створаных пры дапамозе pthread_create.

  • Дадзеныя кадовак, інфармацыя аб тыпах сімвалаў і табліцы транслітарацыі абноўлены для падтрымкі спецыфікацыі Unicode 13.0.0;
  • Дададзены новы загалоўкавыя файл , Які вызначае зменную __libc_single_threaded, якую можна выкарыстоўваць у прыкладаннях для аднаструменных аптымізацый.
  • Дададзеныя функцыі sigabbrev_np і sigdescr_np, якія вяртаюць скарочаную назву і апісанне сігналу (напрыклад, «HUP» і Hangup» для SIGHUP).
  • Дададзеныя функцыі strerrorname_np і strerrordesc_np, якія вяртаюць імя і апісанне памылкі (напрыклад, "EINVAL" і "Invalid argument" для EINVAL).
  • Для платформы ARM64 дададзены сцяг "—enable-standard-branch-protection" (або -mbranch-protection=standard у GCC), задзейнічаны механізм ARMv8.5-BTI (Branch Target Indicator) для абароны выканання набораў інструкцый, на якія не павінны выконвацца пераходы пры галінаванні. Блакаванне пераходаў на адвольныя ўчасткі кода рэалізавана для процідзеяння стварэнню гаджэтаў у эксплоітах, якія выкарыстоўваюць прыёмы зваротна-арыентаванага праграмавання (ROP - Return-Oriented Programming, атакавалы не спрабуе размясціць свой код у памяці, а аперуе ўжо наяўнымі кавалкамі машынных інструкцый, якія завяршаюцца з якіх выстройваюцца ланцужок выклікаў для атрымання патрэбнай функцыянальнасці).
  • Праведзена вялікая чыстка састарэлых магчымасцяў, у тым ліку выдаленыя опцыі "-enable-obsolete-rpc" і "-enable-obsolete-nsl", загалоўкавых файлаў . Абвешчаныя састарэлымі функцыі sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore і sigset, масівы sys_siglist, _sys_siglist і sys_sigabbrev, знакі sys_errlist, _sys_errlist, sys_nerr і _sys_nerr.
  • ldconfig па змаўчанні перакладзены на выкарыстанне новага фармату ld.so.cache, які падтрымліваецца ў glibc ужо амаль 20 гадоў.
  • Ухілены ўразлівасці:
    • CVE-2016-10228 - зацыкльванне ва ўтыліце iconv, якое праяўляецца пры запуску з опцыяй "-c", у выпадку апрацоўкі некарэктных шматбайтавых дадзеных.
    • CVE-2020-10029 - пашкоджанне стэка пры выкліку трыганаметрычных функцый з псевдонулевым аргументам.
    • CVE-2020-1752 - зварот да вобласці памяці пасля яе вызвалення (use-after-free) у функцыі glob пры расчыненні спасылкі на хатні каталог ("~user") у шляхах.
    • CVE-2020-6096 - некарэктная апрацоўка на платформе ARMv7 адмоўных значэнняў параметру ў memcpy() і memmove(), вызначальнага памер капіяванай вобласці. дазваляе арганізаваць выкананне кода пры апрацоўцы ў функцыях memcpy() і memmove() вызначанай выявай аформленых дадзеных. Паказальна, што праблема заставалася нявыпраўленай амаль два месяцы з моманту публічнага раскрыцця інфармацыі і пяць месяцаў з моманту апавяшчэння распрацоўшчыкаў Glibc.

Крыніца: opennet.ru

Дадаць каментар