A Glibc 2.41 rendszerkönyvtár kiadása

Hat hónapnyi fejlesztés után megjelent a GNU C Library (glibc) 2.41 rendszertámogató könyvtárának kiadása, amely teljes mértékben megfelel az ISO C11 és POSIX.1-2017 szabványok követelményeinek. Az új kiadás elkészítésében 79 fejlesztő vett részt.

A Glibc 2.41-ben megvalósított fejlesztések közül érdemes kiemelni:

  • A Linux platformra új sched_setattr és sched_getattr funkciók kerültek bevezetésre, amelyek lehetővé teszik a feladatütemező paramétereinek beállítását/olvasását. A gyakorlatban ezek a funkciók lehetővé teszik az olyan ütemezési politikák konfigurálását, mint a SCHED_DEADLINE, amelyek további paramétereket használnak a prioritás mellett.
  • Az iconv segédprogramhoz hozzáadva az in-place kódolás támogatása (ha a bemeneti és kimeneti fájl neve megegyezik, az iconv mostantól automatikusan létrehoz egy ideiglenes fájlt, és a konverzió befejezése után ezzel helyettesíti az eredeti fájlt).
  • A math.h fejlécfájlhoz három új trigonometrikus függvény került bevezetésre, amelyek a C23 szabványban jelentek meg (TS 18661-4:2015): acospi, asinpi, atan2pi, atanpi, cospi, sinpi és tanpi.
  • A CORE-MATH projektről átkerültek az optimalizált és helyes kerekítésű változatok a következő függvényekhez: exp10m1f, exp2m1f, expm1f, log10f, log2p1f, log1pf, log10p1f, cbrtf, erff, erfcf, lgammaf, tgammaf, tanf, acosf, acoshf, asinf, asinhf, atanf, atan2f, atanhf, coshf, sinhf és tanhf.
  • Hozzáadva az ARM64 GCS (Guarded Control Stack) kiterjesztés támogatása, amely hardveres védelmet nyújt a visszatérési címek védelmére a funkciókból és blokkolja az exploitokat, amelyek visszatérési orientált programozási (ROP — Return-Oriented Programming, az exploitja már meglévő gépi utasítások darabjaiból készül, amelyek visszatérési utasítással zárulnak) módszereket használnak. Az ARM64 GCS lehetővé teszi a felhasználói térben működő folyamatok védelmét a shadow stack technika által — a függvényhívás után a visszatérési címet a processzor nemcsak a normál veremben, hanem egy külön shadow stack-en is tárolja, amelyet közvetlenül nem lehet módosítani. A függvényből való kilépés előtt a visszatérési cím kihúzásra kerül a shadow stack-ből és összehasonlításra kerül a fő veremből származó visszatérési címmel. A GCS támogatásával rendelkező Glibc összegyűjtéséhez minimum 2.44-es verziójú binutils és 15-ös verziójú GCC szükséges.
  • Jelentős munkát végeztek a kódgenerálás javítása és a matematikai függvények teljesítményének növelése érdekében az ARM64/AArch64 architektúrákon. Az optimalizálások vektoros utasítások (SVE, Skálázható Vektoros Kiterjesztés) és SIMD kiterjesztések (Neon) felhasználásával lettek megvalósítva.
  • ARM64/AArch64 processzoros rendszerekhez hozzáadták a Memória Védelmi Kulcsok (Memory Protection Keys) mechanizmusának támogatását, amely a memóriaoldalakhoz való hozzáférés korlátozására szolgál anélkül, hogy módosítani kellene a memóriaoldal táblázatot.
  • PowerPC64 processzoros rendszerekhez hozzáadták a kibővített utasítások támogatását a visszafelé orientált programozás (return-oriented programming) védelme érdekében az exploitokban.
  • Új architektúratípus került bevezetésre az arch_kind_hygon néven a kínai x86-64 Hygon processzorok számára, amelyek az AMD technológiák alapján készültek.
  • Jelentősen kibővítették a glibc tesztelési készletét, amelynek tesztjeinek száma a korábbi kiadáshoz képest 5408-ról 6232-re nőtt.
  • Hozzáadták a glibc fordításának tesztelésének lehetőségét C és C++ fordítókkal, amelyek eltérnek az aktuális fordítástól. Például: ‘configure TEST_CC=»gcc-6.4.1″ TEST_CXX=»g++-6.4.1″‘ és ‘configure TEST_CC=»clang» TEST_CXX=»clang++»‘.
  • A /etc/resolv.conf fájlban és az RES_OPTIONS környezeti változóban megadott opciókhoz hozzáadták a „-” prefix használatának lehetőségét, hogy törölhessük a korábban megadott, az adott névvel rendelkező opciót. Például, ha a /etc/resolv.conf fájlban „options no-aaaa” van megadva, akkor a „RES_OPTIONS=-no-aaaa” környezeti változóval rendelkező folyamat indításakor eltörlik az AAAA rekordok lekérdezésére vonatkozó DNS-kérdés tilalmát.
  • A DNS-eredményfeldolgozóhoz hozzáadták a „strict-error” opció támogatását, amelynél a getaddrinfo() funkció, ha a cím típusa (AF_UNSPEC) nincs egyértelműen megadva, megpróbálja megszerezni az A (IPv4) és AAAA (IPv6) rekordok értékeit egy másik DNS-szervertől, ha az első DNS-szerverhez írt A vagy AAAA rekord kérdés hibával végződik. A „strict-error” megadása nélkül ilyen helyzetben a sikeresen feldolgozott kérés eredményeként kapott címet adja vissza, míg a sikertelen kérés értékét figyelmen kívül hagyja. Például, ha szerver visszaadja az „A” rekordot, de hiba lép fel az „AAAA” rekord kérdésében, a getaddrinfo „strict-error” opció nélkül azonnal csak az IPv4 címet adja vissza, míg a „strict-error” opcióval megpróbálja a lekérdezéseket egy másik DNS-szerverhez ismételni.
  • A kódolások adatai, a karaktertípusok információi és a transliterációs táblázatok frissítve lettek a Unicode 16.0.0 specifikáció támogatására.
  • Hozzáadva az „_ISOC2Y_SOURCE” makró, amely lehetővé teszi a C2Y szabvány tervezetében meghatározott funkciók aktiválását. Az ilyen funkciókat a _GNU_SOURCE makróval és a fordító zászlóival is aktiválhatjuk („gcc -std=gnu2y”).
  • Megvalósítva a benchtest eszközkészlet a különböző funkciók (általában matematikai) teljesítményének nyomon követésére.
  • Hozzáadva a glibc.rtld.execstack beállítás, amely lehetővé teszi a végrehajtható verem használatának kifejezett letiltását.
  • Hozzáadva a bővíthető ABI rseq (újraindítható sorozatok) támogatása, amely gyors atomikus műveletek végrehajtására szolgáló mechanizmust biztosít (ha a műveletet egy másik szál megszakítja, az állapot visszaáll, és újra próbálkozik a végrehajtással). Az új verzióban lehetőség van a rseq által nyújtott kibővített funkciók használatára, amelyek hiányoznak az eredeti ABI-ből, mint például a párhuzamos végrehajtási azonosítók (mm_cid, memory-map concurrency ID) és a NUMA csomópont azonosítók (node_id).
  • Megszüntették a big-endian ARC rendszerek portjának támogatását (arceb-linux-gnu).
  • Elhárítva a (CVE-2025-039) sebezhetőséget, amely puffer túlcsorduláshoz vezet az assert() függvény végrehajtása során. A túlcsordulás akkor következik be, ha túl hosszú programnevet adunk meg (argv[0]). A probléma nem tekinthető veszélyesnek, mivel a pufferen kívülre 4 bájt kerül, amelynek tartalmát a támadó nem tudja kontrolálni. Érdekes az is, hogy a hibás alkalmazásnév kiírásából származó sebezhetőség a hibakeresési funkciókban jelent meg.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster