Ranljivost v io_uring je uporabniku brez dovoljenj omogočila, da postane root tudi v vsebnikih

Pred kratkim razkrite informacije o ranljivosti (CVE-2022-29582) pri implementaciji asinhronega V/I vmesnika io_uring, vključenega v jedro Linuxa od različice 5.1, ki neprivilegiranemu uporabniku omogoča, da postane root v sistemu, tudi ko izvaja izkoriščanje vsebnika.

Omeniti velja to omenjena ranljivost je bila prijavljena pred nekaj več kot 3 meseci (približno v začetku maja letos), vendar so bili popolni podatki in razkritje objavljeni šele pred kratkim.

Glede ranljivosti je omenjeno, da to se pojavi pri dostopu do že sproščenega bloka pomnilnika, se kaže v jedrih Linuxa, začenši z vejo 5.10.

O ranljivosti CVE-2022-29582

Ta ranljivost omogoča dostop do sproščenega pomnilnika kot rezultat tekmovalnega stanja pri obravnavanju časovnih omejitev v funkciji io_flush_timeouts(), kie odstrani vnos časovne omejitve s seznama in ga prekliče, ne da bi preveril ustvarjanje in brisanje časovne omejitve na tej točki.

Posodobljen splošni opis io_uring so že zagotovili drugi. Razložijo ga tisočkrat bolje kot mi, zato bomo podsistem obravnavali bolj obširno (glejte ta članek Grapl Security in ta članek Flatt Security za odličen uvod).

Kar je bolj pomembno, polje operacijske kode določa vrsto operacije, ki jo je treba izvesti. Za vsako »opcode«, ki to zahteva, polje fd podaja deskriptor datoteke, na katerem naj se izvede zahtevani V/I. Skoraj vsi običajni V/I sistemski klici (branje, pošiljanje itd.) imajo enakovredno asinhrono operacijsko kodo. Vsako polje lahko prevzame različne vloge, odvisno od operacije.

Ko je SQE pridobljen iz SQ, se pretvori v notranjo predstavitev, ki jo opisuje struct io_kiocb( povratni vhodno/izhodni klic jedra). Ti objekti so splošno znani kot zahteve.

struct io_kiocb se uporablja kot ekvivalent SQE "pripravljenega za zagon", na katerem temelji, pri čemer je kateri koli deskriptor datoteke razrešen v struct file*s, uporabniške poverilnice so priložene, osebnost (v katerem se bodo izvajala jedra) itd. .

Ko je zahtevana operacija končana, se zapiše v čakalno vrsto za dokončanje (CQ) vnos, ki ustreza SQE. Takšen vnos se imenuje vnos v čakalno vrsto za dokončanje (CQE) in vsebuje polja, kot sta koda napake in vrednost rezultata. Aplikacija uporabniškega prostora lahko vpraša CQ za nove vnose, da ugotovi, ali so poslani SQE končali obdelavo in kakšen je bil njihov rezultat.

Omenjeno je, da obstaja nekaj scenarijev, v katerih je enostavno zamenjati predmet o napredku. Vendar obstajata dve omejitvi:

  • LT' je treba dodeliti in inicializirati v oknu dirke. To je po sprostitvi LT, vendar preden dosežete točko v LT, do katere ni več dostopa.
  • LT' je lahko le drug objekt struct io_kiocb. Zaradi izolacije kopice, kjer so predmeti v kopici ločeni glede na njihovo vrsto, jih je pretežko prerazporediti kot drugo vrsto predmeta v oknu dirke.

Raziskovalci so pripravili funkcionalni podvig ki za svoje delovanje ne zahteva vključitve imenskih prostorov uporabniških identifikatorjev (uporabniških imenskih prostorov) in lahko zagotovi korenski dostop do gostitelja, ko neprivilegirani uporabnik zažene izkoriščanje v izoliranem vsebniku.

Naše izkoriščanje cilja na različico jedra 5.10.90, različico, ki jo je Google takrat izvajal na daljavo. Naše izkoriščanje smo morali prilagoditi posebnim specifikacijam strežnika (4 jedra Skylake Xeon pri 2.80 Ghz, 16 GB RAM-a), toda z nekaj prilagoditvami bi moral biti vsak stroj, ki poganja ranljivo jedro, izkoriščen.

Izkoriščanje deluje tudi v okolju nsjail izoliran na Google COS (Container Optimized OS) distribuciji, ki temelji na Chromium OS in se uporablja na Google Cloud Platform na virtualnih strojih Compute Engine. Izkoriščanje je zasnovano za delo z vejami jedra od 5.10 do 5.12. Nazadnje je vredno omeniti še to težava je bila odpravljena aprila v posodobitvah 5.10.111, 5.15.34 in 5.17.3.

Nazadnje, če vas zanima več o ranljivosti, si lahko ogledate objavljeno publikacijo V naslednji povezavi.


Pustite svoj komentar

Vaš e-naslov ne bo objavljen. Obvezna polja so označena z *

*

*

  1. Odgovoren za podatke: AB Internet Networks 2008 SL
  2. Namen podatkov: Nadzor neželene pošte, upravljanje komentarjev.
  3. Legitimacija: Vaše soglasje
  4. Sporočanje podatkov: Podatki se ne bodo posredovali tretjim osebam, razen po zakonski obveznosti.
  5. Shranjevanje podatkov: Zbirka podatkov, ki jo gosti Occentus Networks (EU)
  6. Pravice: Kadar koli lahko omejite, obnovite in izbrišete svoje podatke.