Ranjivost jezgre Linux, što utječe na mrežni protokol CAN BCM

U jezgri Linux Identificirana je ranjivost (CVE-2021-3609) koja lokalnom korisniku omogućuje eskalaciju svojih privilegija u sustavu. Problem je uzrokovan uvjetom utrke u implementaciji CAN BCM protokola i prisutan je u izdanjima kernela. Linux od verzije 2.6.25 do 5.13-rc6. Problem ostaje neriješen u distribucijama (RHEL, Fedora, Debian, Ubuntu, SUSE, Arch).

Istraživač koji je otkrio ranjivost uspio je pripremiti iskorištavanje za dobivanje root privilegija na sustavima s jezgrama. Linux 5.4 i novije, uključujući mogućnost uspješnog izvođenja napada u Ubuntu 20. travnja 2002. LTS. Moguće je da se exploit može preraditi kako bi radio sa starijim jezgrama (u jezgri 5.4, CAN BCM kod (net/can/bcm.c) je premješten iz hrtimer_tasklet u HRTIMER_MODE_SOFT).

Protokol CAN BCM omogućuje vam da registrirate vlastiti rukovatelj porukama koji stiže preko CAN sabirnice (mreža područja kontrolera) i priključite ga na određenu mrežnu utičnicu. Kada stigne dolazna poruka, poziva se funkcija bcm_rx_handler(). Napadač može iskoristiti stanje utrke i uzrokovati zatvaranje mrežne utičnice u isto vrijeme kada se izvršava bcm_rx_handler(). Kada se utičnica zatvori, poziva se funkcija bcm_release(), koja oslobađa memoriju dodijeljenu za strukture bcm_op i bcm_sock, koje se nastavljaju koristiti u rukovatelju bcm_rx_handler() koji se još uvijek izvršava. Dolazi do situacije koja dovodi do pristupa već oslobođenom memorijskom bloku (use-after-free).

Napad se svodi na otvaranje dvije CAN BCM utičnice i njihovo povezivanje s vcan sučeljem. Prva utičnica poziva sendmsg() s oznakom RX_SETUP za postavljanje rukovatelja za dolazne CAN poruke, a druga utičnica poziva sendmsg() za slanje poruke prvoj utičnici. Nakon što poruka stigne, pokreće se poziv bcm_rx_handler(), a napadač odabire pravi trenutak i zatvara prvi socket, što dovodi do pokretanja bcm_release() i oslobađanja bcm_op i bcm_sock struktura, iako rad bcm_rx_handlera () još nije dovršen.

Manipulirajući sadržajem bcm_sock, napadač može redefinirati pokazivač na funkciju sk->sk_data_ready(sk), preusmjeriti izvršenje i, korištenjem tehnika povratno-orijentiranog programiranja (ROP), organizirati prepisivanje parametra modprobe_path i osigurati da njihov kod izvršava se s root pravima. Kada koristi ROP tehniku, napadač ne pokušava svoj kod smjestiti u memoriju, već operira komadima strojnih instrukcija koje su već dostupne u učitanim bibliotekama, završavajući instrukcijom povratka kontrole (u pravilu su to krajevi funkcija knjižnice) . Rad exploit-a svodi se na izgradnju lanca poziva sličnih blokova ("gadgeta") kako bi se dobila željena funkcionalnost.

Ranjivost jezgre Linux, što utječe na mrežni protokol CAN BCM

Napad zahtijeva pristup za stvaranje CAN utičnica i konfigurirano vcan mrežno sučelje. Potrebne privilegije za napad može dobiti neprivilegirani korisnik u kontejnerima stvorenim na sustavima s omogućenim korisničkim imenskim prostorima. Na primjer, korisnički imenski prostori su omogućeni prema zadanim postavkama u Ubuntu i Fedora, ali nije aktiviran u Debian i RHEL.

Izvor: opennet.ru

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