Ranljivosti u eBPF podsustavu koje omogućuju izvršavanje koda na razini Linux jezgre

Otkrivene su dvije nove ranjivosti u eBPF podsustavu, koja omogućava pokretanje handlera unutar Linux jezgre u posebnoj virtualnoj mašini s JIT-om. Obje ranjivosti omogućuju izvršavanje vlastitog koda s pravima jezgre, izvan izolirane virtualne mašine eBPF. Informacije o tim problemima objavila je tim Zero Day Initiative, koji provodi Pwn2Own natjecanja, tijekom kojih su ove godine prikazane tri napada na Ubuntu Linux koristeći prethodno nepoznate ranjivosti (nije navedeno jesu li ranjivosti u eBPF povezane s tim napadima).

  • CVE-2021-3490 — ranjivost je izazvana nedostatkom provjere izlaza izvan granica 32-bitnih vrijednosti prilikom izvođenja bitovnih operacija AND, OR i XOR u eBPF ALU32. Napadač može iskoristiti ovu pogrešku za čitanje i pisanje podataka izvan granica dodijeljenog bafera. Problem s operacijom XOR pojavljuje se od verzije jezgre 5.7-rc1, a AND i OR — od izdanja 5.10-rc1.
  • CVE-2021-3489 — ranjivost je uzrokovana pogreškom u implementaciji kružnog bafera i povezana je s tim da funkcija bpf_ringbuf_reserve nije provjeravala mogućnost da veličina dodijeljene memorijske zone može biti manja od stvarne veličine kružnog bafera ringbuf. Problem se pojavljuje od izdanja 5.8-rc1.

Status ispravka ranjivosti u distribucijama može se pratiti na sljedećim stranicama: Ubuntu, Debian, RHEL, Fedora, SUSE, Arch). Ispravci su također dostupni u obliku zakrpa (CVE-2021-3489, CVE-2021-3490). Mogućnost iskorištavanja problema ovisi o dostupnosti sustavnog poziva eBPF korisniku. Na primjer, u zadnjoj konfiguraciji u RHEL-u, za iskorištavanje ranjivosti potrebna su prava CAP_SYS_ADMIN.

Osobno se može istaknuti još jedna ranjivost u Linux jezgri — CVE-2021-32606, koja omogućava lokalnom korisniku da poveća svoje privilegije na razinu root. Problem se pojavljuje od Linux jezgre 5.11 i uzrokovan je stanjima utrke u implementaciji CAN ISOTP protokola, što omogućava promjenu parametara vezanja za soket zbog nedostatka pravilnog zaključavanja u funkciji isotp_setsockopt() pri obradi CAN_ISOTP_SF_BROADCAST zastavice.

Nakon zatvaranja ISOTP soketa, veza sa soketom primaocem nastavlja da važi, što može omogućiti korišćenje struktura povezanih sa soketom nakon oslobađanja povezane memorije (use-after-free zbog pozivanja isotp_rcv() na već oslobođenoj strukturi isotp_sock). Manipulacijom podacima može se postići preusmeravanje pokazivača na funkciju sk_error_report() i izvršavanje vlastitog koda na nivou jezgra.

Izvor: opennet.ru

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster