Ranjivosti u eBPF podsistemu Linux kernela

Identifikovana je ranjivost (CVE-2021-29154) u eBPF podsistemu, koji vam omogućava da pokrenete rukovaoce za praćenje, analizu rada podsistema i upravljanje prometom, koji se izvršavaju unutar Linux kernela u posebnoj virtuelnoj mašini sa JIT-om, što omogućava lokalnog korisnika da postigne izvršenje svog koda na nivou kernela. Problem se pojavljuje do izdanja 5.11.12 (uključivo) i još uvijek nije riješen u distribucijama (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Ispravka je dostupna kao zakrpa.

Prema istraživačima koji su identifikovali ranjivost, uspeli su da razviju radni prototip eksploatacije za 32- i 64-bitne x86 sisteme, koji može da koristi neprivilegovani korisnik. Međutim, Red Hat napominje da ozbiljnost problema zavisi od toga da li je eBPF sistemski poziv dostupan korisniku. Na primjer, na RHEL-u i većini drugih Linux distribucija u zadanoj konfiguraciji, ranjivost se može iskoristiti ako je omogućen BPF JIT i korisnik ima CAP_SYS_ADMIN prava. Kao zaobilazno rešenje, preporučuje se da onemogućite BPF JIT koristeći naredbu: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problem je uzrokovan greškom u izračunavanju pomaka za instrukcije grananja tokom procesa generisanja mašinskog koda JIT kompajlera. Konkretno, kada se generiraju instrukcije grananja, ne uzima se u obzir da se pomak može promijeniti nakon prolaska kroz fazu optimizacije. Ovaj nedostatak se može koristiti za generiranje anomalnog strojnog koda i njegovo izvršavanje na nivou kernela.

Važno je napomenuti da ovo nije jedina ranjivost u eBPF podsistemu u posljednje vrijeme. Krajem marta identifikovane su još dve ranjivosti u kernelu (CVE-2020-27170, CVE-2020-27171), što je omogućilo korišćenje eBPF-a za zaobilaženje zaštite od ranjivosti klase Spectre, koje omogućavaju određivanje sadržaja memorije kernela. kao rezultat stvaranja uslova za špekulativno izvršenje određenih operacija . Spectre napad zahtijeva prisustvo određenog niza naredbi u privilegovanom kodu koji vodi spekulativnom izvršavanju instrukcija. U eBPF-u je pronađeno nekoliko načina za generiranje takvih instrukcija kroz manipulacije sa BPF programima koji se prenose na izvršenje.

CVE-2020-27170 ranjivost je uzrokovana manipulacijom pokazivača u BPF verifikatoru koja uzrokuje špekulativne operacije za pristup području izvan granica bafera. Ranjivost CVE-2020-27171 nastaje zbog greške u nedostatku cijelog broja pri radu sa pokazivačima, što dovodi do spekulativnog pristupa podacima izvan bafera. Ovi problemi su već riješeni u izdanjima kernela 5.11.8, 5.10.25, 5.4.107, 4.19.182 i 4.14.227, a također su uključeni u ažuriranja kernela za većinu Linux distribucija. Istraživači su pripremili prototip eksploatacije koji omogućava neprivilegovanom korisniku da izvuče podatke iz memorije kernela.

izvor: opennet.ru

Dodajte komentar