Topire (vulnerabilitate de securitate) - Meltdown (security vulnerability)

Topire
Topire cu text.svg
Logo-ul folosit de echipa care a descoperit vulnerabilitatea
Identificatori CVE CVE - 2017-5754
Data descoperirii Ianuarie 2018 ; Acum 3 ani ( 01-08-2018 )
Hardware afectat Microprocesoare Intel x86 , procesoare IBM POWER și unele microprocesoare bazate pe ARM
Site-ul web meltdownattack .com

Meltdown este o vulnerabilitate hardware care afectează microprocesoarele Intel x86 , procesoarele IBM POWER și unele microprocesoare bazate pe ARM . Permite unui proces necinstit să citească toată memoria , chiar și atunci când nu este autorizat să o facă.

Topirea afectează o gamă largă de sisteme. La momentul dezvăluirii, aceasta a inclus toate dispozitivele care rulează, cu excepția celor mai recente și corecționate versiuni de iOS , Linux , macOS sau Windows . În consecință, multe servere și servicii cloud au fost afectate, precum și o majoritate potențială de dispozitive inteligente și dispozitive încorporate care utilizează procesoare bazate pe ARM (dispozitive mobile, televizoare inteligente, imprimante și altele), inclusiv o gamă largă de echipamente de rețea. O soluție pur software pentru Meltdown a fost evaluată ca încetinind computerele între 5 și 30% în anumite sarcini de lucru specializate, deși companiile responsabile de corectarea software-ului exploitului raportează un impact minim din testele generale de referință.

Meltdown a primit un ID comun de vulnerabilități și expuneri CVE - 2017-5754 , cunoscut și sub numele de Rogue Data Cache Load (RDCL), în ianuarie 2018. A fost dezvăluit împreună cu un alt exploit, Specter , cu care împarte unele, dar nu toate caracteristicile. Vulnerabilitățile Meltdown și Spectre sunt considerate „catastrofale” de către analiștii de securitate. Vulnerabilitățile sunt atât de severe încât cercetătorii de securitate au crezut inițial că rapoartele sunt false.

Au fost publicate mai multe proceduri pentru a proteja computerele de acasă și dispozitivele conexe de vulnerabilitățile de securitate Meltdown și Spectre. Patch-urile de topire pot produce pierderi de performanță. S-a raportat că patch-urile Spectre reduc semnificativ performanța, în special pe computerele mai vechi; pe noile platforme Core de generația a opta, au fost măsurate scăderi de performanță de referință de 2-14%. La 18 ianuarie 2018, au fost raportate reporniri nedorite, chiar și pentru cipurile Intel mai noi, datorită patch-urilor Meltdown și Spectre. Cu toate acestea, potrivit Dell : „Niciun exploatare„ din lumea reală ”a acestor vulnerabilități [adică Meltdown și Spectre] nu a fost raportată până în prezent [26 ianuarie 2018], deși cercetătorii au produs dovezi ale conceptelor.” În plus, prevenirile recomandate includ: „adoptarea promptă a actualizărilor de software, evitarea hyperlinkurilor și site-urilor web nerecunoscute, descărcarea fișierelor sau aplicațiilor din surse necunoscute ... urmărirea protocoalelor de parolă securizate ... [folosirea] software-ului de securitate pentru a ajuta la protejarea împotriva malware-ului (prevenirea avansată a amenințărilor) software sau antivirus). "

La 25 ianuarie 2018, au fost prezentate starea actuală și posibilele considerente viitoare în rezolvarea vulnerabilităților Meltdown și Spectre.

La 15 martie 2018, Intel a raportat că își va reproiecta CPU - urile pentru a ajuta la protejarea împotriva Meltdown și a vulnerabilităților legate de Spectre (în special, Meltdown și Specter-V2, dar nu Specter-V1) și se așteaptă să lanseze noile procesoare reproiectate mai târziu în 2018 La 8 octombrie 2018, se spune că Intel a adăugat atenuări hardware și firmware în ceea ce privește vulnerabilitățile Spectre și Meltdown la ultimele sale procesoare.

Prezentare generală

Meltdown exploatează o condiție de rasă , inerentă proiectării multor procesoare moderne . Acest lucru se întâmplă între accesul la memorie și verificarea privilegiilor în timpul procesării instrucțiunilor . În plus, combinată cu un atac de canal lateral al cache-ului , această vulnerabilitate permite unui proces să ocolească verificările de privilegii normale care izolează procesul de exploatare de accesarea datelor aparținând sistemului de operare și altor procese în execuție. Vulnerabilitatea permite unui proces neautorizat să citească date de la orice adresă care este mapată la spațiul de memorie al procesului curent . Deoarece instrucțiunile de conducte sunt în procesatoarele afectate, datele de la o adresă neautorizată vor fi aproape întotdeauna încărcate temporar în memoria cache a procesorului în timpul execuției în afara ordinii - din care datele pot fi recuperate. Acest lucru se poate întâmpla chiar dacă instrucțiunea de citire originală eșuează din cauza verificării privilegiilor sau dacă nu produce niciodată un rezultat lizibil.

Deoarece multe sisteme de operare mapează memoria fizică, procesele kernelului și alte procese care rulează în spațiul utilizatorului în spațiul de adrese al fiecărui proces, Meltdown face efectiv posibil ca un proces fals să citească orice memorie fizică, kernel sau a altor procese memorate - indiferent dacă ar trebui să poată face acest lucru. Apărarea împotriva Meltdown ar necesita evitarea utilizării cartografierii memoriei într-un mod vulnerabil la astfel de exploatări (adică o soluție bazată pe software) sau evitarea condiției de bază a cursei (adică o modificare a microcodului CPU sau calea de execuție).

Vulnerabilitatea este viabilă pe orice sistem de operare în care datele privilegiate sunt mapate în memoria virtuală pentru procesele neprivilegiate - care include multe sisteme de operare actuale. Topirea ar putea avea impact asupra unei game mai largi de computere decât cele identificate în prezent, deoarece există puține sau deloc variații în familiile de microprocesoare utilizate de aceste computere.

Un atac de topire nu poate fi detectat dacă este efectuat.

Istorie

La 8 mai 1995, o lucrare numită „Arhitectura procesorului Intel 80x86: capcane pentru sisteme de securitate” publicată la Simpozionul IEEE din 1995 privind securitatea și confidențialitatea a avertizat împotriva unui canal de sincronizare ascuns în memoria cache a procesorului și a tamponului de traducere lookaside (TLB). Această analiză a fost realizată sub auspiciile Programului de evaluare a produselor de încredere (TPEP) al Agenției Naționale de Securitate .

În iulie 2012, nucleul XNU de la Apple (utilizat în macOS , iOS și tvOS , printre altele) a adoptat randomizarea aspectului spațiului de adresă al nucleului (KASLR) odată cu lansarea OS X Mountain Lion 10.8. În esență, baza sistemului, inclusiv extensiile kernel-ului său ( kext-uri ) și zonele de memorie, este mutată aleatoriu în timpul procesului de boot, pentru a reduce vulnerabilitatea sistemului de operare la atacuri.

În martie 2014, nucleul Linux a adoptat KASLR pentru a atenua scurgerile de adrese.

La 8 august 2016, Anders Fogh și Daniel Gruss au prezentat „Utilizarea comportamentului procesorului nedocumentat pentru a vedea modul kernel și a sparge KASLR în proces” la conferința Black Hat 2016.

La 10 august 2016, Moritz Lipp și colab. de la TU Graz a publicat „ARMageddon: Cache Attacks on Mobile Devices” în cadrul celui de-al 25-lea simpozion de securitate USENIX . Chiar dacă sa concentrat pe ARM, a pus bazele vectorului de atac.

La 27 decembrie 2016, la 33C3 , Clémentine Maurice și Moritz Lipp de la TU Graz și-au prezentat discuția „Ce ar putea merge prost cu <insert x86 instruction here>? venire.

La 1 februarie 2017, numerele CVE 2017-5715, 2017-5753 și 2017-5754 au fost atribuite Intel.

La 27 februarie 2017, Bosman și colab. de la Vrije Universiteit Amsterdam și-au publicat concluziile despre modul în care randomizarea aspectului aspectului spațiului (ASLR) ar putea fi abuzată pe arhitecturile bazate pe cache la Simpozionul NDSS.

La 27 martie 2017, cercetătorii de la Universitatea Tehnologică Graz din Austria au dezvoltat o dovadă a conceptului care ar putea prelua cheile RSA de pe enclavele Intel SGX care rulează pe același sistem în decurs de cinci minute, folosind anumite instrucțiuni CPU în locul unui temporizator cu granulație fină pentru exploatați canalele laterale DRAM cache .

În iunie 2017, sa constatat că KASLR are o clasă mare de vulnerabilități noi. Cercetările efectuate la Universitatea Tehnologică din Graz au arătat cum să rezolve aceste vulnerabilități prin împiedicarea accesului la pagini neautorizate. O prezentare cu privire la tehnica KAISER rezultată a fost trimisă la congresul Black Hat din iulie 2017, dar a fost respinsă de organizatori. Cu toate acestea, această lucrare a condus la izolarea kernel-tabel de pagini (KPTI, cunoscut inițial sub numele de KAISER) în 2017, care a fost confirmat pentru a elimina o clasă mare de bug-uri de securitate, inclusiv o anumită protecție limitată împotriva Meltdown-ului care nu a fost încă descoperit - fapt confirmat de către autorii Meltdown. În iulie 2017, cercetarea făcută publică pe site-ul web CyberWTF de către cercetătorul de securitate Anders Fogh a subliniat utilizarea unui atac de sincronizare cache pentru a citi datele spațiului kernelului prin observarea rezultatelor operațiilor speculative condiționate de date preluate cu privilegii invalide.

Dezghetul a fost descoperit , în mod independent de Jann Horn de la Google e Zero proiect , Werner Haas și Thomas Prescher de la Cyberus Technology, precum Daniel Gruss, Moritz Lipp, Ștefan Mangard și Michael Schwarz de la Graz University of Technology . Aceleași echipe de cercetare care au descoperit Meltdown au descoperit și Spectre.

În octombrie 2017, suportul Kernel ASLR pe amd64 a fost adăugat la curentul NetBSD, făcând din NetBSD primul sistem BSD cu sursă deschisă totală care acceptă randomizarea aspectului spațiului de adresă al kernelului (KASLR). Cu toate acestea, Apple Darwin , parțial open source , care stă la baza macOS și iOS (printre altele), se bazează pe FreeBSD ; KASLR a fost adăugat la nucleul său XNU în 2012, după cum sa menționat mai sus.

La 14 noiembrie 2017, cercetătorul în securitate Alex Ionescu a menționat public modificări în noua versiune de Windows 10 care ar cauza o anumită degradare a vitezei fără a explica necesitatea modificărilor, făcând doar referire la schimbări similare în Linux .

După ce vânzătorii de hardware și software afectați au fost informați cu privire la această problemă la 28 iulie 2017, cele două vulnerabilități au fost făcute publice în comun, la 3 ianuarie 2018, cu câteva zile înainte de data de lansare coordonată din 9 ianuarie 2018, pe măsură ce site-urile de știri au început să raporteze despre angajamente. către kernel-ul Linux și e-mailuri către lista sa de corespondență. Ca urmare, patch-urile nu erau disponibile pentru unele platforme, cum ar fi Ubuntu , atunci când vulnerabilitățile au fost dezvăluite.

La 28 ianuarie 2018, Intel a raportat că a împărtășit știri despre vulnerabilitățile de securitate Meltdown și Spectre cu companiile de tehnologie chineză înainte de a notifica guvernul SUA cu privire la defectele sale.

Vulnerabilitatea de securitate a fost numită Meltdown deoarece „vulnerabilitatea topește practic limitele de securitate care sunt în mod normal impuse de hardware”.

La 8 octombrie 2018, se spune că Intel a adăugat atenuări hardware și firmware în ceea ce privește vulnerabilitățile Spectre și Meltdown la ultimele sale procesoare.

În noiembrie 2018, au fost dezvăluite două noi variante ale atacurilor. Cercetătorii au încercat să compromită mecanismele de protecție a procesorului folosind codul pentru a exploata punctele slabe ale protecției memoriei și ale BOUNDinstrucțiunilor. De asemenea, au încercat, dar nu au reușit să exploateze operațiile CPU pentru alinierea memoriei, împărțirea la zero, modurile de supraveghere, limitele segmentelor, codurile opționale nevalide și codul neexecutabil.

Mecanism

Meltdown se bazează pe o condiție de cursă a procesorului care poate apărea între executarea instrucțiunii și verificarea privilegiilor. Pe scurt, execuția instrucțiunii lasă efecte secundare care constituie informații care nu sunt ascunse procesului prin verificarea privilegiilor. Procesul care efectuează Meltdown folosește apoi aceste efecte secundare pentru a deduce valorile datelor mapate de memorie , ocolind verificarea privilegiilor. Următorul oferă o prezentare generală a exploitului și a mapării memoriei care este ținta sa. Atacul este descris în termenii unui procesor Intel care rulează Microsoft Windows sau Linux , principalele ținte de testare utilizate în lucrarea originală, dar afectează și alte procesoare și sisteme de operare, inclusiv macOS (aka OS X), iOS și Android .

Fundal - design modern CPU

Procesoarele moderne de calculator folosesc o varietate de tehnici pentru a obține niveluri ridicate de eficiență. Patru caracteristici utilizate pe scară largă sunt deosebit de relevante pentru Meltdown:

  • Memoria virtuală (paginată) , cunoscută și sub numele de mapare a memoriei - utilizată pentru a face accesul la memorie mai eficient și pentru a controla ce procese pot accesa ce zone ale memoriei.
    Un computer modern rulează de obicei multe procese în paralel. Într-un sistem de operare, cum ar fi Windows sau Linux , fiecărui proces i se dă impresia că singur are o utilizare completă a memoriei fizice a computeruluiși se poate descurca cu el după cum vrea. În realitate, va fi alocată memoria de utilizat din memoria fizică, care acționează ca un „bazin” de memorie disponibilă, atunci când încearcă mai întâi să utilizeze orice adresă de memorie dată (încercând să citească sau să scrie pe ea). Acest lucru permite ca mai multe procese, inclusiv nucleul sau sistemul de operare în sine, să conviețuiască pe același sistem, dar își păstrează activitatea și integritatea individuală fără a fi afectate de alte procese în funcțiune și fără a fi vulnerabile la interferențe sau scurgeri de date neautorizate cauzate de o proces necinstit.
  • Niveluri de privilegii sau domenii de protecție - oferă un mijloc prin care sistemul de operare poate controla ce procese sunt autorizate să citească ce zone ale memoriei virtuale.
    Deoarece memoria virtuală permite unui computer să se refere la mult mai multă memorie decât va conține vreodată din punct de vedere fizic, sistemul poate fi accelerat prin „maparea” fiecărui proces și a memoriei lor în uz - de fapt toată memoria tuturor proceselor active - în fiecare memoria virtuală a procesului. În unele sisteme, tot memoria fizică este mapată, de asemenea, pentru viteză și eficiență suplimentare. Acest lucru este de obicei considerat sigur, deoarece sistemul de operare se poate baza pe controale de privilegii încorporate în procesor în sine, pentru a limita zonele de memorie pe care un anumit proces este permis să le acceseze. O încercare de a accesa memoria autorizată va avea succes imediat, iar o încercare de a accesa memoria neautorizată va provoca o excepție și va anula instrucțiunea de citire, care va eșua. Fie procesul de apelare, fie sistemul de operare direcționează ce se va întâmpla dacă se încearcă citirea din memoria neautorizată - de obicei provoacă o stare de eroare și procesul care a încercat să execute citirea va fi încheiat. Deoarece citirile neautorizate nu fac de obicei parte din execuția normală a programului, este mult mai rapid să folosiți această abordare decât să întrerupeți procesul de fiecare dată când execută o funcție care necesită accesarea memoriei privilegiate, pentru a permite acelei memorii să fie mapate într-o adresă lizibilă. spaţiu.
  • Instrucțiuni de conducte și execuție speculativă - utilizate pentru a permite instrucțiunilor să se execute în cel mai eficient mod posibil - dacă este necesar, permițându-le să rămână fără comandă sau în paralel pe diferite unități de procesare din CPU - atâta timp cât rezultatul final este corect.
    Procesoarele moderne conțin în mod obișnuit numeroase unități de execuție separateși un planificator care decodează instrucțiunile și decide, în momentul în care sunt executate, cel mai eficient mod de a le executa. Acest lucru ar putea implica decizia că două instrucțiuni pot fi executate în același timp, sau chiar în afara comenzii, pe diferite unități de execuție (cunoscute sub numele de „instrucțiuni de canalizare”). Atâta timp cât rezultatul corect este încă atins, acest lucru maximizează eficiența, menținând în funcțiune toate unitățile de execuție ale procesorului cât mai mult posibil. Unele instrucțiuni, cum ar fi ramurile condiționate , vor duce la unul dintre cele două rezultate diferite, în funcție de o afecțiune. De exemplu, dacă o valoare este 0, va întreprinde o acțiune și altfel va face o acțiune diferită. În unele cazuri, este posibil ca CPU să nu știe încă ce ramură să ia. Acest lucru se poate datora faptului că o valoare nu este memorată în cache. În loc să aștepte să afle opțiunea corectă, CPU poate continua imediat (execuție speculativă). Dacă da, poate ghici opțiunea corectă (execuție predictivă) sau chiar poate lua ambele (execuție dornică). Dacă execută opțiunea incorectă, CPU va încerca să elimine toate efectele presupunerii sale incorecte. (Vezi și: predictor de ramură )
  • Memoria cache a procesorului - o cantitate modestă de memorie în cadrul procesorului utilizat pentru a se asigura că poate funcționa la viteză mare, pentru a accelera accesul la memorie și pentru a facilita executarea „inteligentă” a instrucțiunilor într-un mod eficient.
    Din perspectiva procesorului, memoria fizică a computerului este lentă. De asemenea, instrucțiunile pe care le rulează un procesor sunt foarte deseori repetitive sau accesează de mai multe ori aceeași memorie sau o memorie similară. Pentru a maximiza utilizarea eficientă a resurselor procesorului, procesoarele moderne au adesea o cantitate modestă de memorie foarte rapidă pe chip, cunoscută sub numele de „ cache cache ”. Când datele sunt accesate sau o instrucțiune este citită din memoria fizică, o copie a acestor informații este salvată în mod obișnuit în memoria cache a CPU în același timp. Dacă procesorul are nevoie ulterior de aceeași instrucțiune sau conținut din memorie, îl poate obține cu o întârziere minimă din propria cache, mai degrabă decât să aștepte ca o cerere legată de memoria fizică să aibă loc.

Exploatarea topirii

În mod obișnuit, mecanismele descrise mai sus sunt considerate sigure. Acestea oferă baza pentru majoritatea sistemelor de operare și procesoarelor moderne. Meltdown exploatează modul în care aceste caracteristici interacționează pentru a ocoli controalele de privilegii fundamentale ale procesorului și pentru a accesa date privilegiate și sensibile din sistemul de operare și din alte procese. Pentru a înțelege Meltdown, luați în considerare datele care sunt mapate în memoria virtuală (o mare parte din care procesul nu ar trebui să poată accesa) și modul în care CPU răspunde atunci când un proces încearcă să acceseze memoria neautorizată. Procesul rulează pe o versiune vulnerabilă de Windows , Linux sau macOS , pe un procesor pe 64 de biți de tip vulnerabil. Aceasta este o combinație foarte comună în aproape toate computerele desktop, notebook-uri, laptopuri, servere și dispozitive mobile.

  1. CPU întâlnește o instrucțiune care accesează valoarea, A, la o adresă interzisă procesului de sistemul de memorie virtuală și verificarea privilegiilor. Datorită execuției speculative, instrucțiunea este programată și expediată către o unitate de execuție. Această unitate de execuție programează apoi atât verificarea privilegiilor, cât și accesul la memorie.
  2. CPU întâlnește o instrucțiune care accesează adresa Baza + A, cu Baza aleasă de atacator. Această instrucțiune este, de asemenea, programată și expediată către o unitate de execuție.
  3. Verificarea privilegiilor informează unitatea de execuție că adresa valorii, A, implicată în acces este interzisă procesului (conform informațiilor stocate de sistemul de memorie virtuală) și, astfel, instrucțiunea ar trebui să eșueze și instrucțiunile ulterioare să nu aibă efecte . Deoarece aceste instrucțiuni au fost executate în mod speculativ, totuși, datele de la Baza + A ar fi putut fi stocate în cache înainte de verificarea privilegiilor - și este posibil să nu fi fost anulate de către unitatea de execuție (sau orice altă parte a procesorului). Dacă acesta este într-adevăr cazul, simplul fapt de a ascunde în cache constituie o scurgere de informații în sine. În acest moment, Meltdown intervine.
  4. Procesul execută un atac de sincronizare executând instrucțiuni care fac referire direct la operanzi de memorie. Pentru a fi eficiente, operanzii acestor instrucțiuni trebuie să fie la adrese care acoperă adresa posibilă, Baza + A, a operandului instrucțiunii respinse. Deoarece datele de la adresa menționată de instrucțiunea respinsă, Base + A, au fost totuși memorate în cache, o instrucțiune care face referire direct la aceeași adresă se va executa mai repede. Procesul poate detecta această diferență de timp și poate determina adresa, Baza + A, care a fost calculată pentru instrucțiunea respinsă - și astfel poate determina valoarea A la adresa de memorie interzisă.

Meltdown folosește această tehnică în ordine pentru a citi fiecare adresă de interes la viteză mare și, în funcție de alte procese în desfășurare, rezultatul poate conține parole, date de criptare și orice alte informații sensibile, de la orice adresă a oricărui proces care există în harta sa de memorie . În practică, deoarece atacurile de pe canalul lateral al cache-ului sunt lente, este mai rapid să extrageți datele câte un bit pe rând (doar 2 × 8 = 16 atacuri de cache necesare pentru a citi un octet, mai degrabă decât 256 de pași dacă a încercat să citească toți cei 8 biți la o singura data).

Impact

Impactul Meltdown depinde de designul procesorului, de designul sistemului de operare (în special de modul în care folosește paginarea de memorie) și de capacitatea unei părți rău intenționate de a executa orice cod pe sistemul respectiv, precum și de valoarea oricărui datele pe care le-ar putea citi dacă sunt capabile să execute.

  • CPU - Multe dintre cele mai utilizate procesoare moderne de la sfârșitul anilor 1990 până la începutul anului 2018 au designul exploatabil necesar. Cu toate acestea, este posibil să-l atenuați în cadrul proiectării procesorului. Un procesor care ar putea detecta și evita accesul la memorie pentru instrucțiuni neprivilegiate, sau nu a fost susceptibil la atacuri de sincronizare cache sau probe similare, sau a eliminat intrările cache la detectarea fără privilegii (și nu a permis altor procese să le acceseze până nu este autorizat) ca parte a abandonarea instrucțiunii nu ar putea fi exploatată în acest mod. Unii observatori consideră că toate soluțiile software vor fi „soluții alternative” și singura soluție adevărată este actualizarea proiectelor CPU afectate și eliminarea punctelor slabe de bază.
  • Sistem de operare - Majoritatea sistemelor de operare utilizate pe scară largă și cu scop general utilizează niveluri de privilegii și mapare a memoriei virtuale ca parte a proiectării lor. Meltdown poate accesa doar acele pagini care sunt mapate de memorie, astfel încât impactul va fi cel mai mare dacă toate memoria și procesele active sunt mapate de memorie în fiecare proces și au cel mai mic impact dacă sistemul de operare este proiectat astfel încât aproape nimic nu poate fi atins în acest mod. Un sistem de operare ar putea fi, de asemenea, capabil să atenueze software-ul într-o anumită măsură, asigurându-se că încercările de sondare de acest fel nu vor dezvălui nimic util. Sistemele de operare moderne folosesc maparea memoriei pentru a crește viteza, astfel încât aceasta ar putea duce la pierderi de performanță.
  • Mașină virtuală - Un atac Meltdown nu poate fi folosit pentru a ieși dintr-o mașină virtuală, adică în mașinile complet virtualizate spațiul utilizatorului pentru oaspeți poate citi în continuare din spațiul kernel pentru oaspeți, dar nu din spațiul kernel gazdă. Bugul permite citirea memoriei din spațiul de adrese reprezentat de același tabel de pagini , ceea ce înseamnă că bug-ul nu funcționează între tabelele virtuale. Adică, tabelele de pagină invitat-gazdă nu sunt afectate, doar invitat-la-același-vizitator sau gazdă-la-gazdă și, desigur, gazdă-la-oaspete, deoarece gazda poate accesa deja paginile de oaspeți. Aceasta înseamnă că diferitele mașini virtuale de pe același hipervizor complet virtualizatnu pot accesa datele celuilalt, dar utilizatorii diferiți din aceeași instanță invitată pot accesa datele celuilalt.
  • Dispozitiv încorporat - Printre cipurile vulnerabile se numără cele realizate de ARM și Intel concepute pentru dispozitive independente și încorporate, cum ar fi telefoane mobile, televizoare inteligente, echipamente de rețea, vehicule, hard disk-uri, control industrial și altele asemenea. Ca și în cazul tuturor vulnerabilităților, dacă o terță parte nu poate rula codul pe dispozitiv, vulnerabilitățile sale interne rămân inexploatabile. De exemplu, un procesor ARM dintr-un telefon mobil sauun dispozitiv „inteligent” al Internetului obiectelor poate fi vulnerabil, dar același procesor folosit într-un dispozitiv care nu poate descărca și rula un cod nou, cum ar fi un aparat de bucătărie sau un controler de hard disk, se crede că să nu fie exploatabil.

Impactul specific depinde de implementarea mecanismului de traducere a adreselor în sistemul de operare și de arhitectura hardware de bază. Atacul poate dezvălui conținutul oricărei memorii care este mapat într-un spațiu de adrese de utilizator, chiar dacă este protejat altfel. De exemplu, înainte de a fi introdusă izolarea tabelului paginii kernelului , majoritatea versiunilor Linux au mapat toată memoria fizică în spațiul de adrese al fiecărui proces de spațiu utilizator; adresele mapate sunt (în cea mai mare parte) protejate, făcându-le ilizibile din spațiul utilizatorului și accesibile doar atunci când sunt trecute în nucleu. Existența acestor mapări face trecerea mai rapidă către și de la nucleu, dar este nesigură în prezența vulnerabilității Meltdown, deoarece conținutul tuturor memoriei fizice (care poate conține informații sensibile, cum ar fi parolele aparținând altor procese sau nucleului), poate apoi să fie obținut prin metoda de mai sus prin orice proces fără privilegii din spațiul utilizatorului.

Potrivit cercetătorilor, „fiecare procesor Intel care implementează execuția în afara ordinii este potențial afectat, ceea ce este efectiv fiecare procesor din 1995 (cu excepția Intel Itanium și Intel Atom înainte de 2013)”. Intel a răspuns vulnerabilităților de securitate raportate printr-o declarație oficială.

Se așteaptă ca vulnerabilitatea să aibă un impact asupra furnizorilor principali de cloud , precum Amazon Web Services (AWS) și Google Cloud Platform . Furnizorii de cloud permit utilizatorilor să execute programe pe aceleași servere fizice pe care ar putea fi stocate date sensibile și se bazează pe garanțiile oferite de CPU pentru a preveni accesul neautorizat la locațiile de memorie privilegiate unde sunt stocate aceste date, o caracteristică pe care Meltdown o exploatează.

Lucrarea originală raportează că paravirtualizarea ( Xen ) și containerele precum Docker , LXC și OpenVZ sunt afectate. Aceștia raportează că atacul asupra unei mașini complet virtualizate permite spațiului utilizatorului invitat să citească din memoria kernelului invitat, dar nu să citească din spațiul kernel gazdă.

Hardware afectat

Vulnerabilitatea Meltdown afectează în primul rând microprocesoarele Intel , dar sunt afectate și microprocesoarele ARM Cortex-A75 și IBM. Vulnerabilitatea nu afectează microprocesoarele AMD . Când efectul Meltdown a fost făcut public pentru prima dată, Intel a contracarat faptul că defectele afectează toate procesoarele, dar AMD a negat acest lucru, spunând că „credem că procesoarele AMD nu sunt susceptibile din cauza utilizării protecțiilor la nivel de privilegiu în arhitectura de paginare”.

Cercetătorii au indicat că vulnerabilitatea Meltdown este exclusivă pentru procesoarele Intel, în timp ce vulnerabilitatea Spectre poate afecta unele procesoare Intel , AMD și ARM . Cu toate acestea, ARM a anunțat că unii dintre procesoarele lor erau vulnerabili la Meltdown. Google a raportat că orice procesor Intel din 1995, cu execuție defectă, este potențial vulnerabil la vulnerabilitatea Meltdown (aceasta exclude procesorele Itanium și Intel Atom înainte de 2013 ). Intel a introdus execuția speculativă la procesoarele lor cu microarhitectura familiei P6 a Intel cu microprocesorul Pentium Pro IA-32 în 1995.

ARM a raportat că majoritatea procesorilor lor nu sunt vulnerabili și a publicat o listă cu procesoarele specifice care sunt afectate. ARM Cortex-A75 core este afectată în mod direct de către ambele vulnerabilități Meltdown și Spectre și Cortex-R7 , Cortex-R8 , Cortex-A8 , Cortex-A9 , Cortex-A15 , Cortex-A17 , Cortex-A57 , Cortex-A72 și Cortex -Nucleele A73 sunt afectate doar de vulnerabilitatea Spectre. Acest lucru contrazice unele afirmații timpurii făcute despre vulnerabilitatea Meltdown ca fiind doar Intel.

O mare parte din telefoanele Android curente de nivel mediu utilizează Cortex-A53 sau Cortex-A55 într-un aranjament octa-core și nu sunt afectate de vulnerabilitatea Meltdown sau Spectre, deoarece nu efectuează o execuție în afara comenzii. Aceasta include dispozitive cu Qualcomm Snapdragon 630, Snapdragon 626, Snapdragon 625 și toate procesoarele Snapdragon 4xx bazate pe nuclee A53 sau A55. De asemenea, niciun computer Raspberry Pi nu este vulnerabil la Meltdown sau Spectre, cu excepția noului Raspberry Pi 4, care utilizează procesorul ARM Cortex-A72.

IBM a confirmat, de asemenea, că procesoarele sale de putere sunt afectate de ambele atacuri ale procesorului. Red Hat a anunțat public că exploatările sunt și pentru sistemele IBM System Z , POWER8 și POWER9 .

Oracle a declarat că sistemele SPARC bazate pe V9 (procesoarele T5, M5, M6, S7, M7, M8, M10, M12) nu sunt afectate de Meltdown, deși procesoarele SPARC mai vechi care nu mai sunt acceptate pot fi afectate.

Atenuare

Atenuarea vulnerabilității necesită modificări ale codului nucleului sistemului de operare, inclusiv izolarea sporită a memoriei kernelului de procesele în modul utilizator. Dezvoltatorii kernel-ului Linux s-au referit la această măsură ca kernel page-table isolation (KPTI). Patch-urile KPTI au fost dezvoltate pentru kernel-ul Linux 4.15 și au fost lansate ca backport în kernel-urile 4.14.11, 4.9.75. Red Hat a lansat actualizările de kernel la distribuțiile lor Red Hat Enterprise Linux versiunea 6 și versiunea 7. CentOS a lansat deja actualizările de kernel la CentOS 6 și CentOS 7.

Apple a inclus atenuări în macOS 10.13.2, iOS 11.2 și tvOS 11.2. Acestea au fost lansate cu o lună înainte ca vulnerabilitățile să fie făcute publice. Apple a declarat că watchOS și Apple Watch nu sunt afectate. Atenuări suplimentare au fost incluse într-o actualizare Safari, precum și o actualizare suplimentară pentru macOS 10.13 și iOS 11.2.2.

Microsoft a lansat o actualizare de urgență pentru Windows 10 , 8.1 și 7 SP1 pentru a aborda vulnerabilitatea la 3 ianuarie 2018, precum și Windows Server (inclusiv Server 2008 R2 , Server 2012 R2 și Server 2016 ) și Windows Embedded Industry . Aceste patch-uri sunt incompatibile cu software-ul terț antivirus care utilizează apeluri kernel neacceptate; sistemele care rulează software antivirus incompatibil nu vor primi această actualizare sau orice actualizări viitoare de securitate Windows până când nu vor fi reparate, iar software-ul adaugă o cheie de registru specială care confirmă compatibilitatea sa. S-a constatat că actualizarea a cauzat probleme la sistemele care rulează anumite procesoare AMD, unii utilizatori raportând că instalările lor Windows nu au pornit deloc după instalare. La 9 ianuarie 2018, Microsoft a întrerupt distribuția actualizării către sistemele cu procesoare afectate în timp ce investighează și abordează această eroare.

S-a raportat că implementarea KPTI poate duce la o reducere a performanței procesorului, unii cercetători susținând o pierdere de până la 30% a performanței, în funcție de utilizare, deși Intel a considerat că aceasta este o exagerare. S-a raportat că generațiile de procesoare Intel care acceptă identificatorii de context de proces (PCID), o caracteristică introdusă cu Westmere și disponibilă pe toate cipurile de la arhitectura Haswell în continuare, nu au fost la fel de susceptibile la pierderi de performanță în cadrul KPTI ca și generațiile mai vechi care nu au. Acest lucru se datorează faptului că spălarea selectivă a tamponului de vizualizare (TLB) activat de PCID (numit și numărul de spațiu de adresă sau ASN sub arhitectura Alpha) permite izolarea comportamentului TLB partajat crucial pentru exploatare între procese, fără spălarea constantă a întregului cache - motivul principal al costului atenuării.

O declarație a Intel a spus că „orice impact asupra performanței depinde de volumul de muncă și, pentru utilizatorul mediu al computerului, nu ar trebui să fie semnificativ și va fi atenuat în timp”. Phoronix a comparat mai multe jocuri populare pe PC pe un sistem Linux cu procesorul Intel Lake Lake Core i7-8700K și patch-urile KPTI instalate și a constatat că orice impact asupra performanței este puțin sau inexistent. În alte teste, inclusiv parametrii de referință sintetici I / O și bazele de date, cum ar fi PostgreSQL și Redis , s-a găsit un impact asupra performanței, reprezentând chiar și zeci de procente pentru unele sarcini de lucru. Mai recent, au fost raportate testări conexe, care implică FX- urile AMD și procesoarele Intel Sandybridge și Ivybridge .

Au fost publicate mai multe proceduri pentru a ajuta la protejarea computerelor de acasă și a dispozitivelor conexe împotriva vulnerabilităților de securitate Meltdown și Spectre. Patch-urile de topire pot produce pierderi de performanță. La 18 ianuarie 2018, au fost raportate reporniri nedorite, chiar și pentru chips-uri Intel mai noi, datorită patch-urilor Meltdown și Spectre. Potrivit Dell : „Nu s-au raportat până în prezent [26 ianuarie 2018] exploatări„ din lumea reală ”ale acestor vulnerabilități [adică Meltdown și Spectre], deși cercetătorii au produs dovezi ale conceptelor.” În plus, prevenirile recomandate includ: „adoptarea promptă a actualizărilor de software, evitarea hyperlinkurilor și site-urilor web nerecunoscute, descărcarea fișierelor sau aplicațiilor din surse necunoscute ... urmărirea protocoalelor de parolă securizate ... [folosirea] software-ului de securitate pentru a ajuta la protejarea împotriva malware-ului (prevenirea avansată a amenințărilor) software sau antivirus). "

La 25 ianuarie 2018, au fost prezentate starea actuală și posibile considerații viitoare în rezolvarea vulnerabilităților Meltdown și Spectre. În martie 2018, Intel a anunțat că a proiectat remedieri hardware pentru viitoarele procesoare numai pentru Meltdown și Spectre-V2, dar nu și pentru Spectre-V1. Vulnerabilitățile au fost atenuate de un nou sistem de partiționare care îmbunătățește separarea la nivel de proces și privilegiu. Compania a anunțat, de asemenea, că a dezvoltat soluții de soluție Intel Microcode pentru procesoare care datează din 2013 și că intenționează să le dezvolte pentru majoritatea procesoarelor din 2007, inclusiv Core 2 Duo ; cu toate acestea, o lună mai târziu, în aprilie 2018, a anunțat că respinge planul respectiv pentru o serie de familii de procesoare și că niciun procesor mai devreme de 2008 nu va avea un patch disponibil.

La 8 octombrie 2018, se spune că Intel a adăugat atenuări hardware și firmware în ceea ce privește vulnerabilitățile Spectre și Meltdown la ultimele sale procesoare.

Rezumatul atenuărilor pe Microsoft Windows
Vulnerabilitate CVE Numele exploatării Numele vulnerabilității publice Windows se schimbă Schimbări firmware
(Spectru) 2017-5753 Varianta 1 Bounds Check Bypass (BCB) Recompilarea cu un nou compilator
Hardened Browser pentru a preveni exploatarea din JavaScript
Nu
(Spectru) 2017-5715 Varianta 2 Injecție țintă ramificată (ITO) Instrucțiuni noi ale procesorului care elimină speculațiile ramurilor da
Topire 2017-5754 Varianta 3 Rogue Data Cache Load (RDCL) Izolați tabelele de pagini cu kernel și modul utilizator Nu

Vezi si

Referințe

linkuri externe