Dirty COW-sårbarhed

Dirty COW-sårbarheden ( CVE-2016-5195, fra engelsk  dirty + copy-on-write  - copy -on-write ) er en alvorlig softwaresårbarhed i Linux-kernen , som har eksisteret siden 2007 og blev rettet i oktober 2016. Det giver en lokal bruger mulighed for at ophøje deres privilegier på grund af en race-tilstand i implementeringen af ​​Copy-on-write (COW) mekanismen for hukommelsessider markeret med Dirty bit flag (ændret hukommelse). [1] [2] [3] Fra oktober 2016 blev der rapporteret om aktiv udnyttelse af sårbarheden, når servere blev hacket [3] .

Tekniske detaljer

Problemet opstår, når der er mange samtidige opkald til en systemfunktion madvise(MADV_DONTNEED)og skrivning til en hukommelsesside, som brugeren ikke har adgang til at ændre [4] . Disse opkald foretages fra forskellige tråde på samme tid.

Når du prøver at skrive til en skrivebeskyttet COW-side, opretter kernen automatisk en kopi af den og skriver derefter dataene til en ny kopi. Den originale hukommelsesside forbliver intakt. Den berørte Linux-kernekode kontrollerede ikke, om kopien var komplet og stadig eksisterer, før du begyndte at skrive til den anmodede hukommelsesadresse. Da disse er to på hinanden følgende instruktioner, blev det anset for usandsynligt, at noget kunne "viges" mellem dem.

To tråde A og B oprettes for at bruge udnyttelsen . Et systemkald madvise(MADV_DONTNEED)på tråd A fortæller kernen, at programmet aldrig kommer til at bruge den angivne hukommelsesside igen, så kernen sletter straks alle kopier af denne side (men nægter ikke adgang til den på den tidligere adresse!). At skrive til den samme side fra tråd B fører til behovet for at genskabe sin kopi. Hvis ovenstående instruktioner udføres på samme tid, er det meget usandsynligt, at en kopi af siden slettes umiddelbart efter den er oprettet, men før skriveoperationen. I dette uheldige øjeblik vil kernen skrive data til den originale skrivebeskyttede hukommelsesside og ikke til dens kopi. Med flere gentagelser af anmodninger fra forskellige tråde opstår der et kapløb, og en usandsynlig hændelse vil med sikkerhed indtræffe, som et resultat af hvilket udnytteren opnår retten til at ændre den originale skrivebeskyttede side. Normalt tager processen ikke mere end et par sekunder [5] .

En forudsætning for at udnytte sårbarheden er læseadgang til filen eller hukommelsesplaceringen. Dette betyder, at den lokale bruger ikke direkte kan overskrive systemfiler, der ikke er læsbare, såsom /etc/shadow , hvilket ville tillade, at superbruger- adgangskoden ændres . Men sårbarheden tillader, at vilkårlig kode kan skrives til enhver eksekverbar fil, inklusive enhver suid -fil. Dermed får brugeren mulighed for at "erstatte" de systemfiler, som han kører som root. For eksempel bliver det muligt at erstatte den "harmløse" suid ping -fil med en systemterminal, der kører som root.

Selvom privilegie-eskaleringsfejlen er implementeret for lokale brugere, kan fjernangribere bruge den i forbindelse med andre udnyttelser , der tillader fjernudførelse af uprivilegeret kode. Denne kombination vil føre til en komplet hacking af fjernsystemet. [2] Udnyttelse af DirtyCOW-sårbarheden i sig selv efterlader ingen spor i systemlogfiler. [3] [1]

Historie

Sårbarheden fik betegnelsen CVE CVE-2016-5195, den er foreløbig estimeret på CVSS-skalaen til 6,9-7,8 point ud af 10 [6] . Fejlen har været til stede i kernen siden 2007 (version 2.6.22) [1] og kan bruges på en lang række distributioner, inklusive Android [7] . Denne sårbarhed er blevet den længste eksisterende kritiske fejl i Linux-kernen [8] . Kun i enkelte distributioner (RHEL5/6) er driften af ​​en af ​​standardudnyttelsen umulig på grund af deaktivering af "proc mem"-grænsefladen [9] . Linus Torvalds indrømmede, at han allerede havde gjort forsøg på at rette dette løb i august 2005, men denne patch var af dårlig kvalitet og blev annulleret næsten øjeblikkeligt på grund af problemer med S390- arkitekturen [10] .

Udnyttelsen af ​​sårbarheden blev opdaget af sikkerhedsforsker Phil Oester, mens han analyserede et hack på en af ​​hans servere. Ved at registrere al HTTP-trafik i flere år var han i stand til at opnå en udnyttelse og analysere dens drift. Udnyttelsen blev kompileret med GCC-kompileren version 4.8 (frigivet i 2013), hvilket kan indikere, at sårbarheden er blevet udnyttet med succes i flere år. En lukket diskussion og udarbejdelse af en rettelse fandt sted den 13. oktober 2016 [11] [12] . Den 18. oktober blev en patch introduceret til at rette fejlen; Linus angav dog ikke, at denne rettelse er vigtig og adresserer sårbarheden. Denne fortielse af følsomme oplysninger og problemer med afsløring af sårbarheder komplicerer kun livet for brugere og distributører, denne praksis blev kritiseret i LWN [13] . Den 19.-20. oktober blev information om sårbarheden offentliggjort af RedHat; der blev også lanceret en særlig hjemmeside [11] , som fortæller om sårbarheden og tilbyder forskellige udnyttelser, en twitterkonto og en netbutik, der sælger t-shirts og souvenirs med sårbarhedens logo.

Løsning af sårbarheden kræver en kerneopdatering. Sårbarheden blev rettet i kerneversionerne 4.8, 4.7, 4.4 og andre [14] , rettelsen er tilføjelsen af ​​et nyt FOLL_COW flag (7 linjer kode ændret) [10] . En række GNU/Linux-distributioner, såsom Debian , Ubuntu, RedHat og andre, har allerede annonceret patchede kernepakker [15] . Samtidig er der adskillige sårbare enheder og systemer-på-en-chip, hvor udgivelsen af ​​opdateringer er færdiggjort af producenten og muligvis ikke er tilgængelige for tredjeparter på grund af proprietære tilføjelser og overtrædelser af GPL . For eksempel kan en sårbarhed bruges til at få root-adgang på næsten alle Android-enheder [16] [17] , med OS-versioner op til og med Android 6 [18] og med tidligere versioner af Android 7.

I december 2017 blev en "Huge Dirty COW"-variant (CVE-2017-1000405) introduceret, forbundet med en lignende fejl i håndteringen af ​​store sider (2 MB) [19] .

Noter

  1. 1 2 3 0-dages Dirty COW-sårbarheden, som allerede er blevet vedtaget af hackere, er blevet rettet i Linux-kernen , xakep.ru (21. oktober 2016). Arkiveret fra originalen den 23. oktober 2016. Hentet 22. oktober 2016.
  2. 12 Goodin , Dan . Den "mest alvorlige" Linux-privilegie-eskaleringsfejl nogensinde er under aktiv udnyttelse (opdateret)  (engelsk) , Ars Technica (20. oktober 2016). Arkiveret fra originalen den 10. marts 2017. Hentet 21. oktober 2016.
  3. ↑ 1 2 3 Vaughan-Nichols, Steven J. The Dirty Cow Linux-fejl: Et fjollet navn på et alvorligt problem . Hentet 21. oktober 2016. Arkiveret fra originalen 7. maj 2021.
  4. Kernel Local Privilege Escalation - CVE-2016-5195 Arkiveret 26. oktober 2016 på Wayback Machine /Redhat
  5. Dirty COW forklarede: Få en moooo-ve på og patch Linux-rodhul , The Register (21. okt. 2016). Arkiveret fra originalen den 22. oktober 2016. Hentet 22. oktober 2016.
  6. Kernel Local Privilege Escalation - CVE-2016-5195 - Red Hat Customer Portal . Hentet 21. oktober 2016. Arkiveret fra originalen 26. oktober 2016.
  7. Alex Hern . 'Dirty Cow' Linux-sårbarhed fundet efter ni år  , The Guardian (21. oktober 2016) . Arkiveret fra originalen den 22. oktober 2016. Hentet 23. oktober 2016.
  8. Sikkerhedsfejls levetid.  CVE -2016-5195 . Kees Cook (20/10/2016). Hentet 23. oktober 2016. Arkiveret fra originalen 23. oktober 2016.
  9. ↑ Bug 1384344 - CVE- 2016-5195 kernel breakage: mm: privilegieeskalering via MAP_PRIVATE COW
  10. 1 2 Linus Torvalds. mm: fjern gup_flags FOLL_WRITE spil fra __get_user_pages(  ) . 19be0eaffa3ac7d8eb6784ad9bdbc7d67ed8e619 . Kernel.org GIT (18. oktober 2016). Hentet 22. oktober 2016. Arkiveret fra originalen 20. oktober 2016.
  11. 12 Graeme Burton . Linux-brugere opfordres til at beskytte mod 'Dirty COW' sikkerhedsfejl. Alle Linux-brugere bør tage dette alvorligt, siger sikkerhedsekspert  (engelsk) , V3 (20. oktober 2016). Arkiveret fra originalen den 19. januar 2018. Hentet 23. oktober 2016.
  12. oss-security - CVE-2016-5195 "Dirty COW" Linux-kerneprivilegieeskaleringssårbarhed . Hentet 23. oktober 2016. Arkiveret fra originalen 23. oktober 2016.
  13. Dirty COW and clean commit messages Arkiveret 4. november 2016 på Wayback Machine / LWN, Jonathan Corbet, 21. oktober  2016
  14. Den mest alvorlige privilegie-eskaleringssårbarhed er blevet rettet i Linux-kernen , securitylab.ru (21. oktober 2016). Arkiveret fra originalen den 22. oktober 2016. Hentet 22. oktober 2016.
  15. CVE-2016-5195 . Hentet 21. oktober 2016. Arkiveret fra originalen 21. oktober 2016.
  16. Android-telefoner rodfæstet af "mest alvorlige" Linux-eskaleringsfejl nogensinde  , Ars Technica (  24. oktober 2016). Arkiveret fra originalen den 29. januar 2017. Hentet 1. oktober 2017.
  17. Enhver Android-enhed, der er potentielt sårbar over for "mest alvorlige" Linux-eskaleringsangreb, nogensinde / Boing Boing . Hentet 25. oktober 2016. Arkiveret fra originalen 26. oktober 2016.
  18. Dirty COW påvirker ikke kun Linux, men alle versioner af Android . Hentet 25. oktober 2016. Arkiveret fra originalen 26. oktober 2016.
  19. Tom Spring. Fejl fundet i Dirty COW Patch . trusselpost (1. december 2017). Dato for adgang: 18. december 2017. Arkiveret fra originalen 7. februar 2018. ( da Arkiveret 8. december 2017 på Wayback Machine )

Links