Lëshimi i bibliotekës sistemore Glibc 2.35

Pas gjashtë muajsh zhvillimi, u publikua lëshimi i bibliotekës sistemore GNU C Library (glibc) 2.35, e cila plotëson plotësisht kërkesat e standardeve ISO C11 dhe POSIX.1-2017. Në këtë lëshim janë përfshirë rregullime nga 66 zhvillues.

Nga përmirësimet e realizuara në Glibc 2.35, mund të theksohen:

  • U shtua mbështetje për lokalizimin «C.UTF-8», i cili përfshin rregullat e rendit për të gjitha kodet Unicode, por për të kursyer hapësirë, është i kufizuar në përdorimin e диапазонеve ASCII në funksionet fnmatch, regexec dhe regcomp. Lokalit zë rreth 400 KB, nga të cilat 346 KB janë të dhënat LC_CTYPE për Unicode, dhe kërkon instalim të veçantë (nuk është e ndërtuar brenda Glibc).
  • Të dhënat e kodimeve, informacioni mbi llojet e simboleve dhe tabelat e transliterimit janë përditësuar për të mbështetur specifikimin Unicode 14.0.0.
  • dhe janë realizuar funksione dhe makro që rroundojnë rezultatin në një tip më të ngushtë: fsqrt, fsqrtl, dsqrtl, ffma, ffmal, dfmal, fMsqrtfN, fMsqrtfNx, fMxsqrtfN, fMxsqrtfNx, fMfmafN dhe fMfmafNx. Funksionet janë përshkruar në specifikimet TS 18661-1:2014, TS 18661-3:2015 dhe janë shtuar në draftin e standardit të ardhshëm të CISO C2X.
  • dhe janë realizuar funksione dhe makro për gjetjen e minimumit dhe maksimumit të numrave me presje floating me tipe float, long double, _FloatN dhe _FloatNx, të përshkruara në specifikimin IEEE 754-2019 dhe të shtuar në draftin e standardit të ardhshëm të CISO C2X: fmaximum, fmaximum_num, fmaximum_mag, fmaximum_mag_num, fminimum, fminimum_num, fminimum_mag, fminimum_mag_num.
  • janë shtuar konstantet për numrat me presje floating me saktësi të vetme: M_Ef, M_LOG2Ef, M_LOG10Ef, M_LN2f, M_LN10f, M_PIf, M_PI_2f, M_PI_4f, M_1_PIf, M_2_PIf, M_2_SQRTPIf, M_SQRT2f dhe M_SQRT1_2f.
  • Për funksionet exp10, në headerin janë shtuar makro përkatëse, të cilat nuk janë të lidhura me tipe të caktuara.
  • Në është shtuar makro _PRINTF_NAN_LEN_MAX, e propozuar në draftin e standardit ISO C2X.
  • Në funksionet e familjes printf janë shtuar specifikatorët e formatit «%b» dhe «%B» për shfaqjen e numrave të tërë në përfaqësimin binar.
  • Në sistemin e lidhjes dinamike është realizuar një algoritëm i ri i renditjes DSO, që përdor metodën e kërkimit në thellësi (DFS) për të zgjidhur problemet me performancën gjatë trajtimit të varësive të cikluara. Për të zgjedhur algoritmin e renditjes DSO, është propozuar parametrin glibc.rtld.dynamic_sort, të cilit mund t'i jepet vlera «1» për të rikthyer algoritmin e vjetër.
  • Në ABI është shtuar mbështetje për funksionin e ri '__memcmpeq', i cili përdoret nga kompilatorët për optimizimin e përdorimit të 'memcmp', në rast se vlera e kthyer nga ky funksion përdoret vetëm për të verifikuar statusin e përfundimit të operacionit.
  • Është shtuar mbështetje për regjistrimin automatik të flukseve, duke përdorur thirrjen sistemike rseq (sekuenca të rifillueshme) që ofrohet që nga bërthama Linux 4.18. Thirrja sistemike rseq lejon organizimin e ekzekutimit të pandërprerë të një grupi instruktoresh, të cilat nuk ndërpriten dhe konfirmojnë rezultatin e instrukcioneve të fundit në grup. Në thelb, ofrohet një mjet për ekzekutimin shumë të shpejtë të operacioneve, të cilat në rast ndërprerje nga një fluks tjetër pastrohen dhe përpilohet një përpjekje e re për ekzekutimin.
  • Është shtuar një lidhje simbolike /usr/bin/ld.so.
  • Është siguruar që ndërtimi i të gjitha skedarëve ekzekutivë të programeve të ndërtuara dhe setit të testeve të bëhet në modin PIE (ekzekutiv i pavarur nga pozita). Për të çaktivizuar këtë sjellje, është parashikuar opsioni ‘—disable-default-pie’.
  • Për Linux është shtuar konfigurimi glibc.malloc.hugetlb, i cili lejon kalimin e implementimit të malloc në përdorimin e thirrjes sistemike madvise me flamurin MADV_HUGEPAGE për mmap dhe sbrk ose përdorimin e drejtpërdrejtë të faqeve të mëdha të memories përmes nënshkrimit të flamurit MAP_HUGETLB në thirrjet mmap. Në rastin e parë mund të arrihet një rritje e performancës, nëse Faqet e Mëdha Transparente përdoren në modin madvise, ndërsa në rastin e dytë ofrohet mundësia e përdorimit të faqeve të mëdha të rezervuara nga sistemi (Huge Pages).
  • Është shtuar funksioni _dl_find_object, i cili mund të përdoret për të shtuar informacion rreth përmbysjes së stack-ut të thirrjeve (unwind).
  • Është shtuar mbështetje për arkitekturën OpenRISC (or1k-linux-gnu) në modin e përpunimit të operacioneve me pikë të lundrueshme (soft-float). Për funksionimin e portit janë të nevojshme binutils 2.35, GCC 11 dhe bërthama Linux 5.4.
  • Është shtuar flamuri i ndërtimit ‘—with-rtld-early-cflags’, me të cilin mund të tregoni flamuj të tjerë të kompilimit që përdoren gjatë ndërtimit të kodit fillestar për lidhjen dinamike.
  • Për platformën Linux është shtuar funksioni epoll_pwait2, i cili ndryshon nga epoll_wait duke specifikuar një kohë të largët me saktësi në nanosekonda.
  • Është shtuar funksioni posix_spawn_file_actions_addtcsetpgrp_np, i cili përjashton gjendjet e garës gjatë vendosjes së terminalit të menaxhimit për procesin e ri.
  • Për aplikacionet e kompiluar me Glibc dhe GCC 12+, është krijuar mënyra e mbrojtjes "_FORTIFY_SOURCE=3", e cila identifikon potencialet e mbushjes së tamponit gjatë ekzekutimit të funksioneve të vargut të përcaktuara në header-in string.h. Dallimi nga modalità "_FORTIFY_SOURCE=2" qëndron në kontrollet e shtesë, të cilat mund të çojnë në një rënie të performancës.
  • Përkrahja për zgjerimet Intel MPX (Memory Protection Extensions), të cilat përdoren për të verifikuar treguesit për respektimin e kufijve të hapësirave të memories, është ndërprerë (kjo teknologji nuk u përhap dhe është hequr nga GCC dhe LLVM).
  • Mekanizmi prelink dhe variablat e lidhura mjedisore LD_TRACE_PRELINKING dhe LD_USE_LOAD_BIAS shpallen të vjetra dhe do të hiqen në edicionin e ardhshëm.

    Janë eliminuar vulnerabilitetet:

    • CVE-2022-23218, CVE-2022-23219 — mbushje tamponi në funksionet svcunix_create dhe clnt_create, e shkaktuar nga kopjimi në stack i përmbajtjes të parametrave me emrin e skedarit pa kontrollin e madhësisë së të dhënave të kopjuara. Për aplikacionet e ndërtuara pa mbrojtje të stack-ut dhe që përdorin protokollin "unix", kërcënimi mund të çojë në ekzekutimin e kodit të autorëve të keq në përpunimin e emrave shumë të gjatë të skedarëve.
    • CVE-2021-3998 — një dobësi në funksionin realpath(), e shkaktuar nga kthimi në kushte të caktuara të një vlerë të pasaktë, që përmban të dhëna të mbetura të pastruar nga stack-u. Për programin SUID-root fusermount, mund të përdoret kjo dobësi për të marrë informacione të ndjeshme nga memoria e procesit, për shembull, informacione mbi treguesit.
    • CVE-2021-3999 — mbushje një-byte e tamponit në funksionin getcwd(). Problemi është shkaktuar nga një gabim që është i pranishëm që prej vitit 1995. Mjafton të bëhet një thirrje chdir() për katalogun "/" në një hapësirë emërtimi të montimëve për të shkaktuar mbushjen.

    Burimi: opennet.ru

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster