Glibc 2.35 vjen me përmirësime, rregullime të gabimeve dhe më shumë

Pas gjashtë muajsh zhvillimi u njoftua publikimi i versionit të ri të Glibc 2.35 në të cilën përfshin rregullime nga 66 zhvillues dhe nga përmirësimet e zbatuara mund të gjejmë se u shtua mbështetje për vendndodhjen "C.UTF-8", e cila përfshin grupime për të gjitha kodet e Unicode, por kufizohet në përdorimin e rangjeve ASCII në funksionet fnmatch, regexec dhe regcomp për të ruajtur. hapësirë.

Vendndodhja është afërsisht 400 KB, nga të cilat 346 KB janë të dhëna LC_CTYPE për Unicode dhe duhet të instalohen veçmas (jo e integruar në Glibc). Të dhënat e kodimit, informacionet e tipit të karaktereve dhe tabelat e transliterimit janë përditësuar për të mbështetur specifikimin Unicode 14.0.0.

Një ndryshim tjetër që bie në sy është se dhe të zbatojë funksione dhe makro që rrumbullakosin rezultatin në një lloj më të ngushtë, Përveç zbatimit të funksioneve dhe makrove për të gjetur minimumin dhe maksimumin e numrave me pikë lundruese të llojeve float, long double, _FloatN dhe _FloatNx, të përshkruara në specifikimin IEEE 754-2019.

për funksionet exp10, makrot përkatëse i shtohen skedarit të kokës, të cilat nuk janë të lidhura me lloje të veçanta, plus makro _PRINTF_NAN_LEN_MAX u shtua në , propozuar në draft standardin ISO C2X.

Sistemi i lidhjes dinamike zbaton një algoritëm të ri klasifikimi OSSH duke përdorur kërkimin në thellësi (DFS) për të adresuar çështjet e performancës gjatë trajtimit të varësive të ciklit. Për të zgjedhur algoritmin e renditjes së DSO, propozohet parametri glibc.rtld.dynamic_sort, i cili mund të vendoset në "1" për t'u kthyer në algoritmin e mëparshëm.

Përveç kësaj shtoi mbështetje për një funksion të ri '__memcmpeq' në ABI, i cili përdoret nga përpiluesit për të optimizuar përdorimin e "memcmp" kur vlera e kthimit të këtij funksioni përdoret vetëm për të kontrolluar statusin e përfundimit të një operacioni.

E mbështetje për regjistrimin automatik të fijeve duke përdorur thirrjen e sistemit rseq (sekuenca të rifillueshme) të ofruar që nga kernel Linux 4.18. Thirrja e sistemit rseq lejon organizimin e ekzekutimit të vazhdueshëm të një grupi instruksionesh i cili nuk ndërpritet dhe kryen rezultatin me deklaratën e fundit në grup. Në thelb, ai ofron një lehtësi për ekzekutimin atomik shumë të shpejtë të operacioneve të cilat, nëse ndërpriten nga një fije tjetër, pastrohen dhe riprovohen.

Nga ana tjetër, ofron kompilimi i parazgjedhur i të gjithë skedarëve të ekzekutueshëm i programeve të integruara dhe një grup testimi në modalitetin PIE (ekzekutues i pavarur nga pozicioni).

Për të çaktivizuar këtë sjellje, ofrohet opsioni “–disable-default-pie”., plus për Linux, shtoi një cilësim glibc.malloc.hugetlb për të ndryshuar zbatimin e malloc për të përdorur thirrjen e sistemit madvise me flamurin MADV_HUGEPAGE për mmap dhe sbrk, ose për të përdorur drejtpërdrejt faqe memorie të mëdha duke specifikuar flamurin MAP_HUGETLB në thirrjet mmap.

Në rastin e parë, një rritje e performancës mund të arrihet duke përdorur faqet e mëdha transparente në modalitetin madvise, dhe në rastin e dytë, mund të përdorni faqe të mëdha të rezervuara nga sistemi (Huge Pages).

Duhet të theksohet gjithashtu se disa dobësi u rregulluan në këtë version të ri:

  • CVE-2022-23218, CVE-2022-23219: Një tejmbushje buffer në funksionet svcunix_create dhe clnt_create e shkaktuar nga kopjimi i përmbajtjes së një parametri të emrit të skedarit në pirg pa kontrolluar madhësinë e të dhënave të kopjuara. Për aplikacionet e ndërtuara pa mbrojtje nga steka dhe duke përdorur protokollin "unix", dobësia mund të çojë në ekzekutimin e kodit me qëllim të keq kur përpunohen emra skedarësh shumë të gjatë.
  • CVE-2021-3998: një cenueshmëri në funksionin realpath() të shkaktuar nga kthimi i një vlere të pasaktë në kushte të caktuara që përmbajnë të dhëna të mbetura të papastra nga stack. Për programin SUID-root fusermount, cenueshmëria mund të përdoret për të marrë informacion të ndjeshëm nga memoria e procesit, për shembull, për të marrë informacionin e treguesit.
  • CVE-2021-3999: tejmbushja e tamponit me një bajt në funksionin getcwd(). Problemi është shkaktuar nga një gabim që ekziston që nga viti 1995. Për të thirrur një tejmbushje, në një hapësirë ​​emri të veçantë të pikës së montimit, thjesht thirrni chdir() në drejtorinë "/".

Më në fund Nëse jeni të interesuar të dini më shumë për këtë, ju mund të kontrolloni detajet në lidhja vijuese.


Lini komentin tuaj

Adresa juaj e emailit nuk do të publikohet. Fusha e kërkuar janë shënuar me *

*

*

  1. Përgjegjës për të dhënat: Miguel Ángel Gatón
  2. Qëllimi i të dhënave: Kontrolloni SPAM, menaxhimin e komenteve.
  3. Legjitimimi: Pëlqimi juaj
  4. Komunikimi i të dhënave: Të dhënat nuk do t'u komunikohen palëve të treta përveç me detyrim ligjor.
  5. Ruajtja e të dhënave: Baza e të dhënave e organizuar nga Occentus Networks (BE)
  6. Të drejtat: Në çdo kohë mund të kufizoni, rikuperoni dhe fshini informacionin tuaj.