Kwetsbaarheid in de io_uring subsystem, waardoor root-rechten verkregen kunnen worden

In de interface voor asynchrone invoer/uitvoer io_uring, aangeboden door de Linux-kernel, is een kwetsbaarheid (CVE-2024-0582) ontdekt die een niet-bevoorrechtte gebruiker in staat stelt root-rechten in het systeem te verkrijgen. Voor het exploiteren van de kwetsbaarheid is alleen reguliere lokale toegang tot het systeem vereist, zonder dat manipulatie met namespaces nodig is. Momenteel is er een werkende exploit openbaar beschikbaar, en een tweede techniek voor het exploiteren van de kwetsbaarheid is ook gedetailleerd beschreven.

De kwetsbaarheid wordt veroorzaakt door een verwijzing naar een al vrijgegeven geheugenblok (use-after-free) in de io_uring-subsysteem, dat optreedt bij het registreren en vrijgeven van een ringbuffer die met de vlag IORING_REGISTER_PBUF_RING is aangemaakt. In het geval van een toepassen van de mmap()-bewerking op de buffer, blijft deze gereflecteerd in de gebruikersruimte na het uitvoeren van de vrijgavactie (IORING_UNREGISTER_PBUF_RING). Door gebruik te maken van deze eigenschap kan een aanvaller gegevens lezen en schrijven naar geheugenpagina's die door de kernel-geheugensysteem worden teruggegeven.

Het probleem doet zich voor vanaf de release van kernel Linux 6.4 en is verholpen in de releases 6.7 en 6.6.5, evenals in het pakket met kernel 6.5.0-21, dat is voorbereid voor Ubuntu 22.04 en 23.10. Opvallend is dat het probleem in de hoofdkernel in december 2023 is verholpen, het Google Zero-project heeft het foutmelding die op de kwetsbaarheid wijst, op 8 januari vrijgegeven, en het pakket met de herstelde kernel 6.5 voor Ubuntu werd pas op 22 februari 2024 samengesteld. In andere distributies kan het herstel en de kwetsbaarheid worden gevolgd op de pagina's van: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.

De eerste exploit manipuleert het creƫren van een groot aantal door de aanvaller gecontroleerde geheugenpagina's om de geheugenschema in de kernel te bepalen en toegang te krijgen tot aangrenzende fysieke geheugenpagina's, waarbij gebruik wordt gemaakt van als bakens geconfigureerde structuren van netwerk-sockets. Voor het uitvoeren van de code in de exploit wordt een "gadget" (een serie instructies die in de kernel aanwezig zijn) gebruikt, die leidt tot de uitvoering van de functie call_usermodehelper_exec, bedoeld voor het starten van processen in de gebruikersruimte vanuit de kernel.

De tweede exploit is gebaseerd op het feit dat wanneer alle slab-blokken in de cache zijn uitgeput (bijvoorbeeld wanneer een bestand meerdere keren wordt geopend), de vrije geheugenpagina's waar de aanvaller toegang toe heeft, door het geheugenallocatiesysteem worden gebruikt om een nieuw slab-blok te creƫren, en alle nieuwe bestandsstructuren beginnen in dit blok te worden geplaatst. Dienovereenkomstig zullen bepaalde bestandsstructuren terechtkomen in de geheugenpagina's die door de aanvaller kunnen worden gelezen en geschreven. De exploitatie komt erop neer dat de juiste bestanden in de bestands-cache worden geplaatst en dat het veld f_mode in de bijbehorende bestandsstructuren, dat de toegangsrechten bepaalt, wordt vervangen, waardoor de toegang tot een essentieel systeembestand, zoals /etc/passwd, beschikbaar wordt voor schrijven.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster