Dirty Pipe, jedna od najozbiljnijih ranjivosti u Linuxu posljednjih godina

Nedavno se na internetu pojavila vijest o otkriću nove ranjivosti u Linuxu koja je kategorizirana kao "visoka ozbiljnost" i utječe na sve kernele od verzije 5.8 nadalje, kao i na derivate, uključujući Android.

Poznat kao Dirty Pipe, omogućuje prepisivanje podataka u datotekama samo za čitanje i može dovesti do eskalacije privilegija ubrizgavanjem koda u "root" procese.

Iako je već zakrpljen u glavnu jezgru Linuxa, bug bi se mogao iskoristiti u obliku eksploatacije za povećanje privilegija na svim uređajima koji koriste Linux kernel verziju 5.8 ili noviju.

To također znači da je hrpa novoobjavljenih Android pametnih telefona, poput Samsung Galaxy S22 i Google Pixel 6, također ranjiva, sve dok svaki uređaj ne dobije odgovarajuću zakrpu kernela od odgovarajućeg OEM-a.

O Dirty Pipeu

Ranjivost je otkrio sigurnosni istraživač Max Kellerman i katalogizirao je kao (CVE-2022-0847); trebalo je nekoliko mjeseci da se pronađe iskorištavanje koje dokazuje koncept.

Ranjivost omogućuje neprivilegiranom korisniku ubrizgavanje i prepisivanje podataka u datoteke samo za čitanje, uključujući SUID procese koji se izvode kao root. Čini se da je kolokvijalni nadimak igra riječi na zloglasnu grešku Dirty Cow i Linuxov mehanizam zvan pipelining za prosljeđivanje poruka između procesa, budući da se potonji koristi tijekom rutine iskorištavanja.

Sve je počelo prije godinu dana s tiketom za podršku u vezi s oštećenim datotekama. Kupac se požalio da se preuzeti zapisnici pristupa ne mogu raspakirati. I doista, na jednom od poslužitelja dnevnika postojala je korumpirana datoteka dnevnika; mogao bi biti nekomprimiran, ali gzip je prijavio CRC pogrešku. Nisam mogao objasniti zašto je oštećen, ali pretpostavio sam da se proces noćnog razdvajanja srušio i proizveo oštećenu datoteku. Ručno sam ispravio CRC datoteke, zatvorio kartu i ubrzo zaboravio na problem.

Nakon mjeseci analize, istraživač je konačno otkrio da su oštećene klijentske datoteke rezultat greške u Linux kernelu. Pronašao je način da iskoristi Dirty Pipe kako bi omogućio bilo kome s računom, uključujući i manje privilegirane "nobody" račune, da doda SSH ključ root korisničkom računu.

Da bi pokrenuo ranjivost, Kellerman je podijelio svoj dokaz koncepta, napadač mora imati dopuštenja za čitanje. Također, pomicanje ne smije biti na granici stranice, pisanje ne smije prijeći granicu stranice, a veličina datoteke se ne može promijeniti.

Da biste iskoristili ovu ranjivost, morate: stvoriti cijev, ispuniti cijev s proizvoljnim podacima (postavljanjem zastavice PIPE_BUF_FLAG_CAN_MERGE na sve unose u prstenu), isprazniti cijevi (ostaviti zastavicu postavljenu na svim instancama strukture pipe_buffer u strukturi prstena pipe_inode_info), spojite podatke iz ciljne datoteke (otvorene s O_RDONLY) u cijevi neposredno prije ciljnog pomaka i zapišite proizvoljne podatke u cijevi.

Dirty Pipe također utječe na bilo koju verziju Androida temeljenu na jednoj od ranjivih verzija Linux kernela. Budući da je Android toliko fragmentiran, zahvaćeni modeli uređaja ne mogu se jednoliko pratiti.

Prema Kellermannu, Google je prošli mjesec spojio svoj ispravak greške u Android kernel, odmah nakon što je ispravljen izdavanjem verzija Linux kernela 5.16.11, 5.15.25 i 5.10.102.

Rekavši to, vjerojatno ćemo morati malo pričekati prije nego što OEM-ovi počnu uvoditi Android ažuriranja koja sadrže popravak. Googleov Pixel 6 je, na primjer, još uvijek ranjiv, ali napredni korisnici mogu ublažiti nedostatak instaliranjem prilagođene zakrpljene kernela kao alternativne opcije.

Razvojni programeri Linux kernela objavili su ispravke (5.16.11, 5.15.25, 5.10.102) 23. veljače, dok je Google zakrpio Android kernel 24. veljače. Kellermann i drugi stručnjaci usporedili su ranjivost s CVE-2016-5195 "Dirty Cow" i rekli da ju je još lakše iskoristiti.

Konačno, ako ste zainteresirani saznati više, detalje možete pronaći na sljedećoj poveznici.


Dodaj kao preferirani izvor na Googleu