Ranjivost u mrežnom protokolu CAN BCM omogućila je eskalaciju privilegija u linux jezgri 

Juče objavljene su informacije o ranjivosti u Linux jezgri a koji je već katalogiziran kao CVE-2021-3609. Ova ranjivost omogućava lokalnom korisniku da podigne svoje privilegije na sistemu zbog trkačkog stanja u implementaciji CAN BCM protokola i manifestovanog u verzijama 2.6.25 do 5.13-rc6 Linux jezgre.

Presuda iskorištava zbog CAN BCM protokol omogućava vam registraciju vašeg vlastitog menadžera poruka mrežne mreže kontrolera (CAN) i povežite je na određenu mrežnu utičnicu. Kada stigne dolazna poruka, funkcija se poziva bcm_rx_handler () napadač može iskoristiti stanje trke i prisiliti mrežnu utičnicu da se zatvori za vrijeme izvršavanja bcm_rx_handler ().

Problem dolazi kada je utičnica zatvorena i funkcija se poziva bcm_release (), u kojem se oslobađa memorija dodijeljena za strukture bcm_op i bcm_sock, koji se i dalje koriste u rukovaocu bcm_rx_handler () koji se još uvijek izvodi, pa nastaje situacija koja dovodi do pristupa već oslobođenom memorijskom bloku (use-after-free).

Ovo je najava nedavno prijavljene greške (CVE-2021-3609) u mrežnom protokolu CAN BCM u Linux jezgri u rasponu od verzije 2.6.25 do glavne linije 5.13-rc6.
Ranjivost je trkački uvjet u net / can / bcm.c koji omogućava eskalaciju privilegija. Syzbot je u početku prijavio problem, a Norbert Slusarek pokazao se iskoristivim.

Napad se svodi na otvaranje dvije CAN BCM utičnice i njihovo vezivanje za vcan sučelje. U prvom konektoru zovete sendmsg () sa indikatorom RX_SETUP da biste konfigurirali kontroler za dolazne CAN poruke i na drugom konektoru pozivate sendmsg () za slanje poruke prvom konektoru.

Nakon što poruka stigne, aktivira se poziv bcm_rx_handler () i napadač iskoristi pravi trenutak i zatvori prvu utičnicu, što dovodi do pokretanja bcm_release () i lansiranje struktura bcm_op i bcm_sock, iako je rad bcm_rx_handler () još nije dovršen.

Manipuliranjem sadržaja bcm_sock, napadač može nadjačati pokazivač na funkciju sk-> sk_data_ready (sk), preusmjeriti izvršenje i, koristeći tehnike orijentiranog programiranja (ROP), poništiti parametar modprobe_path i učiniti da njegov kôd radi kao root .

Kada koristi ROP tehniku, napadač ne pokušava staviti svoj kod u sjećanje na, ali djeluje na komadići mašinske upute su već dostupne u učitanim knjižnicama, završavajući kontrolnim izrazom return (u pravilu su ovo funkcije funkcija knjižnice).

Neprivilegirani korisnik može dobiti dozvole potrebne za provođenje napada u spremnicima kreiranim na sistemima s omogućenim korisničkim prostorom imena. Na primjer, korisnički prostori imena po defaultu su uključeni u Ubuntu i Fedoru, ali nisu omogućeni u Debianu i RHEL-u.

Moj pokušaj iskorištavanja koncentriran je na jezgre s verzijom> = 5.4-rc1 iz predavanja bf74aa86e111. Nisam istraživao iskorištavanje jezgra starijih od 5.4-rc1 pomoću taskleta, međutim čini se da je moguće i iskorištavanje starijih jezgri. 

To se spominje istraživač koji je identificirao ranjivost uspio je pripremiti exploit da se steknu root prava na sistemima sa kernelima od verzije 5.4 i novije, uključujući mogućnost uspješnog napada na Ubuntu 20.04.02 LTS.

Rad eksploatacije svodi se na izgradnju lanca poziva sličnim blokovima ("gadgeti") kako bi se dobila potrebna funkcionalnost. Za napad je potreban pristup za stvaranje CAN utičnica i konfigurirano vcan mrežno sučelje.

Konačno spomenuto je da problem i dalje postoji na većini distribucija, ali pitanje je dana kada će se objaviti odgovarajuće zakrpe.

Ako vas zanima više o tome, možete se posavjetovati sljedeći link.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Odgovoran za podatke: AB Internet Networks 2008 SL
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.