Na zes maanden ontwikkeling release van de systeembibliotheek (glibc) , die volledig voldoet aan de eisen van de ISO C11 en POSIX.1-2017 standaarden. De nieuwe release bevat correcties van 67 ontwikkelaars.
In Glibc 2.32 geïmplementeerde kunnen worden opgemerkt:
- Ondersteuning voor Synopsys ARC HS (ARCv2 ISA) processoren is toegevoegd. Voor de port is minimaal binutils 2.32, gcc 8.3 en Linux kernel 5.1 vereist. Drie versies van ABI worden ondersteund: arc-linux-gnu, arc-linux-gnuhf en arceb-linux-gnu (big-endian);
- De mogelijkheid om auditmodules te laden, aangegeven in de secties DT_AUDIT en
DT_DEPAUDIT van het uitvoerbare bestand, is geïmplementeerd. - Ondersteuning voor het type IEEE128 long double is geïmplementeerd voor de powerpc64le architectuur, in te schakelen bij compilatie met de optie "-mabi=ieeolongdouble".
- Sommige API's zijn gelabeld met behulp van de GCC-attribuut ‘access’, waarmee bij compilatie in GCC 10 kwalitatief betere waarschuwingen kunnen worden gegenereerd bij het vaststellen van mogelijke bufferoverlopen en andere vormen van overschrijding.
- Voor Linux-systemen zijn de functies pthread_attr_setsigmask_np en
pthread_attr_getsigmask_np geïmplementeerd, waarmee de applicatie een signaalmasker voor threads kan opgeven die zijn gemaakt met pthread_create. - Gegevens van coderingen, informatie over tekens en transliteratietabellen zijn bijgewerkt ter ondersteuning van de Unicode 13.0.0 specificatie;
- Een nieuwe headerbestand <sys/single_threaded.h> is toegevoegd, die de variabele __libc_single_threaded definieert, die in applicaties kan worden gebruikt voor eenpit-optimisaties.
- De functies sigabbrev_np en sigdescr_np zijn toegevoegd, die de verkorte naam en beschrijving van een signaal retourneren (bijvoorbeeld 'HUP' en 'Hangup' voor SIGHUP).
- De functies strerrorname_np en strerrordesc_np zijn toegevoegd, die de naam en beschrijving van een fout retourneren (bijvoorbeeld 'EINVAL' en 'Ongeldig argument' voor EINVAL).
- Voor het ARM64-platform is de vlag "--enable-standard-branch-protection" (of -mbranch-protection=standard in GCC) toegevoegd, die het ARMv8.5-BTI (Branch Target Indicator) mechanisme activeert om de uitvoering van instructiesets te beschermen, waar geen sprongen uitgevoerd moeten worden bij vertakking. Het blokkeren van sprongen naar willekeurige codegebieden is geïmplementeerd om de creatie van gadgets in exploits tegen te gaan, die gebruik maken van technieken van Return-Oriented Programming (ROP — Return-Oriented Programming), waarbij de aanvaller zijn eigen code niet in het geheugen probeert te plaatsen, maar gebruikmaakt van reeds bestaande stukjes machinetaal die eindigen met een terugkeer-instructie, waaruit een oproepketen wordt opgebouwd voor de gewenste functionaliteit.
- Er is een grote schoonmaak uitgevoerd van verouderde functies, waaronder de opties "--enable-obsolete-rpc" en "--enable-obsolete-nsl", en de header file <sys/sysctl.h>. Functies zoals sstk, siginterrupt, sigpause, sighold, sigrelse, sigignore en sigset, evenals de arrays sys_siglist, _sys_siglist en sys_sigabbrev, en de symbolen sys_errlist, _sys_errlist, sys_nerr en _sys_nerr zijn als verouderd gemarkeerd, evenals de NSS-module hesiod.
- ldconfig is standaard overgeschakeld naar het nieuwe formaat ld.so.cache, dat al bijna 20 jaar wordt ondersteund in glibc.
- Kwetsbaarheden opgelost:
- CVE-2016-10228 — een oneindige lus in de iconv-tool, die zich voordoet wanneer deze met de optie "-c" wordt uitgevoerd, bij het verwerken van ongeldige multibyte-gegevens.
- CVE-2020-10029 — stackbeschadiging bij het aanroepen van trigonometrische functies met een pseudo-nul argument.
- CVE-2020-1752 — toegang tot een geheugengebied na vrijgave (use-after-free) in de glob-functie bij het uitbreiden van een verwijzing naar de thuisdirectory ("~user") in paden.
- CVE-2020-6096 — onjuiste verwerking op het ARMv7-platform van negatieve waarden van de parameter in memcpy() en memmove(), die de grootte van het te kopiëren gebied bepalen. de uitvoering van code te organiseren bij de verwerking in de functies memcpy() en memmove() van op een bepaalde manier opgemaakte gegevens. Het is opmerkelijk dat het probleem GPL-code uit Telegram is door de messenger Mail.ru overgenomen zonder naleving van de GPL.
Bron: opennet.ru
