Ranjivost u io_uringu omogućila je korisniku bez dopuštenja da postane root čak iu spremnicima

nedavno otkrivene informacije o ranjivosti (CVE-2022-29582) u implementaciji io_uring asinkronog I/O sučelja, uključenog u Linux kernel od verzije 5.1, koji omogućuje neprivilegiranom korisniku da postane root na sustavu, čak i kada izvršava spremnik exploit.

Vrijedno je to spomenuti navedena je ranjivost prijavljena prije nešto više od 3 mjeseca (otprilike početkom svibnja ove godine), ali potpune informacije i objelodanjivanje tek su nedavno objavljeni.

Što se tiče ranjivosti, spominje se da ovo događa se prilikom pristupa već oslobođenom bloku memorije, manifestira se u Linux kernelima počevši od grane 5.10.

O ranjivosti CVE-2022-29582

Ova ranjivost omogućuje pristup oslobođenoj memoriji kao rezultat uvjeta utrke prilikom rukovanja vremenskim ograničenjima u funkciji io_flush_timeouts(), kojae uklanja unos vremenskog ograničenja s popisa i poništava ga, bez provjere stvaranja i brisanja vremenskog ograničenja u tom trenutku.

Ažurirani opći opis io_uringa već su dali drugi. Oni to objašnjavaju tisuću puta bolje od nas, tako da ćemo samo opširnije pokriti podsustav (pogledajte ovaj članak Grapl Security i ovaj članak Flatt Security za odličan uvod).

Što je još važnije, polje operacijskog koda određuje koju vrstu operacije treba izvesti. Za svaki "operacijski kod" koji ga zahtijeva, polje fd specificira deskriptor datoteke na kojem se izvodi traženi I/O. Gotovo svi normalni I/O sistemski pozivi (read, sendto, itd.) imaju ekvivalentan asinkroni opcode. Svako polje može preuzeti različite uloge ovisno o operaciji.

Nakon što se dohvati iz SQ-a, SQE se pretvara u internu reprezentaciju opisanu pomoću struct io_kiocb( kernel input/output call back). Ovi objekti su obično poznati kao zahtjevi.

struct io_kiocb koristi se kao ekvivalent SQE "spremnom za pokretanje" na kojem se temelji, pri čemu je bilo koji deskriptor datoteke razriješen u strukturu file*s, korisničke vjerodajnice su priložene, osobnost (u kojoj će se jezgri izvoditi) itd. .

Nakon što je tražena operacija dovršena, ona se upisuje u red čekanja za dovršetak (CQ) unos koji odgovara SQE. Takav se unos naziva unosom reda čekanja (CQE) i sadrži polja kao što su šifra pogreške i vrijednost rezultata. Aplikacija korisničkog prostora može tražiti CQ za nove unose kako bi utvrdila jesu li poslani SQE završili s obradom i kakav je bio njihov rezultat.

Spominje se da postoje neki scenariji u kojima je lako zamijeniti objekt o napretku. Ali postoje dva ograničenja:

  • LT' mora biti dodijeljen i inicijaliziran u prozoru utrke. To jest, nakon što je LT otpušten, ali prije nego što dođe do točke u LT kojoj se više ne pristupa.
  • LT' može biti samo drugi struct io_kiocb objekt. Zbog izolacije hrpe, gdje su objekti u hrpi odvojeni prema svojoj vrsti, preteško ih je ponovno dodijeliti kao drugu vrstu objekta unutar prozora utrke.

Istraživači su pripremili funkcionalni exploit koji ne zahtijeva uključivanje imenskih prostora korisničkih identifikatora (user namespaces) za svoj rad i može pružiti root pristup hostu kada neprivilegirani korisnik pokrene exploit u izoliranom spremniku.

Naš exploit cilja verziju kernela 5.10.90, verziju koju je Google u to vrijeme pokretao na daljinu. Morali smo prilagoditi našu eksploataciju posebnim specifikacijama poslužitelja (4 Skylake Xeon jezgre @ 2.80 Ghz, 16 GiB RAM-a), ali uz neka podešavanja, svaki stroj koji pokreće ranjivi kernel trebao bi biti iskorištavan.

Eksploatacija također radi u okruženju nsjail izolirano na Google COS (Container Optimized OS) distribuciji koja se temelji na Chromium OS-u i koristi se na Google Cloud Platformu na virtualnim strojevima Compute Engine. Eksploatacija je dizajnirana za rad s ograncima kernela od 5.10 do 5.12. Na kraju, vrijedi spomenuti da problem riješen u travnju u ažuriranjima 5.10.111, 5.15.34 i 5.17.3.

Konačno, ako vas zanima više o ranjivosti, možete pogledati objavljenu publikaciju U sljedećem linku.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.