En sårbarhet i VFS til Linux-kjernen som lar deg eskalere privilegiene dine

En sårbarhet (CVE-2022-0185) er identifisert i Filesystem Context API levert av Linux-kjernen, som lar en lokal bruker få root-privilegier på systemet. Forskeren som identifiserte problemet publiserte en demonstrasjon av en utnyttelse som lar deg kjøre kode som root på Ubuntu 20.04 i standardkonfigurasjonen. Utnyttelseskoden er planlagt lagt ut på GitHub innen en uke etter at distribusjonene har gitt ut en oppdatering som fikser sårbarheten.

Sårbarheten eksisterer i funksjonen legacy_parse_param() i VFS og er forårsaket av en feil i å kontrollere maksimal størrelse på parametere som er oppgitt på filsystemer som ikke støtter Filesystem Context API. Passering av en parameter som er for stor kan føre til et overløp av heltallsvariabelen som brukes til å beregne størrelsen på dataene som skal skrives - koden har en bufferoverløpssjekk "if (len > PAGE_SIZE - 2 - størrelse)", som ikke gjør det arbeid hvis størrelsesverdien er større enn 4094. for heltallsoverløp gjennom den nedre grensen (heltallsunderflyt, når du kaster 4096 - 2 - 4095 til usignert int, er resultatet 2147483648).

Denne feilen tillater, når du får tilgang til et spesialdesignet filsystembilde, å forårsake bufferoverløp og overskrive kjernedata etter det tildelte minneområdet. For å utnytte sårbarheten må du ha CAP_SYS_ADMIN-rettigheter, dvs. administratorrettigheter. Problemet er at en uprivilegert bruker kan få slike tillatelser i en isolert beholder hvis systemet har støtte for brukernavneområder aktivert. For eksempel er brukernavneområder aktivert som standard på Ubuntu og Fedora, men ikke aktivert på Debian og RHEL (med mindre containerisolasjonsplattformer brukes).

Problemet har dukket opp siden Linux-kjernen 5.1 og ble løst i gårsdagens oppdateringer 5.16.2, 5.15.16, 5.10.93, 5.4.173. Pakkeoppdateringer som fikser sårbarheten er allerede utgitt for RHEL, Debian, Fedora og Ubuntu. Reparasjonen er ennå ikke tilgjengelig på Arch Linux, Gentoo, SUSE og openSUSE. Som en sikkerhetsløsning for systemer som ikke bruker beholderisolering, kan du sette sysctl "user.max_user_namespaces"-verdien til 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/ sysctl.d/userns.conf

Kilde: opennet.ru

Legg til en kommentar