Ranjivosti u eBPF podsustavu Linux kernela

Identificirana je ranjivost (CVE-2021-29154) u eBPF podsustavu, koji vam omogućuje pokretanje rukovatelja za praćenje, analizu rada podsustava i upravljanje prometom, koji se izvršavaju unutar Linux kernela u posebnom virtualnom stroju s JIT-om, koji omogućuje lokalni korisnik kako bi postigao izvršenje svog koda na razini jezgre. Problem se pojavljuje do izdanja 5.11.12 (uključujući) i još nije riješen u distribucijama (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Popravak je dostupan kao zakrpa.

Prema istraživačima koji su identificirali ranjivost, uspjeli su razviti radni prototip exploit-a za 32- i 64-bitne x86 sustave, koji može koristiti neprivilegirani korisnik. Međutim, Red Hat napominje da ozbiljnost problema ovisi o tome je li 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 BPF JIT omogućen i korisnik ima CAP_SYS_ADMIN prava. Kao zaobilazno rješenje, preporučuje se onemogućiti BPF JIT pomoću naredbe: echo 0 > /proc/sys/net/core/bpf_jit_enable

Problem je uzrokovan pogreškom u izračunavanju pomaka za instrukcije grananja tijekom procesa generiranja strojnog koda JIT kompajlera. Konkretno, prilikom generiranja uputa za grananje, ne uzima se u obzir da se pomak može promijeniti nakon prolaska kroz fazu optimizacije. Ova se greška može koristiti za generiranje nepravilnog strojnog koda i njegovo izvršavanje na razini kernela.

Važno je napomenuti da ovo nije jedina ranjivost u podsustavu eBPF u posljednje vrijeme. Krajem ožujka identificirane su još dvije ranjivosti u kernelu (CVE-2020-27170, CVE-2020-27171), što je omogućilo korištenje eBPF-a za zaobilaženje zaštite od ranjivosti klase Spectre, koje omogućuju određivanje sadržaja memorije kernela kao rezultat stvaranja uvjeta za špekulativno izvođenje određenih operacija . Spectre napad zahtijeva prisutnost određenog niza naredbi u privilegiranom kodu koji dovodi do spekulativnog izvršavanja instrukcija. U eBPF-u je pronađeno nekoliko načina za generiranje takvih instrukcija kroz manipulacije s BPF programima koji se prenose na izvršenje.

Ranjivost CVE-2020-27170 uzrokovana je manipulacijom pokazivača u BPF verifikatoru koja uzrokuje spekulativne operacije za pristup području izvan granica međuspremnika. Ranjivost CVE-2020-27171 nastala je zbog pogreške integer underflow-a pri radu s pokazivačima, što dovodi do spekulativnog pristupa podacima izvan međuspremnika. Ovi problemi već su 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 distribucija Linuxa. Istraživači su pripremili prototip eksploatacije koji omogućuje neprivilegiranom korisniku izdvajanje podataka iz memorije kernela.

Izvor: opennet.ru

Dodajte komentar