После шест месеци развоја, пуштена је системска библиотека ГНУ Ц Либрари (глибц) 2.39, која је у потпуности усклађена са захтевима стандарда ИСО Ц11 и ПОСИКС.1-2017. Ново издање укључује исправке од 67 програмера.
Нека од побољшања имплементираних у Глибц 2.39 укључују:
- Обезбеђена је подршка за сенчени стек уведен у језгру. Linux 6.6, која блокира многе експлоите користећи хардверске могућности Интелових процесора за заштиту од преписивања повратне адресе из функције у случају препуњења бафера стека. Ова заштита функционише тако што чува повратне адресе не само на редовном стеку, већ и на посебном „сенчаном“ стеку, који се не може директно мењати, након што се контрола пренесе на функцију. Пре изласка из функције, повратна адреса се извлачи из сенчаног стека и упоређује са повратном адресом из главног стека. Неусклађеност у адресама генерише изузетак, блокирајући ситуације у којима је експлоит успео да пребрише адресу на главном стеку. Додата је опција изградње „--enable-cet“ да би се омогућила ова заштита.
- Додата нова датотека заглавља , дефинисан у нацрту ИСО Ц2Кс стандарда и који укључује функције стдц_леадинг_зерос, стдц_леадинг_онес, стдц_траилинг_зерос, стдц_траилинг_онес, стдц_фирст_леадинг_зеро, стдц_фирст_леадинг_фирингст_, стдц_траилинг_онес, стдц_траилинг_онес ц_цоунт_зерос, стдц_цоунт_онес, стдц_хас _сингле_бит, стдц_бит_видтх, стдц_бит_флоор и стдц_бит_цеил у варијантама са типовима „унсигнед цхар“, „ унсигнед схорт“ , „унсигнед инт“, „унсигнед лонг инт“ и „унсигнед лонг лонг инт“.
- За платформу Linux Функције posix_spawnattr_getcgroup_np и posix_spawnattr_setcgroup_np, као и заставица POSIX_SPAWN_SETCGROUP, су имплементиране. Оне омогућавају подешавање cgroupv2 у новом процесу коришћењем функција posix_spawn и posix_spawnp, елиминишући услове трке. Ове функције су GNU екстензије и захтевају језгро да би радиле. Linux са подршком за системске позиве clone3.
- За платформу Linux Имплементиране су функције pidfd_spawn и pidfd_spawp, које су по семантици сличне функцији posix_spawn, али не враћају идентификатор процеса (PID), већ дескриптор датотеке за употребу у функцијама које подржавају PIDFD механизам, као што су pidfd_send_signal, poll и waitid (PIDFD је повезан са одређеним процесом и не мења се, док се PID може повезати са другим процесом након што се заврши тренутни процес повезан са овим PID-ом).
- За платформу Linux Додата је функција pidfd_getpid за одређивање идентификатора процеса (PID) на основу дескриптора датотеке процеса (PIDFD) који враћају функције pid_spawn, fork_np и pidfd_open.
- Додан модификатор величине „вН“ у сцанф породицу функција, који се примењује на аргументе типова интН_т, инт_леастН_т, уинтН_т и уинт_леастН_т. На пример, да бисте прочитали децималне вредности са типовима инт32_т и инт_леаст32_т, можете да наведете „%в32д“, а хексадецималне вредности се могу навести као „%в32к“. Слично, модификатор "вфН" је додат типовима инт_фастН_т и уинт_фастН_т уведеним у нацрт стандарда ИСО Ц2Кс.
- Додато је подешавање „глибц.цпу.плт_реврите“ које омогућава поновно писање ПЛТ-а (Табела повезивања процедура) на к86-64 системима, у којима ће линкер заменити индиректне гране у ПЛТ-у директним.
- Додато подешавање „глибц.мем.децорате_мапс“ за додавање додатних информација о додели меморије (као што је стек нити креиран помоћу птхреад_цреате или меморија додељена преко маллоц-а).
- Структура „statvfs“ сада попуњава поље „f_type“ информацијама о типу фајл система, еквивалентним садржају поља у структури „statfs“. Раније, Linux Поље „f_type“ је увек садржало 0.
- За ААрцх64 платформу, напомене су додате либмвецу и матх.х које омогућавају, када наведете опцију “-ффаст-матх” приликом изградње, да користите векторирање позива приликом изградње у ГЦЦ 9 и новијим верзијама компајлера. Векторизација је омогућена за математичке функције ацос, ацосф, асин, асинф, атан, атанф, атан2, атан2ф, цос, цосф, екп, екпф, екп10, екп10ф, екп2, екп2ф, екпм1, екпм1ф, лог, логф, логф10, лог10 лог1п , лог1пф, лог2, лог2ф, син, синф, тан и танф.
- Либцрипт библиотека и повезана датотека заглавља су уклоњени из пакета " " Програмери апликација се подстичу да пређу на алтернативне библиотеке као што је либкцрипт.
- Услужни програм лдцонфиг сада прескаче датотеке са знаком ';'. у називу датотеке или се завршава са „.дпкг.тмп“ и „.дпкг.нев“, што вам омогућава да избегнете обраду привремених датотека рпм и дпкг менаџера пакета.
- Подршка за иа64 архитектуру (иа64*-*-линук-гну), која се користи у Интел Итаниум процесорима, је укинута.
- Поправљене рањивости:
- ЦВЕ-2023-6246, ЦВЕ-2023-6779, ЦВЕ-2023-6780 су критичне рањивости у функцији __всислог_интернал(), које омогућавају извршавање кода са повишеним привилегијама кроз манипулације са покретањем СУИД апликација.
- ЦВЕ-2023-4911 је рањивост у Глибц лд. тако да вам омогућава да добијете роот привилегије на систему. Рањивост је последица грешке у коду за рашчлањивање стрингова наведеном у променљивој окружења ГЛИБЦ_ТУНАБЛЕС, што може довести до тога да се рашчлањена вредност испише ван граница у додељеном баферу. Постоје радни подвизи.
- ЦВЕ-2023-4806 је рањивост без употребе у функцији гетаддринфо. Проблем се јавља када НСС додатак имплементира само повратне позиве „_гетхостбинаме2_р“ и „_гетцаноннаме_р“, али не подржава позив „_гетхостбинаме3_р“. Да би искористио рањивост, ДНС сервер мора да врати велики број ИПв6 и ИПв4 адреса за тражени хост, што ће довести до пада процеса који је позвао гетаддринфо функцију за породицу АФ_ИНЕТ6 када су заставице АИ_ЦАНОННАМЕ, АИ_АЛЛ и АИ_В4МАППЕД комплет.
- ЦВЕ-2023-4527 је рањивост у функцији гетаддринфо која омогућава читање података из области изван границе бафера приликом обраде ДНС одговора примљеног преко ТЦП-а који је већи од 2048 бајтова. Рањивост се јавља када се користи опција "но-аааа" у /етц/ресолв.цонф.
Поред тога, можемо приметити издавање скупа системских услужних програма ГНУ Бинутилс 2.42, који укључује програме као што су ГНУ линкер, ГНУ асемблер, нм, објдумп, стрингс, стрип.
У новој верзији Бинутилс-а:
- Експериментална опција „--сцфи=екпериментал“ је додата асемблеру (гас) за к86-64 системе да би се синтетизовале ЦФИ (Цонтрол Флов Интегрити) конструкције за ручно писани асемблерски код који одговара Систем В АМД64 АБИ.
- Додата опција "--ектра-сим-инфо" за читање за приказ проширених информација о симболима ("-симболс"), као што је назив одељка на који упућује ст_схндк индекс.
- Услужни програм објцопи пружа могућност коришћења опције „--сет-сецтион-флагс“ са „великом“ вредношћу за постављање секције заставице СХФ_Кс86_64_ЛАРГЕ за ЕЛФ објекте на к86-64 системима. Опција “--висуализе-јумпс” имплементира подршку за с390 архитектуру.
- Приликом растављања с390 инструкција, имплементирана је могућност приказа коментара у опису инструкција. Да бисте омогућили описе, можете навести опцију „-М инсндесц“ у објдумп-у и опцију „сет дисассемблер-оптионс инсндесц“ у гдб-у.
- Додате су опције "-з марк-плт" и "-з номарк-плт" линкеру за означавање уноса у ПЛТ табели користећи ознаке ДТ_Кс86_64_ПЛТ, ДТ_Кс86_64_ПЛТСЗ и ДТ_Кс86_64_ПЛТЕНТ.
- Додата подршка за обрнуто сортирање линкеру.
- Додате опције "--варн-екецстацк-објецтс", "--еррор-екецстацк" и "--еррор-ркв-сегментс" за излаз упозорења или грешака када се користе на извршним објектима стека.
- Имплементирана је подршка за АБИ 2.30 ЛоонгАрцх архитектуре, као и подршка за нове инструкције дефинисане у ЛоонгАрцх 1.10 спецификацији.
- Додата подршка за КВКС скуп инструкција који се користи у Калраи процесорима (на пример, који се користи у СоЦ Цоолидге).
- За системе засноване на Интел архитектури, додата је подршка за екстензије:
- Интел АПКС: 32 ГПР, НДД, ПУСХ2/ПОП2, ПУСХП/ПОПП.
- УСЕР_МСР.
- АВКС10.1.
- ПБНДКБ.
- СМ4.
- СМ3.
- СХА512.
- АВКС-ВННИ-ИНТ16.
- Подршка за екстензије је додата порту архитектуре РИСЦ-В:
- Т-Хеад (КСТхеадВецтор, КСТхеадЗвлссег и КСТхеадЗвамо).
- ЦОРЕ-В (КСЦВмац, КСЦВалу).
- СиФиве ВЦИКС (КССфВцп).
- Подршка за екстензије је додата порту за ААрцх64 архитектуру:
- СВЕ2.1 (Сцалабле Вецтор Ектенсион 2.1).
- СМЕ2.1 (Сцалабле Матрик Ектенсион 2.1).
- Б16Б16 (БФлоат16 и БФлоат16 за СВЕ2 и СМЕ2).
- РАСв2 (поузданост, доступност и услужност в2).
- ЛСЕ128 (128-битни атомски).
- ГЦС (Гуардед Цонтрол Стац).
- ЦХК (Провера статуса функције).
- СПЕЦРЕС2 (Побољшано ограничење спекулације).
- ЛРЦПЦ3 (Лоад-Ацкуире РЦпц).
- ТХЕ (Транслатион Харденинг).
- ИТЕ (Траг инструкција).
- Д128 (128-битни дескриптори таблице меморијских страница).
- КСС (КСС меморијски атрибут).
- Додата подршка за ААрцх64 Цортек-А520, Цортек-А720, Цортек-Кс3 и Цортек-Кс4 процесоре.
- За компатибилност са цланг/ЛЛВМ асемблером, БПФ асемблер је додао подршку за одвајање коментара симболима „#“ и „//“, као и коришћење симбола „;“ да раздвоји изразе унутар реда („;“ се више не може користити за коментаре).
Извор: опеннет.ру
