Hat hónapnyi fejlesztés után a rendszerkönyvtár kiadása (glibc) , amely teljes mértékben megfelel az ISO C11 és POSIX.1-2017 szabványok követelményeinek. Az új kiadásban 67 fejlesztő által végzett javítások találhatók.
A Glibc 2.32-ben megvalósított funkciók közül kiemelhető:
- Hozzáadva a Synopsys ARC HS (ARCv2 ISA) processzorok támogatása. A port működéséhez legalább binutils 2.32, gcc 8.3 és Linux 5.1 kernel szükséges. Három ABI változat támogatott: arc-linux-gnu, arc-linux-gnuhf és arceb-linux-gnu (big-endian);
- Megvalósult az audit modulok betöltése, amelyeket a DT_AUDIT és
DT_DEPAUDIT szekciók jelölnek ki a végrehajtható fájlban. - A powerpc64le architektúra számára megvalósult az IEEE128 long double típus támogatása, amely a „-mabi=ieeolongdouble” opcióval történő fordítással kapcsolható be.
- Néhány API annotálva lett a GCC-‘access’ attribútum használatával, amely lehetővé teszi, hogy a GCC 10 fordításakor jobb minőségű figyelmeztetéseket generáljanak a lehetséges puffer túlcsordulások és más határon túli esetek meghatározásához.
- Linux rendszerekhez megvalósításra került a pthread_attr_setsigmask_np és
pthread_attr_getsigmask_np funkció, ami lehetővé teszi az alkalmazás számára, hogy jelek maszkolásának megadását kérje a pthread_create segítségével létrehozott szálakhoz. - A kódolási adatok, karaktertípus információk és transliterációs táblák frissítve lettek az Unicode 13.0.0 specifikáció támogatása érdekében;
- Új fejlécfájl került hozzáadásra <sys/single_threaded.h>, amely definiálja a __libc_single_threaded változót, amely alkalmazásokban használható a szálmentes optimalizálásokhoz.
- Hozzáadva a sigabbrev_np és sigdescr_np funkciók, amelyek a jel rövid nevét és leírását adják vissza (például: 'HUP' és 'Hangup' a SIGHUP esetén).
- Hozzáadva a strerrorname_np és strerrordesc_np funkciók, amelyek a hiba nevét és leírását adják vissza (például: 'EINVAL' és 'Érvénytelen argumentum' az EINVAL esetén).
- ARM64 platformon bevezetésre került a "--enable-standard-branch-protection" (vagy -mbranch-protection=standard GCC-ben) zászló, amely az ARMv8.5-BTI (Branch Target Indicator) mechanizmust aktiválja az utasításkészletek végrehajtásának védelme érdekében, amelyekre nem szabad ugrásoknak történnie a feltételes ugrások során. Az ugrások blokkolása tetszőleges kódterületekre a visszatéréseket célzó programozás (ROP — Return-Oriented Programming) által alkalmazott gúnyolásainak megakadályozása érdekében lett megvalósítva, ahol a támadó nem próbálja meg saját kódját a memóriába helyezni, hanem már meglévő gépi utasítások darabjaival dolgozik, amelyek egy visszahívási utasítással végződnek, így láncokat képezve a szükséges funkcionalitás megszerzésére.
- Több elavult funkciót töröltek, beleértve a "--enable-obsolete-rpc" és a "--enable-obsolete-nsl" opciókat, valamint a fejlécfájlt. Elavultnak nyilvánították a sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore és sigset függvényeket, a sys_siglist, _sys_siglist és sys_sigabbrev tömböket, továbbá a sys_errlist, _sys_errlist, sys_nerr és _sys_nerr szimbólumokat, valamint a NSS-modult, a hesiod-ot.
- Az ldconfig alapértelmezés szerint áttért az új ld.so.cache formátumra, amelyet a glibc már majdnem 20 éve támogat.
- Sebezhetőségek kiküszöbölve:
- CVE-2016-10228 — ciklus a iconv segédprogramban, amely a "-c" opcióval történő indításkor lép fel, ha érvénytelen többbájtos adatokat dolgoz fel.
- CVE-2020-10029 — verem megsérülése a trigonometrikus függvények hívásakor álnullás argumentummal.
- CVE-2020-1752 — memória területre való hivatkozás az felszabadítása után (use-after-free) a glob függvényben a felhasználói könyvtárra hivatkozó "~user" kibővítésekor.
- CVE-2020-6096 — helytelen paraméterek kezelése ARMv7 platformon a memcpy() és memmove() függvényben, amelyek meghatározzák a másolandó terület méretét. a kód végrehajtásának szervezését a memcpy() és memmove() függvényekben meghatározott módon formázott adatok feldolgozása során. Érdekes, hogy a probléma megoldatlan a nyilvános felfedés pillanatától számítva, és öt hónappal a Glibc fejlesztőinek értesítése után.
Forrás: opennet.ru
