Topire (vulnerabilitate de securitate)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Sigla vulnerabilității

Meltdown este o vulnerabilitate hardware care afectează microprocesoarele Intel și ARM , care permite programelor și potențialilor atacatori să acceseze zonele protejate din memoria computerului . [1] Ați fost atribuit CVE ID CVE-2,017-5,754.

Microprocesoarele AMD nu par afectate. [2] [3] [4]

Istorie

Meltdown a fost descoperit independent de cercetătorii Google Project Zero , Cyberus Technology și Graz University of Technology [5] și a fost făcut public împreună cu Specter pe 3 ianuarie 2018, cu câteva zile înainte de data preconizată din 9 ianuarie 2018, din cauza știrilor premature și a speculațiilor pe scară largă. [6] Ca rezultat, când au fost dezvăluite vulnerabilitățile, patch - urile nu au ieșit la timp pe unele platforme , cum ar fi Ubuntu . [7]

Ulterior, continuând să analizăm problema, au apărut alte vulnerabilități strâns legate de Meltdown, precum Meltdown Prime și Total Meltdown. [8]

Impact

Potrivit descoperitorilor vulnerabilității, fiecare procesor Intel care implementează o execuție ieșită din uz este potențial afectat, ceea ce corespunde în esență fiecărui procesor Intel care se află pe piață din 1995 (cu excepția Intel Itanium și Intel Atom înainte de 2013) [ 5] , se confirmă ulterior că vulnerabilitatea afectează diferitele procesoare Intel Core i3 - i5 - i7 - i7 extreme - i9 ( Nehalem la 45-32 nm și mai târziu), Intel Xeon în diferite forme, Intel Atom (A, C, Seria E, X3, Z), Intel Celeron (seria J, N), Intel Pentium (seria J, N). [9] [10]

Se așteaptă ca eroarea să aibă un impact asupra furnizorilor principali de cloud computing , precum Amazon Web Services [11] și Google Cloud Platform . De fapt, furnizorii de cloud computing rulează mai multe mașini virtuale pe același server fizic și se bazează pe protecțiile pe care Meltdown le ocolește pentru a împiedica accesul programelor în execuție la memoria utilizată de alte programe în execuție.

Operațiune

Meltdown [12] profită de o rulare critică a procesorului între executarea instrucțiunilor de acces la memorie și verificarea privilegiilor de acces la memorie. Atacul este descris bazându-se pe procesoarele Intel și sistemele de operare Microsoft Windows, macOS și Linux, deoarece articolul folosește aceste sisteme în analiza sa, dar atacul poate acționa și asupra altor sisteme de operare și procesoare.

Fundal - arhitectura CPU-urilor moderne

Procesoarele moderne folosesc o varietate de tehnici de optimizare pentru a obține performanțe ridicate, unele dintre aceste tehnici sunt utilizate de Meltdown:

  • Memorie virtuală , sistemele de operare moderne permit ca mai multe programe să fie rulate simultan în același spațiu de memorie, în acest scop, pentru o chestiune de eficiență și siguranță, fiecare program are iluzia de a avea acces la toată memoria adresabilă de procesor chiar dacă în realitate poate folosiți numai zonele care i-au fost atribuite. Când programul încearcă să acceseze o locație de memorie, procesorul traduce adresa „virtuală” (cea cunoscută programului) cu adresa fizică (locația reală a memoriei) și o folosește pentru a prelua datele de procesat.
  • Domenii de acces , una dintre tehnicile pe care procesorul le folosește pentru a defini când unui proces i se permite să utilizeze o anumită locație a memoriei virtuale. Utilizarea memoriei virtuale și a adreselor virtuale permite programelor să mapeze zone de memorie mult mai mari decât cele utilizate în mod real și permit procesorului să organizeze memoria fiecărui proces în mod eficient. Multe sisteme de operare mapează toată memoria disponibilă de sistem la fiecare proces, acest lucru este de obicei considerat sigur deoarece domeniile de acces împiedică citirea zonelor de memorie care nu sunt responsabilitatea procesului care rulează. Accesul programului la o zonă de memorie validă are loc instantaneu, în timp ce accesul la o locație care nu este deținută implică generarea unei excepții și nu sunt date date procesului despre locația memoriei. Utilizarea adresării virtuale vă permite să mapați datele partajate între programe ca locații de memorie accesibile procesului, în acest mod, de exemplu, există o metodă simplă și rapidă care permite procesului să acceseze informații din sistemul de operare.
  • Conducta de date și execuția speculativă sunt tehnici utilizate de procesor pentru a executa în mod eficient instrucțiuni. Acestea sunt utilizate pentru a paralela executarea instrucțiunilor (pentru a îmbunătăți timpii de procesare) și, dacă este necesar, pentru a modifica ordinea de execuție a instrucțiunilor, atât timp cât rezultatul final rămâne corect. Procesoarele moderne sunt echipate cu multe unități de procesare care pot funcționa în paralel și un programator (componentă care decide modul de utilizare a unităților de procesare) dezvoltat pentru a maximiza utilizarea unităților de procesare. Planificatorul analizează instrucțiunile care urmează să fie procesate și decide dacă unele instrucțiuni pot fi executate în paralel (prin atribuirea fiecărei instrucțiuni unei anumite unități de procesare) și, dacă este necesar din motive de eficiență, poate modifica și ordinea de execuție a instrucțiunilor, menținând în același timp finalul rezultat.corect. Dacă planificatorul trebuie să gestioneze o instrucțiune de ramură (dacă C este 0 executați instrucțiunea A altfel instrucțiunea B) programatorul poate decide să execute ambele instrucțiuni (A și B) și să păstreze instrucțiunile suspendate până când se cunoaște valoarea lui C. Când C este cunoscut, instrucțiunea corectă va fi păstrată, în timp ce cea executată din greșeală va fi anulată. Această rută este de obicei mai rapidă decât așteptarea pentru a cunoaște valoarea reală a lui C (vezi și predicția ramurilor ).
  • Memoria cache a procesorului , o cantitate modestă de memorie foarte rapidă utilizată de procesor pentru stocarea datelor utilizate frecvent. Din punctul de vedere al procesorului, memoria calculatorului este foarte lentă și analiza execuției programului a arătat că de cele mai multe ori procesorul procesează întotdeauna aceleași zone de memorie. Aceste considerații au condus la crearea cache-ului, o mică zonă de memorie foarte rapidă în interiorul procesorului, unde sunt salvate copii ale datelor utilizate frecvent, pentru a elimina majoritatea acceselor la memoria lentă a sistemului. Când procesorul citește date din memorie, o copie a acestuia este salvată în cache pentru a avea o copie pregătită pentru orice acces ulterior.

Vulnerabilitatea Meltdown

De obicei, operațiunile descrise mai jos ar fi considerate sigure. Ele stau la baza sistemelor de operare și a procesoarelor moderne. Meltdown exploatează modul în care aceste operațiuni interacționează pentru a ocoli sistemele de securitate ale procesorului și pentru a accesa zonele de memorie rezervată. Pentru a înțelege Meltdown, trebuie avut în vedere faptul că datele sunt mapate într-un spațiu de adrese virtuale (cea mai mare parte a spațiului de adrese nu ar trebui să fie accesibilă programului, deoarece nu este de competența sa) și analizând modul în care CPU se comportă atunci când încearcă să accesați o locație rezervată. Procesul investigat rulează pe o versiune de Windows sau Linux vulnerabilă la Meltdown pe un procesor pe 64 de biți vulnerabil la atac. [12]

  1. Ca orice alt proces sau sistem de operare în sine, procesul rău intenționat are acces la un spațiu virtual de adrese de miliarde de gigaocteți. Ignorând verificările de securitate, spațiul de memorie este organizat pentru a maximiza eficiența. Cea mai mare parte a spațiului va fi liberă și nealocată, unele zone vor fi utilizate de procesul rău intenționat pentru a-și aloca datele și din nou pentru eficiență, celelalte procese și datele sistemului de operare vor fi, de asemenea, mapate în același spațiu. Acest lucru este de obicei considerat sigur deoarece controalele incluse în procesor împiedică procesul rău intenționat să acceseze zone de memorie care nu se află în sfera sa de competență. Încercarea de a citi o zonă rezervată de memorie face ca o excepție să fie aruncată și citirea datelor să eșueze.
  2. Atunci când un proces încearcă să acceseze o zonă de memorie rezervată, instrucțiunea de citire a datelor este programată în conducta procesorului, la fel ca toate instrucțiunile. Instrucțiunea este trimisă către o unitate de procesare și adresa de memorie care trebuie citită este trimisă managerului de memorie, astfel încât datele să fie disponibile la executarea instrucțiunii. La un moment dat (înainte ca instrucțiunea să fie finalizată), verificarea privilegiului de acces va eșua, apoi execuția instrucțiunii va fi anulată, nu se vor emite date, se va arunca o excepție și procesorul va trece la următoarea instrucțiune.
  3. În teorie, dacă managerul de memorie, controlul privilegiilor, planificatorul și unitatea de execuție sunt fără erori, abordarea descrisă a fost întotdeauna considerată sigură. Datele din heap au fost de fapt citite de procesor, dar executarea instrucțiunii a fost blocată înainte de finalizarea acesteia și nu au fost furnizate date procesului rău intenționat. Cu toate acestea, Meltdown a arătat că această abordare nu este atât de sigură pe cât se credea anterior.
  4. În primele faze ale executării instrucțiunilor, planificatorul generează două operații, controlul privilegiilor și trimiterea operației către unitatea de calcul. În așteptarea verificării privilegiilor, unitatea de procesare solicită, de asemenea, citirea datelor din memorie, astfel încât instrucțiunea să poată fi executată cât mai curând posibil. În cazul procesului rău intenționat, verificarea privilegiilor va eșua, astfel încât instrucțiunea nu va fi executată, dar datele vor fi citite din memorie și stocate în memoria cache a procesorului. De obicei, aceasta nu este o problemă de securitate, deoarece datele cache nu sunt accesibile fără a trece prin verificarea privilegiilor.

    Cu toate acestea, Meltdown intervine aici: [12]

  5. Cache-ul din CPU nu poate fi citit direct de procesele neautorizate, deoarece trăiește în interiorul procesorului, dar este susceptibil la un atac temporizat (o formă de atac secundar ) care permite unui proces rău intenționat să determine dacă o anumită locație de memorie este prezentă în cache, dar ceea ce nu vă permite să citiți conținutul cache-ului. Dacă datele sunt stocate în cache, o a doua instrucțiune care solicită datele va avea acces instantaneu la date fără a fi nevoie să aștepte ca acestea să fie recuperate din memorie. Procesul rău intenționat poate măsura această diferență în timpii de acces și poate defini dacă o locație de memorie este sau nu în cache, aceasta nu este de obicei considerată o problemă de securitate, dar Meltdown împreună cu unele particularități ale setului de instrucțiuni X86 reușește să aibă un acces complet la toată memoria cartografiat de sistem.
  6. O instrucțiune poate solicita accesarea memoriei prin furnizarea adresei în diferite moduri, una dintre aceste modalități este adresarea indirectă. Instrucțiunea poate solicita procesorului să utilizeze valoarea locației de memorie X pentru a calcula a doua adresă Y, a citi valoarea Y și a returna valoarea citită la instrucțiune. Meltdown folosește adresarea indirectă pentru a efectua un atac secundar pentru a defini valoarea unei anumite adrese de memorie. Presupunând că doriți să citiți valoarea adresei 2000 (adresa interzisă procesului rău intenționat și despre care presupunem că este 4) și să știți că aceasta conține o valoare cuprinsă între 1 și 5, puteți efectua atacul în felul următor. Începe prin a solicita citirea unei locații de memorie folosind o adresare indirectă, de exemplu 5000 plus valoarea locației 2000. Citirea va eșua, deoarece procesul rău intenționat nu poate accesa locația 2000 din cauza lipsei de privilegii, dar așa cum am menționat anterior, locația 5000 plus valoarea 2000 (5004 în exemplul nostru) va fi citită și memorată în cache de procesor de către managerul de memorie. Apoi procesul rău intenționat va citi valorile locațiilor de memorie de la 5001 la 5005 și va observa că, în timp ce 5001, 5002, 5003 și 5005 au un anumit timp de acces, locația 5004 va fi citită într-un timp mult mai scurt (deoarece este deja prezent în cache) și apoi va presupune că valoarea 2000 este 4.
  7. În teorie, dacă 2000 este o adresă nevalidă pentru procesul rău intenționat, o încercare de a citi această locație ar trebui să eșueze și să nu ofere informații procesului rău intenționat.
  8. În practică, atacul Meltdown arată că, pentru a obține performanțe ridicate, citirea datelor din memorie este pornită atunci când privilegiile de acces nu au fost încă verificate și că, prin urmare, datele sunt citite în memorie și salvate în cache chiar și fără privilegiile de acces corecte acces. Prin urmare, accesul nevalabil oferă în continuare informații procesului rău intenționat (datele stocate în cache) și aceste informații pot fi utilizate de procesul rău intenționat pentru a descoperi conținutul locației interzise.

Meltdown poate utiliza această tehnică pentru a citi rapid orice locație a memoriei computerului, astfel încât un proces rău intenționat poate citi date confidențiale ale sistemului de operare, parole, date criptate sau orice tip de date din memorie. În practică, deoarece atacul lateral este relativ lent, este mai rapid să se extragă câte un bit din celulele de memorie. Citirea câte un bit pe rând, citirea unei locații pe 8 biți (un octet) necesită 2 × 8 = 16 citiri cache în timp ce încercarea de a citi întregul octet ar necesita 2 × 256 = 512 citiri cache.

Plasture

Pe 6 decembrie 2017, Apple a lansat un patch cu versiunea 10.13.2 pentru macOS .

Pe 3 ianuarie 2018, Microsoft a lansat o actualizare de securitate de urgență pentru Windows 10 , care a fost disponibilă și pentru alte versiuni de Windows acceptate în următoarea Patch Tuesday . [13] [14]

Dezvoltatorii kernel-ului Linux au dezvoltat o serie de patch-uri, numite kernel page-table izolation , pentru versiunile 4.15 și 4.14.11. [15] [16]

În funcție de model și de sarcina efectuată de procesor, soluțiile necesare pot încetini computerele cu procesoare afectate cu 5% până la 30% [17] sau pot provoca pierderi semnificative de performanță. [4]

Pe 8 ianuarie 2018, Intel a lansat o actualizare de microcod pentru unele procesoare, pentru sistemele de operare Linux. [18]

Patch-urile au fost, de asemenea, lansate pentru DragonflyBSD [19] [20] , OpenBSD [21] [22] [23] , FreeBSD [24] [25] și NetBSD care dezvoltă SVS ( Spațiu virtual separat ) ca o măsură de contracarare pentru topire [26] ] [27]

OpenIndiana a atenuat topirea datorită KPTI (Kernel Page Table Isolation) [28]

Notă

  1. ^ (EN) Cade Metz și Nicole Perlroth, cercetătorii descoperă două defecte majore în computerele lumii , în New York Times, 2018. Accesat la 4 ianuarie 2018.
  2. ^ LKML: Tom Lendacky: [PATCH] x86 / cpu, x86 / pti: Nu activați PTI pe procesoarele AMD , la lkml.org . Adus pe 4 ianuarie 2018 .
  3. ^ Cazul misterios al patch-urilor de izolare a tabelelor de pagini Linux , pe dulceața python . Adus la 4 ianuarie 2018 (arhivat din original la 4 ianuarie 2018) .
  4. ^ A b (EN) Performanța jocurilor Linux nu pare afectată de funcția P86 x86 - Phoronix de pe www.phoronix.com. Adus pe 4 ianuarie 2018 .
  5. ^ A b (EN) Meltdown și Spectre , pe meltdownattack.com. Adus pe 5 ianuarie 2018 .
  6. ^ (EN) Defectele masive ale procesorului ajung la numele: Meltdown și Spectre - ceea ce trebuie să știți , în TechSpot. Adus pe 5 ianuarie 2018 .
  7. ^ SecurityTeam / KnowledgeBase / SpectreAndMeltdown - Ubuntu Wiki , la wiki.ubuntu.com . Adus pe 5 ianuarie 2018 .
  8. ^ Spectre și topire: Patch-urile sunt cu adevărat obligatorii?
  9. ^ Execuție speculativă și metodă de analiză a canalului lateral de predicție indirectă a ramurilor
  10. ^ Lista completă a CPU-urilor vulnerabile la topire / Spectre Rev. 4.0
  11. ^ (RO) Dezvăluirea cercetării privind executarea speculativă a procesorului , Amazon Web Services, Inc .. Adus pe 4 ianuarie 2018 .
  12. ^ a b c Moritz Lipp, Michael Schwarz, Daniel Gruss, Thomas Prescher, Werner Haas, Stefan Mangard, Paul Kocher, Daniel Genkin, Yuval Yarom și Mike Hamburg, Meltdown ( PDF ), pe Meltdown și Spectre , p. 8 sec. 5.1. Adus pe 4 ianuarie 2018 .
  13. ^ Microsoft emite o actualizare de urgență Windows pentru erorile de securitate ale procesorului , în The Verge . Adus pe 4 ianuarie 2018 .
  14. ^ (EN) Defecțiunea de proiectare a procesorului Intel cu scurgeri de memorie a nucleului forțează reproiectarea Linux, Windows . Adus pe 4 ianuarie 2018 .
  15. ^ KAISER: ascunderea nucleului din spațiul utilizatorului [LWN.net] , pe lwn.net . Adus pe 4 ianuarie 2018 .
  16. ^ Starea curentă a izolării tabelului paginii kernelului [LWN.net] , pe lwn.net . Adus pe 4 ianuarie 2018 .
  17. ^ Eroare gravă în procesoarele Intel, remediază performanța impactului? , în Tom's Hardware . Adus pe 4 ianuarie 2018 .
  18. ^ (EN) Intel lansează microcoduri CPU Linux pentru a remedia erorile de topire și spectru în computerul Bleeping. Adus la 17 ianuarie 2018 .
  19. ^ (EN) DragonFlyBSD Lands Vulnerability Fixes For Meltdown - Phoronix , on www.phoronix.com. Adus la 1 februarie 2018 .
  20. ^ Actualizare informație Matthew Dillon, Meltdown și Spectre , la lists.dragonflybsd.org , Sâ 6 ianuarie 23:11:07 PST 2018. Adus 1 februarie 2018 .
  21. ^ (RO) OpenBSD este atenuat pentru vulnerabilitatea procesorului de topire - Phoronix , pe www.phoronix.com. Adus la 25 februarie 2018 .
  22. ^ „CVS: cvs.openbsd.org: src” - MARC , pe marc.info . Adus la 25 februarie 2018 .
  23. ^ (EN) OpenBSD lansează patch-ul Meltdown . Adus la 25 februarie 2018 .
  24. ^ (RO) [bază] Revizuirea 329462 , pe svnweb.freebsd.org. Adus la 25 februarie 2018 .
  25. ^ (EN) FreeBSD În cele din urmă devine atenuat pentru Spectre & Meltdown - Phoronix , pe www.phoronix.com. Adus la 25 februarie 2018 .
  26. ^ NetBSD Blog , la blog.netbsd.org . Adus la 25 februarie 2018 .
  27. ^ (EN) NetBSD are SVS pentru a atenua topirea, încă lucrează la Spectre - Phoronix , pe www.phoronix.com. Adus la 25 februarie 2018 .
  28. ^ (RO) OpenIndiana are acum suport KPTI pentru testarea pentru a atenua topirea - Phoronix pe www.phoronix.com. Adus pe 12 martie 2018 .

Elemente conexe

linkuri externe

Securitate IT Portal de securitate IT : accesați intrările Wikipedia care se ocupă cu securitatea IT