Dirty Pipe, vienas rimčiausių per daugelį metų „Linux“ spragų

Neseniai internete pasirodė žinia apie naują „Linux“ pažeidžiamumą , kuris priskiriamas „didelio pavojaus“ kategorijai ir paveikia visus branduolius nuo 5.8 versijos, taip pat ir jų išvestines versijas, įskaitant „Android“.

Žinomas kaip „Dirty Pipe“, jis leidžia perrašyti duomenis tik skaitymui skirtuose failuose ir gali padidinti privilegijas, įterpiant kodą į „root“ procesus.

Nors ji jau buvo pataisyta pagrindiniame „Linux“ branduolyje, klaida gali būti ginkluota privilegijų išnaudojimo forma visuose įrenginiuose, kuriuose veikia 5.8 ar naujesnė „Linux“ branduolio versija.

Tai taip pat reiškia, kad daugybė naujai išleistų „Android“ išmaniųjų telefonų, tokių kaip „Samsung Galaxy S22“ ir „Google Pixel 6“, taip pat yra pažeidžiami, kol kiekvienas įrenginys negaus atitinkamo branduolio pataisos iš atitinkamo originalios įrangos gamintojo.

Apie Dirty Pipe

Pažeidžiamumą atskleidė saugumo tyrėjas Maxas Kellermanas ir užkatalizavo jį kaip (CVE-2022-0847); prireikė kelių mėnesių, kad būtų rastas koncepcijos įrodymo išnaudojimo būdas.

Ši pažeidžiamumas leidžia neprivilegijuotiems vartotojams įterpti ir perrašyti duomenis tik skaitymui skirtuose failuose, įskaitant SUID procesus, veikiančius kaip root. Šnekamoji pravardė, regis, yra susijusi su liūdnai pagarsėjusia „Dirty Cow“ klaida ir „Linux“ mechanizmu, vadinamu „pipelining“, skirtu perduoti pranešimus tarp procesų, nes pastarasis naudojamas pažeidžiamumo išnaudojimo metu.

Viskas prasidėjo prieš metus nuo palaikymo bilieto, susijusio su sugadintais failais. Klientas skundėsi, kad atsisiųstų prieigos žurnalų nepavyko išpakuoti. Ir iš tiesų, viename iš žurnalo serverių buvo sugadintas žurnalo failas; jis gali būti nesuspaustas, bet gzip pranešė apie CRC klaidą. Negalėjau paaiškinti, kodėl jis buvo sugadintas, bet maniau, kad naktinis padalijimo procesas sudužo ir sukūrė sugadintą failą. Rankiniu būdu pataisiau failo CRC, uždariau bilietą ir netrukus pamiršau problemą.

Po kelių mėnesių analizės tyrėjas pagaliau atrado, kad sugadinti kliento failai atsirado dėl „Linux“ branduolio klaidos. Jis rado būdą, kaip išnaudoti „Dirty Pipe“, kad kiekvienas, turintis paskyrą, įskaitant mažiau privilegijuotas „niekieno“ paskyras, galėtų pridėti SSH raktą prie root vartotojo paskyros.

Kad suaktyvintų pažeidžiamumą, Kellermanas pasidalijo savo koncepcijos įrodymu, užpuolikas turi turėti skaitymo teises. Be to, slinkimas neturi būti ant puslapio ribos, rašymas negali kirsti puslapio ribos ir failo dydis negali būti pakeistas.

Norėdami išnaudoti šį pažeidžiamumą, turite: sukurti vamzdį, užpildyti vamzdį savavališkais duomenimis (nustatydami PIPE_BUF_FLAG_CAN_MERGE vėliavėlę visuose žiedo įrašuose), ištuštinti vamzdį (palikdami vėliavėlę nustatytą visuose pipe_buffer struktūros egzemplioriuose struktūroje vamzdžio_inode_info žiedo), sujunkite duomenis iš tikslinio failo (atidarytas su O_RDONLY) į vamzdį prieš pat tikslinį poslinkį ir įrašykite savavališkus duomenis į vamzdį.

„Dirty Pipe“ taip pat veikia bet kurią „Android“ versiją, pagrįstą viena iš pažeidžiamų „Linux“ branduolio versijų. Kadangi „Android“ yra labai suskaidyta, paveiktų įrenginių modelių negalima vienodai stebėti.

Pasak Kellermanno, „Google“ praėjusį mėnesį įtraukė savo klaidos ištaisymą į „Android“ branduolį, iškart po to, kai ji buvo ištaisyta išleidus „Linux“ branduolio 5.16.11, 5.15.25 ir 5.10.102 versijas.

Tai pasakius, tikriausiai turėsime šiek tiek palaukti, kol originalios įrangos gamintojai pradės skelbti „Android“ naujinius su pataisymu. Pavyzdžiui, „Google“ „Pixel 6“ vis dar yra pažeidžiamas, tačiau pažengę vartotojai gali sumažinti trūkumą, kaip alternatyvią parinktį įdiegę tinkintą pataisytą antrinės rinkos branduolį.

„Linux“ branduolio kūrėjai išleido pataisymus (5.16.11, 5.15.25, 5.10.102) vasario 23 d., o „Google“ įdiegė „Android“ branduolio pataisas vasario 24 d. Kellermannas ir kiti ekspertai palygino pažeidžiamumą su CVE-2016-5195 „Dirty Cow“ ir teigė, kad juo pasinaudoti dar lengviau.

Galiausiai, jei norite sužinoti daugiau, išsamią informaciją galite rasti šioje nuorodoje.


Pridėti kaip pageidaujamą šaltinį „Google“ sistemoje