Sårbarhed i io_uring subsystemet, der giver root-rettigheder

I interface til asynkron input/output io_uring, der leveres af Linux-kernen, er der opdaget en sårbarhed (CVE-2024-0582), der gør det muligt for en ikke-privilegeret bruger at opnå root-rettigheder i systemet. For at udnytte sårbarheden kræves der blot almindelig lokal adgang til systemet uden behov for at manipulere med navneområder. Der er i øjeblikket offentliggjort en fungerende exploit, og der er desuden beskrevet en anden udnyttelsesteknik for sårbarheden.

Sårbarheden skyldes adgang til et allerede frigivet hukommelsesområde (use-after-free) i io_uring-subsystemet, der opstår under registreringen og frigivelsen af en ringbuffer oprettet med flaget IORING_REGISTER_PBUF_RING. I tilfælde af at operationen mmap() anvendes på bufferen, forbliver den afspejlet i brugerens rum efter udførelsen af frigivelsesoperationen (IORING_UNREGISTER_PBUF_RING). Ved at udnytte denne egenskab kan en angriber læse og skrive data til hukommelsessider, der returneres af kernen's hukommelsesallokeringssystem.

Problemet manifesterer sig fra udgivelsen af Linux-kernen 6.4 og er blevet løst i versionerne 6.7 og 6.6.5, samt i pakken med kernen 6.5.0-21, der er forberedt til Ubuntu 22.04 og 23.10. Det er bemærkelsesværdigt, at problemet i hovedkernen blev rettet i december 2023, Google Zero-projektet åbnede for adgangen til en fejlmeddelelse, der signalerer sårbarheden den 8. januar, og pakken med den rettede kerne 6.5 til Ubuntu blev først dannet den 22. februar 2024. I andre distributioner kan man følge reparationen og sårbarhedens udbredelse på siderne: Debian, Gentoo, RHEL, SUSE, Fedora, Arch.

Den første exploit manipulerer oprettelsen af et stort antal hukommelsessider, der kontrolleres af angriberen, for at bestemme hukommelseslayoutet i kernen og få adgang til tilstødende fysiske hukommelsessider ved at bruge indholdet af pågældende strukturer af netværkssokler som trækkere. For at køre kode i exploit'en anvendes en "gadget" (en sekvens af allerede eksisterende instruktioner i kernen), der fører til udførelsen af funktionen call_usermodehelper_exec, der er beregnet til at starte processer i brugerens rum fra kernen.

Den anden eksploitering er baseret på, at når alle slab-blokke i cachen er opbrugt (for eksempel ved gentagen åbning af en fil), anvender systemet for hukommelsesfordeling ledige hukommelsessider, som angriberen stadig har adgang til, til at oprette en ny slab-blok, hvori alle nye filstrukturer begynder at blive placeret. Som følge heraf vil nogle filstrukturer ende i hukommelsessider, som angriberen kan læse og skrive til. Udnyttelsen reduceres til at organisere, at den ønskede fil går ind i filcachen og ændre feltet f_mode i de relaterede filstrukturer, der bestemmer adgangsrettighederne, hvilket gør det muligt at give skrivbar adgang til den ønskede systemfil, for eksempel /etc/passwd.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster