Sårbarheter i eBPF-undersystemet til Linux-kjernen

En sårbarhet (CVE-2021-29154) ble identifisert i eBPF-undersystemet, som lar deg kjøre behandlere for sporing, analysere driften av undersystemer og administrere trafikk, utført inne i Linux-kjernen i en spesiell virtuell maskin med JIT, som tillater en lokal bruker for å oppnå kjøring av koden deres på kjernenivå. Problemet dukker opp frem til utgivelsen av 5.11.12 (inkludert) og har ennå ikke blitt fikset i distribusjoner (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Reparasjonen er tilgjengelig som en oppdatering.

Ifølge forskerne som identifiserte sårbarheten, var de i stand til å utvikle en fungerende prototype av utnyttelsen for 32- og 64-bits x86-systemer, som kan brukes av en uprivilegert bruker. Red Hat bemerker imidlertid at alvorlighetsgraden av problemet avhenger av om eBPF-systemanropet er tilgjengelig for brukeren. For eksempel, på RHEL og de fleste andre Linux-distribusjoner i standardkonfigurasjonen, kan sårbarheten utnyttes hvis BPF JIT er aktivert og brukeren har CAP_SYS_ADMIN-rettigheter. Som en løsning anbefales det å deaktivere BPF JIT ved å bruke kommandoen: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problemet er forårsaket av en feil i beregning av offset for greninstruksjoner under maskinkodegenereringsprosessen til JIT-kompilatoren. Spesielt når den genererer greninstruksjoner, tar den ikke hensyn til at forskyvningen kan endres etter å ha passert gjennom optimaliseringsstadiet. Denne feilen kan brukes til å generere unormal maskinkode og kjøre den på kjernenivå.

Det er bemerkelsesverdig at dette ikke er den eneste sårbarheten i eBPF-delsystemet nylig. I slutten av mars ble ytterligere to sårbarheter identifisert i kjernen (CVE-2020-27170, CVE-2020-27171), noe som gjør det mulig å bruke eBPF for å omgå beskyttelse mot Spectre-klassens sårbarheter, som gjør det mulig å bestemme innholdet i kjerneminnet som et resultat av å skape forhold for spekulativ utførelse av visse operasjoner. Spectre-angrepet krever tilstedeværelse av en viss sekvens av kommandoer i privilegert kode som fører til spekulativ utførelse av instruksjoner. I eBPF er det funnet flere måter å generere slike instruksjoner på gjennom manipulasjoner med BPF-programmer overført for kjøring.

CVE-2020-27170-sårbarheten er forårsaket av pekermanipulasjon i BPF-verifikatoren som forårsaker spekulative operasjoner for å få tilgang til et område utenfor buffergrensene. Sårbarheten CVE-2020-27171 skyldes en heltallsfeil under flyt ved arbeid med pekere, noe som fører til spekulativ tilgang til data utenfor bufferen. Disse problemene er allerede løst i kjerneutgivelser 5.11.8, 5.10.25, 5.4.107, 4.19.182 og 4.14.227, og har også blitt inkludert i kjerneoppdateringer for de fleste Linux-distribusjoner. Forskere har utarbeidet en prototypeutnyttelse som lar en uprivilegert bruker trekke ut data fra kjerneminnet.

Kilde: opennet.ru

Legg til en kommentar