Likainen COW-haavoittuvuus

Dirty COW-haavoittuvuus (CVE-2016-5195, englanniksi  dirty + copy-on-write  - copy -on-write ) on vakava ohjelmistohaavoittuvuus Linux -ytimessä , joka on ollut olemassa vuodesta 2007 ja joka korjattiin lokakuussa 2016. Sen avulla paikallinen käyttäjä voi nostaa oikeuksiaan kilpailutilanteen vuoksi kopiointi -kirjoitus- mekanismin (COW) toteutuksessa likabittilipulla merkittyjen muistisivujen osalta (muuttunut muisti). [1] [2] [3] Lokakuusta 2016 lähtien haavoittuvuuden aktiivisesta hyväksikäytöstä raportoitiin, kun palvelimia hakkeroitiin[3] .

Tekniset tiedot

Ongelma syntyy, kun järjestelmätoimintoon kutsutaan useita samanaikaisia ​​kutsuja madvise(MADV_DONTNEED)ja kirjoitetaan muistisivulle, jota käyttäjällä ei ole muuttaa [4] . Nämä puhelut soitetaan eri säikeistä samaan aikaan.

Kun yritetään kirjoittaa vain luku -muotoiselle COW-sivulle, ydin luo siitä automaattisesti kopion ja kirjoittaa sitten tiedot uuteen kopioon. Alkuperäinen muistisivu säilyy ennallaan. Vaikuttava Linux-ytimen koodi ei tarkistanut, oliko kopio valmis ja onko se edelleen olemassa, ennen kuin aloitettiin kirjoittaminen pyydettyyn muistiosoitteeseen. Koska nämä ovat kaksi peräkkäistä ohjetta, pidettiin epätodennäköisenä, että mikään voisi "vihtyä" niiden välillä.

Kaksi säiettä A ja B luodaan hyödyntämään hyväksikäyttöä . Järjestelmäkutsu madvise(MADV_DONTNEED)säikeessä A kertoo ytimelle, että ohjelma ei koskaan enää käytä määritettyä muistisivua, joten ydin poistaa välittömästi kaikki tämän sivun kopiot (mutta ei estä pääsyä siihen edellisessä osoitteessa!). Kirjoittaminen samalle sivulle säikeestä B johtaa tarpeeseen luoda sen kopio uudelleen. Jos yllä olevat ohjeet suoritetaan samanaikaisesti, on erittäin epätodennäköistä, että sivun kopio poistetaan heti sen luomisen jälkeen, mutta ennen kirjoitustoimintoa. Tällä epäsuotuisalla hetkellä ydin kirjoittaa tiedot alkuperäiselle vain luku -muistisivulle, ei sen kopiolle. Kun pyyntöjä toistetaan useaan otteeseen eri säikeistä, syntyy kilpailu ja epätodennäköinen tapahtuma, jonka seurauksena hyväksikäyttö saa oikeuden muuttaa alkuperäistä vain luku -sivua. Yleensä prosessi kestää enintään muutaman sekunnin [5] .

Edellytyksenä haavoittuvuuden hyödyntämiselle on tiedoston tai muistipaikan lukuoikeus. Tämä tarkoittaa, että paikallinen käyttäjä ei voi suoraan korvata järjestelmätiedostoja, jotka eivät ole luettavissa, kuten /etc/shadow , mikä mahdollistaisi pääkäyttäjän salasanan muuttamisen . Haavoittuvuus sallii kuitenkin mielivaltaisen koodin kirjoittamisen mihin tahansa suoritettavaan tiedostoon, mukaan lukien kaikki suid - tiedostot. Siten käyttäjä saa mahdollisuuden "korvaaa" järjestelmätiedostot, joita hän ajaa pääkäyttäjänä. On esimerkiksi mahdollista korvata "vaaraton" suid ping -tiedosto järjestelmäpäätteellä, joka toimii pääkäyttäjänä.

Vaikka oikeuksien eskalointivirhe on toteutettu paikallisille käyttäjille, etähyökkääjät voivat käyttää sitä yhdessä muiden hyväksikäyttötoimintojen kanssa , jotka mahdollistavat oikeudettoman koodin etäsuorittamisen. Tämä yhdistelmä johtaa etäjärjestelmän täydelliseen hakkerointiin. [2] DirtyCOW-haavoittuvuuden hyväksikäyttö itsessään ei jätä jälkeä järjestelmälokiin. [3] [1]

Historia

Haavoittuvuus sai merkinnän CVE CVE-2016-5195, se on alustavasti arvioitu CVSS-asteikolla 6,9-7,8 pistettä 10:stä [6] . Virhe on ollut ytimessä vuodesta 2007 (versio 2.6.22) [1] ja sitä voidaan käyttää useissa jakeluissa, mukaan lukien Android [7] . Tästä haavoittuvuudesta on tullut Linux-ytimen pisin olemassa oleva kriittinen virhe [8] . Vain yksittäisissä jakeluissa (RHEL5/6) yhden vakiohyödyntämisen toiminta on mahdotonta, koska "proc mem" -rajapinta on poistettu käytöstä [9] . Linus Torvalds myönsi yrittäneensä korjata tätä kilpailua jo elokuussa 2005, mutta tämä korjaustiedosto oli huonolaatuinen ja peruutettiin lähes välittömästi S390 -arkkitehtuurin ongelmien vuoksi [10] .

Tietoturvatutkija Phil Oester havaitsi haavoittuvuuden hyväksikäytön analysoidessaan hakkerointia yhdellä palvelimellaan. Tallentamalla kaiken HTTP-liikenteen useiden vuosien ajan hän pystyi hankkimaan hyväksikäytön ja analysoimaan sen toimintaa. Hyökkäys on käännetty GCC-kääntäjän versiolla 4.8 (julkaistu vuonna 2013), mikä saattaa viitata siihen, että haavoittuvuutta on hyödynnetty menestyksekkäästi useiden vuosien ajan. Suljettu keskustelu ja korjauksen valmistelu käytiin 13. lokakuuta 2016 [11] [12] . 18. lokakuuta julkaistiin korjaustiedosto vian korjaamiseksi; Linus ei kuitenkaan ilmoittanut, että tämä korjaus on tärkeä ja korjaa haavoittuvuuden. Tämä arkaluonteisten tietojen piilottaminen ja haavoittuvuuksien paljastamiseen liittyvät ongelmat vain vaikeuttavat käyttäjien ja jakelijoiden elämää, tätä käytäntöä kritisoitiin LWN:ssä [13] . 19.-20. lokakuuta RedHat julkaisi tiedot haavoittuvuudesta; lanseerattiin myös erityinen verkkosivusto [11] , joka kertoo haavoittuvuudesta ja tarjoaa erilaisia ​​hyväksikäyttöjä, twitter-tilin ja verkkokaupan, jossa myydään haavoittuvuuden logolla varustettuja t-paitoja ja matkamuistoja.

Haavoittuvuuden korjaaminen vaatii ytimen päivityksen. Haavoittuvuus korjattiin ytimen versioissa 4.8, 4.7, 4.4 ja muissa [14] , korjaus on uuden FOLL_COW- lipun lisääminen (7 koodiriviä vaihdettu) [10] . Useat GNU/Linux-jakelut, kuten Debian , Ubuntu, RedHat ja muut, ovat jo ilmoittaneet korjatuista ydinpaketteista [15] . Samanaikaisesti on olemassa lukuisia haavoittuvia laitteita ja järjestelmiä sirulla, joiden päivitykset valmistaja on lopettanut, eivätkä ne välttämättä ole kolmansien osapuolten saatavilla omistettujen lisäosien ja GPL -rikkomusten vuoksi . Haavoittuvuutta voidaan käyttää esimerkiksi pääkäyttäjän oikeuksien hankkimiseen lähes kaikissa Android-laitteissa [16] [17] , käyttöjärjestelmäversioissa Android 6 :een [18] asti ja Android 7:n aiemmissa versioissa.

Joulukuussa 2017 esiteltiin "Huge Dirty COW" -versio (CVE-2017-1000405), joka liittyi samanlaiseen virheeseen suurten sivujen (2 Mt) käsittelyssä [19] .

Muistiinpanot

  1. 1 2 3 Hakkereiden jo hyväksymä 0 päivän Dirty COW -haavoittuvuus on korjattu Linux-ytimessä xakep.ru (21. lokakuuta 2016). Arkistoitu alkuperäisestä 23. lokakuuta 2016. Haettu 22. lokakuuta 2016.
  2. 12 Goodin , Dan . Kaikkien aikojen "vakavin" Linuxin etuoikeus-eskalaatiovirhe on aktiivisessa käytössä (päivitetty)  (englanniksi) , Ars Technica (20. lokakuuta 2016). Arkistoitu alkuperäisestä 10. maaliskuuta 2017. Haettu 21. lokakuuta 2016.
  3. ↑ 1 2 3 Vaughan-Nichols, Steven J. The Dirty Cow Linux -vika: typerä nimi vakavalle ongelmalle . Haettu 21. lokakuuta 2016. Arkistoitu alkuperäisestä 7. toukokuuta 2021.
  4. Ytimen paikallisten oikeuksien eskalointi - CVE-2016-5195 Arkistoitu 26. lokakuuta 2016 Wayback Machinessa /Redhatissa
  5. Dirty COW selitti: Hanki moooo-ve ja korjaa Linux root hole , Register (21. lokakuuta 2016). Arkistoitu alkuperäisestä 22. lokakuuta 2016. Haettu 22. lokakuuta 2016.
  6. Ytimen paikallisten käyttöoikeuksien eskalointi - CVE-2016-5195 - Red Hat -asiakasportaali . Haettu 21. lokakuuta 2016. Arkistoitu alkuperäisestä 26. lokakuuta 2016.
  7. Alex Hern . "Dirty Cow" Linux-haavoittuvuus löydettiin yhdeksän vuoden jälkeen  , The Guardian (21. lokakuuta 2016) . Arkistoitu alkuperäisestä 22. lokakuuta 2016. Haettu 23. lokakuuta 2016.
  8. Suojausvirheen käyttöikä.  CVE -2016-5195 . Kees Cook (20.10.2016). Haettu 23. lokakuuta 2016. Arkistoitu alkuperäisestä 23. lokakuuta 2016.
  9. ↑ Virhe 1384344 - CVE -2016-5195 ydin 6: mm: oikeuksien eskalaatio MAP_PRIVATE COW -murron
  10. 1 2 Linus Torvalds. mm: poista gup_flags FOLL_WRITE -pelit osoitteesta __get_user_pages(  ) . 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 . Kernel.org GIT (18. lokakuuta 2016). Haettu 22. lokakuuta 2016. Arkistoitu alkuperäisestä 20. lokakuuta 2016.
  11. 12 Graeme Burton . Linux-käyttäjiä kehotettiin suojaamaan "Dirty COW" -tietoturvavirheeltä. Kaikkien Linux-käyttäjien tulisi ottaa tämä vakavasti, sanoo tietoturvaasiantuntija  (englanniksi) , V3 (20. lokakuuta 2016). Arkistoitu alkuperäisestä 19. tammikuuta 2018. Haettu 23. lokakuuta 2016.
  12. oss-security - CVE-2016-5195 "Dirty COW" Linux-ytimen käyttöoikeuksien eskalaatiohaavoittuvuus . Haettu 23. lokakuuta 2016. Arkistoitu alkuperäisestä 23. lokakuuta 2016.
  13. Dirty COW and clean commit -viestit Arkistoitu 4. marraskuuta 2016, Wayback Machine / LWN, Jonathan Corbet, 21. lokakuuta  2016
  14. Vakavin käyttöoikeuksien eskalaatiohaavoittuvuus on korjattu Linux-ytimessä , securitylab.ru (21.10.2016). Arkistoitu alkuperäisestä 22. lokakuuta 2016. Haettu 22. lokakuuta 2016.
  15. CVE-2016-5195 . Haettu 21. lokakuuta 2016. Arkistoitu alkuperäisestä 21. lokakuuta 2016.
  16. Android-puhelimet, joiden juuret ovat kaikkien aikojen "vakavin" Linuxin eskalaatiovirhe  , Ars Technica (  24. lokakuuta 2016). Arkistoitu alkuperäisestä 29. tammikuuta 2017. Haettu 1. lokakuuta 2017.
  17. Jokainen Android-laite, joka on mahdollisesti alttiina "vakavimmalle" Linuxin eskalaatiohyökkäykselle, koskaan / Boing Boing . Haettu 25. lokakuuta 2016. Arkistoitu alkuperäisestä 26. lokakuuta 2016.
  18. Dirty COW ei vaikuta vain Linuxiin, vaan kaikkiin Android-versioihin . Haettu 25. lokakuuta 2016. Arkistoitu alkuperäisestä 26. lokakuuta 2016.
  19. Tom Spring. Virhe löydetty Dirty COW Patchista . uhkaposti (1.12.2017). Käyttöpäivä: 18. joulukuuta 2017. Arkistoitu alkuperäisestä 7. helmikuuta 2018. ( fi Arkistoitu 8. joulukuuta 2017 Wayback Machinessa )

Linkit