Efter seks måneders udvikling udgivelse af systembibliotek (glibc) , der fuldt lever op til kravene i standarderne ISO C11 og POSIX.1-2017. Den nye udgave inkluderer rettelser fra 67 udviklere.
Implementeret i Glibc 2.32 Der er tilføjet makro _ISOC2X_SOURCE for at inkludere funktioner defineret i udkastet til den fremtidige ISO-standard
- Tilføjet support for Synopsys ARC HS (ARCv2 ISA) processorer. Porten kræver mindst binutils 2.32, gcc 8.3 og Linux-kernen 5.1. Tre varianter af ABI understøttes: arc-linux-gnu, arc-linux-gnuhf og arceb-linux-gnu (big-endian);
- Implementeret indlæsning af revisionsmoduler, der er angivet i sektionerne DT_AUDIT og
DT_DEPAUDIT i den udførbare fil. - For powerpc64le-arkitekturen er støtten til IEEE128 long double type implementeret, som aktiveres ved at bygge med indstillingen “-mabi=ieeolongdouble”.
- Nogle API'er er annoteret ved hjælp af GCC-attributten ‘access’, hvilket muliggør generering af højere kvalitet advarsler under kompilering i GCC 10 ved bestemmelse af mulige bufferoverløb og andre grænseoverskridende muligheder.
- For Linux-systemer er funktionerne pthread_attr_setsigmask_np og
pthread_attr_getsigmask_np implementeret, hvilket giver applikationen mulighed for at angive signalmasken for tråde, der oprettes med pthread_create. - Encodingdata, information om tegns typer og translitterations tabeller er blevet opdateret for at støtte Unicode-specifikationen 13.0.0;
- Tilføjet en ny headerfil , der definerer variablen __libc_single_threaded, som kan bruges i applikationer til enkelttrådet optimering.
- Tilføjet funktionerne sigabbrev_np og sigdescr_np, der returnerer den forkortede betegnelse og beskrivelse af et signal (f.eks. “HUP” og “Hangup” for SIGHUP).
- Tilføjet funktionerne strerrorname_np og strerrordesc_np, der returnerer navnet og beskrivelsen af en fejl (f.eks. “EINVAL” og “Ugyldigt argument” for EINVAL).
- For ARM64-platformen er flaget “—enable-standard-branch-protection” tilføjet (eller -mbranch-protection=standard i GCC), som aktiverer ARMv8.5-BTI (Branch Target Indicator) mekanismen for at beskytte udførelsen af instruktionssæt, som ikke skal have overgange ved forgrening. Blokering af overgange til vilkårlige kodeafsnit er implementeret for at modvirke oprettelsen af gadgets i exploits, der bruger Return-Oriented Programming (ROP — her forsøger den angribende ikke at placere sin egen kode i hukommelsen, men arbejder med allerede eksisterende biter af maskininstruktioner, der slutter med en retur kontrolinstruktion, hvorfra der bygges kæder af opkald for at opnå nødvendig funktionalitet).
- Der er foretaget en stor oprydning i forældede funktioner, herunder er mulighederne «—enable-obsolete-rpc» og «—enable-obsolete-nsl» samt header-filen fjernet. Funktionerne sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore og sigset, arrays sys_siglist, _sys_siglist og sys_sigabbrev, samt symbolerne sys_errlist, _sys_errlist, sys_nerr og _sys_nerr er blevet erklæret forældede. NSS-modulet hesiod.
- ldconfig er som standard blevet ændret til at bruge det nye format ld.so.cache, som har været understøttet i glibc i næsten 20 år.
- Sårbarheder udbedret:
- CVE-2016-10228 — en uendelig løkke i værktøjet iconv, der opstår, når det køres med indstillingen «-c» ved behandling af ugyldige multibyte-data.
- CVE-2020-10029 — stakskader ved opkald af trigonometriske funktioner med en pseudo-nul argument.
- CVE-2020-1752 — adgang til hukommelse efter den er blevet frigivet (use-after-free) i funktionen glob, ved udvidelse af referencer til hjemmekataloget («~user») i stier.
- CVE-2020-6096 — forkert behandling på ARMv7-platformen af negative værdier for parameteren i memcpy() og memmove(), der bestemmer størrelsen af det kopierede område. udførelse af kode ved behandling af på en særlig måde udformede data i funktionerne memcpy() og memmove(). Det er bemærkelsesværdigt, at problemet uoprettet i næsten to måneder efter offentliggørelsen af oplysningerne og fem måneder efter meddelelsen til udviklerne af Glibc.
Kilde: opennet.ru
