Spectru (vulnerabilitate de securitate)

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

Spectre este o vulnerabilitate hardware în implementarea predicției ramurilor în microprocesoarele moderne de execuție speculativă [1] , care permite proceselor rău intenționate să acceseze conținutul memorat al altor programe . Au fost publicate două ID-uri CVE legate de Spectre: CVE-2017-5753 și CVE-2017-5715 . [2] [3]

Istorie

Spectrul a fost descoperit independent de cercetătorii Google Project Zero și de alți cercetători care au colaborat cu Paul Kocher . Acesta a fost făcut public împreună cu o altă vulnerabilitate, Meltdown , pe 3 ianuarie 2018 . [4]

Ulterior, continuând să analizăm problema, au apărut alte vulnerabilități strâns legate de Spectre, precum SpecterNG, SpecterRSB și Spectre Prime. [5]

Chiar și după ani, noi versiuni ale acestui defect continuă să fie descoperite, pe baza cache-ului micro-op. [6]

Impact

În 2018, aproape toate computerele sunt afectate de Spectre, inclusiv desktop-uri , laptopuri și dispozitive mobile . Spectre este, de fapt, ambele procesoare Intel ca AMD și ARM . [7] [8] Intel a răspuns la rapoartele de vulnerabilitate printr-o versiune oficială. [9] Conform unei versiuni AMD, vulnerabilitatea unei variante Spectre nu afectează procesoarele AMD și prezintă un risc aproape zero din cauza diferențelor arhitecturale ale procesoarelor sale.

Deși este mai dificil de exploatat decât Meltdown, Spectre poate fi mai dificil de corectat. Analiza inițială speculează că ar putea fi necesare schimbări semnificative în arhitectura procesorului pentru a rezolva problema permanent.

În plus, impactul Specter asupra cloud computing poate fi mai mare decât Meltdown. În timp ce Meltdown permite aplicațiilor neautorizate să citească din memoria privilegiată care se află pe același server, Spectre poate utiliza un hipervizor pentru a transmite date către sistemul care rulează pe acesta. [10]

Operațiune

Spectre este o vulnerabilitate care forțează programele care rulează să acceseze locații de memorie care teoretic ar trebui să fie inaccesibile programului.

Procesoarele moderne pentru a oferi performanțe ridicate sunt echipate cu o serie de unități de calcul care funcționează în paralel. Pentru a face cea mai bună utilizare a acestor unități de calcul, procesoarele fac uneori presupuneri cu privire la instrucțiunile care trebuie executate ( execuție speculativă ) pe baza a ceea ce s-a întâmplat în trecut. Când ipotezele sunt corecte, procesorul a efectuat deja o parte din lucrări și acest lucru accelerează execuția programelor; dacă ipotezele se dovedesc a fi incorecte, procesorul șterge instrucțiunile executate din greșeală. Executarea acestor instrucțiuni inutile modifică o serie întreagă de stări interne ale procesorului, dar aceasta, atunci când anulează instrucțiunile, nu corectează stările interne modificate ci doar cele care pot influența direct execuția programului. Spectre, folosind aceste stări interne „incorecte”, extrage informații confidențiale din CPU.

În loc să fie o singură vulnerabilitate, articolul care descrie Spectre [11] discută o întreagă clasă [12] de posibile vulnerabilități.

Toate aceste vulnerabilități se bazează pe utilizarea unui efect secundar al execuției speculative , o tehnică utilizată de procesoare pentru a reduce / masca latența memoriei computerului și, astfel, pentru a oferi performanțe mai bune. Spectre se concentrează în mod specific pe predicția ramurilor , o tehnică de execuție speculativă. Spre deosebire de vulnerabilitatea Meltdown, Spectre nu se bazează pe o caracteristică tehnică a unui singur procesor sau a unei familii de procesoare, ci este o idee generală aplicată unui domeniu foarte larg și care poate fi utilizată în moduri diferite.

Punctul de plecare al articolului este atacul lateral bazat pe timpii de acces la memorie [13] aplicat previziunii ramurilor a procesoarelor moderne care implementează execuția din ordine a instrucțiunilor. La nivel arhitectural, procesoarele implementează mecanisme care elimină datele procesate din greșeală atunci când procesoarele fac predicții pe ramurile greșite. Cu toate acestea, aceste predicții eronate au efecte secundare nefuncționale (cum ar fi încărcarea datelor inutile în memoria cache a procesorului) care modifică în continuare starea internă a procesorului. Aceste modificări pot modifica ulterior executarea instrucțiunilor ulterioare într-un mod nefuncțional (prin urmare, corectitudinea rezultatelor operațiunilor nu este afectată, dar aspecte nefuncționale, cum ar fi, de exemplu, timpii de execuție ai operațiilor pot varia). Dacă modificările nefuncționale sunt vizibile pentru programele potențial rău intenționate, am putea folosi aceste modificări nefuncționale pentru a deduce date confidențiale, date pe care programul rău intenționat nu ar trebui să le poată determina, în ciuda faptului că mecanismele de protecție a datelor și de compartimentare a memoriei funcționează conform specificațiilor.

Articolul Spectre este împărțit în 4 faze:

  1. Prima fază discută modul în care funcționează mecanismul de predicție a ramurilor în procesoarele moderne și modul în care un program proiectat corect poate antrena unitatea de predicție a ramurilor pentru a detecta corect o anumită ramură sau nu. În acest fel, un succes sau un eșec al predicției poate fi indus la comandă.
  2. A doua fază descrie modul în care este posibil să se definească în mod fiabil dacă o anumită dată este prezentă sau nu în memoria cache a procesorului. În acest fel, o caracteristică nefuncțională (memoria cache este o componentă care ar trebui să fie transparentă pentru funcționarea programelor) devine o caracteristică care poate fi utilizată de un program pentru a extrage informații interne din CPU, informații pe care un program nu ar trebui să le poată a deduce.
  3. A treia fază care folosește exemple de cod JavaScript arată cum este posibil să scrieți un program care rulează în interiorul sandbox- ului browserului care poate citi date în afara sandbox-ului și care, teoretic, nu ar trebui să fie accesibil. Codul profită de execuția speculativă și de capacitatea de a defini dacă datele sunt stocate în cache pe CPU sau nu. Ideea generală este că programul rău intenționat printr-o buclă sau alt fragment de cod este capabil să inducă o predicție incorectă a ramurilor și că acest lucru forțează procesorul să acceseze zone de memorie care, în teorie, nu ar trebui să fie accesibile. La un moment dat, procesorul va identifica predicția greșită și va anula instrucțiunile executate, dar în orice caz procesorul va fi citit deja datele confidențiale și va fi luat măsuri pentru a le salva în cache. Ulterior, datele (prezente în memoria cache a procesorului) sunt extrase cu atacuri adecvate, cum ar fi cea descrisă de vulnerabilitatea Meltdown.
  4. Ultima parte a articolului generalizează conceptul arătând cum pot fi utilizate și alte stări nefuncționale ale procesorului și descrie exemple neevidente, cum ar fi timpii de arbitraj cu autobuzul.

Principala diferență dintre Meltdown și Spectre este că Meltdown profită de specificul arhitectural al procesoarelor Intel, în timp ce Spectre este mult mai generic și, prin urmare, poate afecta orice procesor. Meltdown profită de faptul că procesoarele Intel efectuează verificări a posteriori asupra privilegiilor de acces ale instrucțiunilor în memorie și, prin urmare, CPU poate fi forțat să acceseze locații interzise. În timpul executării instrucțiunilor care solicită date în memorie, procesorul începe verificarea privilegiilor de acces și în paralel citește datele din memorie. Dacă instrucțiunea nu are privilegiile corecte pentru a accesa memoria, procesorul blochează instrucțiunea, dar în orice caz accesul la memorie a fost deja efectuat și datele au fost salvate în cache. Odată ajuns în cache, pot fi extrase printr-un alt atac. Spectre arată în schimb modul în care folosind predicția ramurilor puteți forța procesorul să acceseze zonele de memorie rezervate care, odată copiate în cache, pot fi extrase prin același atac folosit de Meltdown. Atacul Spectre necesită doar ca procesorul să aibă o memorie cache și o unitate de predicție a ramurilor, două condiții foarte frecvente în procesoarele moderne; în plus, în timp ce atacul Meltdown poate fi blocat folosind tehnica KAISER , atacul Spectre nu are o singură soluție pentru a elimina problema. [14]

Plasture

O diagramă care demonstrează disponibilitatea actualizărilor față de Spectre și Meltdown pentru dispozitivele Android și iOS.
Acest grafic demonstrează disponibilitatea actualizărilor față de Spectre și Meltdown pentru dispozitivele Android și iOS.

Atenuările studiate, în timp ce reduc problema, nu pot rezolva complet problema, precum și au un impact mai mult sau mai puțin important pe baza tipului de context de utilizare. [15]

PC, MacOS și Linux

Deoarece Spectre acoperă un număr mare de vulnerabilități, este probabil ca acesta să nu poată fi remediat cu un singur patch . În timp ce se lucrează deja la remedierea unor cazuri specifice ale vulnerabilității, site-ul original Spectre și Meltdown afirmă că Spectre nu este ușor de remediat și că va trebui să ne ocupăm de el pentru o lungă perioadă de timp.

O soluție importantă a fost studiată de Google și ia numele de Reptoline deoarece are un impact mai mic asupra performanței, utilizat inițial numai în Linux, apoi a fost utilizat în sistemele Windows [16]

Smartphone-uri

În timp ce Apple a lansat actualizări care atenuează problema pe toate modelele de pe iPhone 5S și mai târziu, diferiți producători de dispozitive care rulează Android nu vor lansa actualizări pentru modelele mai vechi de 24 de luni. [17]

Notă

  1. ^ (EN) Un defect critic Intel încalcă cea mai de bază securitate pentru computere din WIRED. Adus pe 5 ianuarie 2018 .
  2. ^ (EN) Cade Metz și Nicole Perlroth, cercetătorii descoperă două defecte majore în computerele lumii , în New York Times, 2018. Adus pe 5 ianuarie 2018.
  3. ^ Procesoarele Intel au o eroare de securitate, iar soluția ar putea încetini computerele , în The Verge . Adus pe 5 ianuarie 2018 .
  4. ^ (EN) Meltdown și Spectre , pe spectreattack.com. Adus pe 5 ianuarie 2018 .
  5. ^ Spectre și topire: Patch-urile sunt cu adevărat obligatorii?
  6. ^ Descoperite noi variante ale exploitului Spectre
  7. ^ (EN) Meltdown și Spectre , pe spectreattack.com. Adus pe 5 ianuarie 2018 .
  8. ^ Defectele de securitate pun în pericol practic toate telefoanele și computerele în Reuters , joi 04 ianuarie 11:52:36 UTC 2018. Adus pe 5 ianuarie 2018 .
  9. ^ newsroom.intel.com , https://newsroom.intel.com/news/intel-responds-to-security-research-findings/ .
  10. ^ (EN) Thomas Fox-Brewster, Vulnerabilitățile Intel masive tocmai au aterizat - Și fiecare utilizator de computer de pe planetă poate fi necesar să se actualizeze în Forbes. Adus pe 5 ianuarie 2018 .
  11. ^ Spectre Attacks: Exploiting Speculative Execution ( PDF ), pe spectreattack.com , 2018 ( arhivat 3 ianuarie 2018) .
  12. ^ Citirea memoriei privilegiate cu un canal lateral , pe googleprojectzero.blogspot.fi , 2018 ( arhivat 4 ianuarie 2018) .
  13. ^ Aterizarea atenuărilor pentru o nouă clasă de atac de sincronizare , pe blog.mozilla.org , 2018 ( arhivat 4 ianuarie 2018) .
  14. ^ Meltdown ( PDF ), pe meltdownattack.com , 2018 ( arhivat 4 ianuarie 2018) .
  15. ^ Vulnerabilitățile CPU, Spectre și frații săi vor rămâne o problemă
  16. ^ Retpoline ajunge pe Windows 10, protecție Spectre și performanță mai bună
  17. ^ Peste 50% din smartphone-urile italiene nu sunt sigure pentru serviciile bancare online , pe recompro.it .

Elemente conexe

  • Meltdown - O vulnerabilitate hardware în microprocesoarele Intel care permite proceselor neautorizate să acceseze memoria privilegiată.

linkuri externe

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