In de API Filesystem Context, geleverd door de Linux-kern, is een kwetsbaarheid (CVE-2022-0185) ontdekt die een lokale gebruiker in staat stelt rootrechten op het systeem te verkrijgen. De onderzoeker die het probleem ontdekte, heeft een demonstratie gepost van een exploit die het mogelijk maakt om code met rootrechten uit te voeren in Ubuntu 20.04 met de standaardconfiguratie. De code van de exploit zal over een week op GitHub worden geplaatst, nadat de distributies een update hebben uitgebracht met een patch voor de kwetsbaarheid.
De kwetsbaarheid is aanwezig in de functie legacy_parse_param() in VFS en wordt veroorzaakt door het ontbreken van correcte controle op de maximale grootte van parameters die worden geleverd in bestandssystemen die de API Filesystem Context niet ondersteunen. Bij het overdragen van een te grote parameter kan een integer overflow optreden in de variabele die wordt gebruikt om de grootte van de te schrijven gegevens te berekenen — in de code is er een controle op buffer overflow ‘if (len > PAGE_SIZE - 2 - size)’, die niet wordt geactiveerd als de waarde van size groter is dan 4094 als gevolg van een integer overflow door een ondergrens (integer underflow, bij het omzetten van 4096 - 2 - 4095 naar unsigned int krijg je 2147483648).
De genoemde fout stelt een aanvaller in staat om een buffer overflow te veroorzaken bij toegang tot een speciaal opgemaakt fs-image en gegevens van de kernel die na het toegewezen geheugen komen, te overschrijven. Voor het exploitatie van de kwetsbaarheid zijn CAP_SYS_ADMIN-rechten vereist, d.w.z. administratieve bevoegdheden. Het probleem is dat een dergelijke bevoegdheid door een niet-privileged gebruiker kan worden verkregen in een geïsoleerde container, als de ondersteuning voor gebruikersnaamruimten (user namespaces) in het systeem is ingeschakeld. Bijvoorbeeld, user namespaces zijn standaard ingeschakeld in Ubuntu en Fedora, maar niet geactiveerd in Debian en RHEL (tenzij containerisolerende platforms worden gebruikt).
Het probleem doet zich voor sinds Linux-kern 5.1 en is verholpen met de updates van gisteren 5.16.2, 5.15.16, 5.10.93, 5.4.173. Pakketupdates met de patch voor de kwetsbaarheid zijn al uitgebracht voor RHEL, Debian, Fedora, Ubuntu. De patch is nog niet beschikbaar in Arch Linux, Gentoo, SUSE en openSUSE. Als tijdelijke oplossing voor systemen die geen containerisolatie gebruiken, kan de waarde van sysctl ‘user.max_user_namespaces’ op 0 worden gezet: echo ‘user.max_user_namespaces=0’ > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf
Bron: opennet.ru
