A Glibc 2.35 fejlesztésekkel, hibajavításokkal és még sok mással érkezik

Hat hónapos fejlesztés után bejelentették a Glibc 2.35 új verziójának megjelenését amiben 66 fejlesztő javításait tartalmazza és a végrehajtott fejlesztések közül azt tapasztalhatjuk, hogy hozzáadásra került a "C.UTF-8" területi beállítás, amely tartalmazza az összes Unicode kód leválogatását, de az ASCII tartományok használatára korlátozódik az fnmatch, regexec és regcomp függvényekben a mentéshez. tér.

A területi beállítás körülbelül 400 KB, amelyből 346 KB a Unicode LC_CTYPE adata, és külön kell telepíteni (nem beépítve a Glibc-be). A kódolási adatok, a karaktertípus-információk és az átírási táblázatok frissítésre kerültek, hogy támogassák a Unicode 14.0.0 specifikációt.

Egy másik kiemelkedő változás az Y olyan függvényeket és makrókat valósítson meg, amelyek az eredményt szűkebb típusra kerekítik, A függvények és makrók megvalósításán túlmenően az IEEE 754-2019 specifikációban leírt float, long double, _FloatN és _FloatNx típusú lebegőpontos számok minimális és maximumának megállapítása érdekében.

funkciókhoz exp10, a megfelelő makrók hozzáadódnak a fejlécfájlhoz, amelyek nincsenek meghatározott típusokhoz kötve, valamint a _PRINTF_NAN_LEN_MAX makró hozzáadva , amelyet az ISO C2X szabvány tervezetében javasoltak.

A dinamikus linkelési rendszer egy új osztályozási algoritmust valósít meg DSO mélységi kereséssel (DFS) a teljesítményproblémák megoldására a hurokfüggőségek kezelése során. A DSO rendezési algoritmus kiválasztásához a glibc.rtld.dynamic_sort paraméter javasolt, amely "1"-re állítható, hogy visszaálljon az előző algoritmushoz.

Amellett hozzáadva egy új „__memcmpeq” függvény támogatását az ABI-hoz, amelyet a fordítók a `memcmp' használatának optimalizálására használnak, amikor ennek a függvénynek a visszatérési értékét csak a művelet befejezési állapotának ellenőrzésére használják.

A az automatikus szálregisztráció támogatása a Linux kernel 4.18 óta biztosított rseq (újraindítható szekvenciák) rendszerhívás használatával. Az rseq rendszerhívás lehetővé teszi egy utasításcsoport folyamatos végrehajtásának megszervezését amely nem szakad meg és az eredményt a csoport utolsó utasításával köti le. Lényegében lehetőséget biztosít a műveletek nagyon gyors atomi végrehajtására, amelyeket, ha egy másik szál megszakít, megtisztítják és újra megpróbálják.

Másrészt nyújt az összes végrehajtható fájl alapértelmezett fordítása a beépített programok közül és egy tesztcsomag PIE (pozíciófüggetlen végrehajtható) módban.

Ennek a viselkedésnek a letiltásához a „–disable-default-pie” opció rendelkezésre áll, plusz Linux esetén hozzáadott egy glibc.malloc.hugetlb beállítást a malloc megvalósítás megváltoztatásához, hogy a madvise rendszerhívást használja a MADV_HUGEPAGE jelzővel az mmap és az sbrk számára, vagy közvetlenül használjon nagy memóriaoldalakat a MAP_HUGETLB jelző megadásával az mmap hívásokban.

Az első esetben az átlátszó Hatalmas oldalak madvise módban történő használatával lehet teljesítménynövekedést elérni, a második esetben pedig a rendszer által lefoglalt hatalmas oldalakat (Huge Pages).

Azt is meg kell jegyezni, hogy ebben az új verzióban néhány sebezhetőséget javítottak:

  • CVE-2022-23218, CVE-2022-23219: Puffertúlcsordulás az svcunix_create és clnt_create függvényben, amelyet egy fájlnév paraméter tartalmának a verembe másolása okoz a másolt adatok méretének ellenőrzése nélkül. A veremvédelem nélkül készült és "unix" protokollt használó alkalmazások esetében a biztonsági rés rosszindulatú kódfuttatáshoz vezethet nagyon hosszú fájlnevek feldolgozása során.
  • CVE-2021-3998: a realpath() függvény sérülékenysége, amelyet az okoz, hogy bizonyos körülmények között hibás értéket ad vissza, amely a veremből tisztítatlan maradék adatokat tartalmaz. A SUID-root fusermount program esetében a sérülékenység felhasználható érzékeny információk beszerzésére a folyamatmemóriából, például mutatóinformációk lekérésére.
  • CVE-2021-3999: egybájtos puffer túlcsordulás a getcwd() függvényben. A problémát egy 1995 óta fennálló hiba okozza. A túlcsordulás meghívásához egy külön beillesztési pont névtérben egyszerűen hívja meg a chdir()-t a "/" könyvtárban.

Végül Ha érdekel, hogy többet tudjon meg róla, a részleteket a következő link.


Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.