Meltdown (zranitelnost)

Meltdown  je zranitelnost hardwarového postranního kanálu , která se vyskytuje u řady mikroprocesorů, zejména těch vyrobených společností Intel a architektury ARM . Meltdown používá chybu implementace spekulativního provádění příkazůna některých procesorech Intel a ARM (ale ne AMD [1] [2] ), což způsobuje, že procesor ignoruje oprávnění stránky při spekulativním provádění instrukcí pro čtení paměti.

Tato chyba zabezpečení umožňuje místnímu útočníkovi (při spouštění speciálního programu) získat neoprávněný přístup pro čtení do privilegované paměti (paměti používané jádrem operačního systému). [3] [4] [5] .

Útoku bylo přiděleno ID zranitelnosti CVE CVE-2017-5754 [6] .

Historie

Útok Meltdown nezávisle na sobě objevili výzkumníci z Google Project Zero , Cyberus Technology a Graz University of Technology v polovině roku 2017 a několik měsíců o něm vedou uzavřené diskuse a opravy. Zveřejnění podrobností a oprav bylo naplánováno na 9. ledna 2018, ale podrobnosti o zranitelnosti byly zveřejněny 4. ledna 2018 ve stejnou dobu jako útok Spectre , a to kvůli publikacím novinářů The Register [7] , kteří se dozvěděli o opravy KAISER/KPTI z mailing listu linuxového jádra [8] .

Stručný popis

Schopnost útoku je generována třemi mechanismy, které vám umožňují zrychlit procesor, a každý z těchto mechanismů samostatně nevytváří zranitelnost:

Moderní vysoce výkonné mikroprocesory mají schopnost spouštět nový kód bez čekání na dokončení předchozích akcí. Pokud například instrukce větvení čeká na přijetí dat z hlavní paměti, aby se mohla rozhodnout, nečinný procesor může být zaneprázdněn prováděním jednoho ze směrů větve (a v některých architekturách dokonce obou větví) v naději, že bude mít výsledek výpočet připraven v době, kdy je znám výsledek větve. Tato technika se nazývá spekulativní provádění. Pokud je odhad úspěšný, spekulativně provedený kód změní viditelné hodnoty registrů (architektonický stav) a provádění pokračuje. Pokud byla větev provádění předpokládána nesprávně, instrukce z ní nemění viditelný stav procesoru a skutečné provádění se vrátí do bodu větvení.

Vzhledem ke zvláštnostem některých implementací se při spekulativním provádění skutečně provádí přístup do paměti bez ohledu na přístupová práva provádějícího procesu k této paměti; to umožňuje provádění příkazů bez čekání na odezvu paměťového řadiče . Pokud se tato větev spekulativního provádění později ukáže jako správná, bude vyvolána výjimka chybného přístupu do paměti. Pokud je větev vyřazena jako chybná, nebude vyvolána žádná výjimka; ale proměnné načtené do mezipaměti během provádění větve zůstanou v mezipaměti. V souladu s tím autoři útoku navrhli metodu analýzy přítomnosti dat v mezipaměti (na základě doby přístupu k nim), která, pokud je útok správně zkonstruován, může poskytnout představu o tom, co se stalo ve vyřazeném spekulativní exekuční větev a obsah privilegovanější paměti.

Mechanismus

Útok lze provést přibližně následovně. [9]

Chcete-li přečíst bit 0 z chráněné oblasti paměti Ap , útočník:

  1. Vymaže mezipaměť pro adresy A0 u a A1 u (z adresního prostoru pro čtení/zápis útočníka)
  2. Větve podle stavu známého útočníkovi
  3. Ve větvi kódu, která by podle konvence neměla být nikdy provedena (ale bude provedena při spekulativním spuštění):
  4. Přečte hodnotu V(A p ) z chráněné oblasti paměti na adrese A p
  5. Provedením bitové operace s hodnotou V(A p ) získáme adresu A0 u nebo A1 u
  6. Čte paměť na dané adrese (A0 u nebo A1 u )

Během normálního provádění způsobí krok 4 bezpečnostní chybu, ale během spekulativního provádění na zranitelných architekturách je tato chyba dočasně ignorována a pokračuje kroky 5 a 6. V důsledku toho se do mezipaměti načte jedna z hodnot – z adresa A0 u nebo A1 u . Po zjištění stavu větvení procesor zruší všechny výsledky kroků 4, 5 a 6, ale stav mezipaměti zůstane nezměněn.

Poté útočníkovi stačí přečíst „jejich“ adresy A0 u a A1 u , změřit k nim přístupovou dobu. A na základě měření určete, který bit (0 nebo 1) byl přečten z chráněné oblasti paměti A p .

Opakováním tohoto algoritmu pro další bity hodnoty V(A p ) můžete získat celý obsah chráněné oblasti paměti jako celku.

Vliv

Podle výzkumníků „je potenciálně náchylný k útoku jakýkoli mikroprocesor Intel, který implementuje spouštění mimo provoz , tedy jakýkoli procesor od roku 1995 (s výjimkou Intel Itanium a Intel Atom vydaných před rokem 2013).“ [deset]

Očekává se, že zranitelnost ovlivní největší světové poskytovatele cloudu , zejména Amazon Web Services (AWS) [11] , Google Cloud Platform , Microsoft Azure . Poskytovatelé cloudu umožňují různým uživatelům spouštět své aplikace na sdílených fyzických serverech. Protože programy mohou zpracovávat citlivá uživatelská data, bezpečnostní a izolační opatření poskytovaná procesorem se používají k zabránění neoprávněnému přístupu k privilegované paměti (používané jádrem OS). Útok Meltdown při použití na systémech, které neimplementují softwarovou ochranu (záplaty), umožňuje obejít některá opatření na izolaci paměti a získat přístup pro čtení do paměti operačního systému.

Jeden z autorů publikace o zranitelnosti uvádí, že paravirtualizační systémy ( Xen ) a kontejnerové systémy ( Docker , LXC , Openvz atd.) jsou také náchylné k útoku [12] . Plně virtualizované systémy umožňují uživatelským aplikacím číst pouze paměť hostujícího jádra, nikoli paměť hostitelského systému.

Opravy softwaru

Existuje spolehlivý softwarový způsob boje proti útoku, ve kterém tabulka stránek uživatelských procesů nezobrazuje stránky paměti jádra OS (s výjimkou malého počtu oblastí služeb paměti jádra), technologie Kernel page-table isolation (KPTI) . Zároveň se volání se změnou úrovně oprávnění (zejména systémová volání) poněkud zpomalí, protože se musí dodatečně přepnout na jinou tabulku stránek, která popisuje celou paměť jádra OS.

V některých případech může oprava snížit výkon určitých funkcí, jako jsou aplikace, které velmi často provádějí systémová volání. Zároveň testy Phoronix neukazují žádné zpomalení her běžících na Linuxu s patchem KPTI [17] [18] .

Viz také

Poznámky

  1. Gleixner, Thomas x86/cpu, x86/pti: Nepovolujte PTI na procesorech AMD (3. ledna 2018). Získáno 4. ledna 2018. Archivováno z originálu 28. června 2020.
  2. Lendacky, Tom [tip:x86/pti x86/cpu, x86/pti: Nepovolovat PTI na procesorech AMD] . lkml.org . Staženo 3. ledna 2018. Archivováno z originálu 3. srpna 2020.
  3. Metz, Cade . Výzkumníci objevili dvě hlavní chyby ve světových počítačích  (anglicky) , The New York Times  (2018). Archivováno z originálu 3. ledna 2018. Staženo 4. ledna 2018.
  4. Procesory Intel mají bezpečnostní chybu a oprava by mohla zpomalit PC , The Verge . Archivováno z originálu 3. ledna 2018. Staženo 4. ledna 2018.
  5. Herní výkon Linuxu se nezdá ovlivněný x86 PTI Work -  Phoronix . www.phoronix.com . Staženo 3. ledna 2018. Archivováno z originálu 20. února 2021.
  6. CVE-2017-5754 Systémy s mikroprocesory využívající spekulativní spouštění a predikci nepřímé větve mohou umožnit neoprávněné zpřístupnění informací útočníkovi s přístupem místního uživatele prostřednictvím analýzy postranního kanálu datové mezipaměti. (nedostupný odkaz) . Staženo 6. 1. 2018. Archivováno z originálu 6. 1. 2018. 
  7. Archivovaná kopie . Získáno 4. 1. 2018. Archivováno z originálu 7. 4. 2018.
  8. Porozumění Meltdown & Spectre: Co vědět o nových exploitech, které ovlivňují prakticky všechny CPU . Staženo 6. 1. 2018. Archivováno z originálu 6. 1. 2018.
  9. Meltdown (PDF). Meltdown a Spectre 8 sec. 5.1. Datum přístupu: 4. ledna 2018. Archivováno z originálu 4. ledna 2018.
  10. Meltdown and Spectre: Které systémy jsou Meltdown ovlivněny?  (anglicky) . meltdownattack.com . Staženo 3. 1. 2018. Archivováno z originálu 3. 1. 2018.
  11. Zveřejnění výzkumu spekulativního provedení procesoru  . Amazon Web Services Inc. . Staženo 3. 1. 2018. Archivováno z originálu 4. 1. 2018.
  12. Cyberus Technology Blog – Meltdown . Datum přístupu: 4. ledna 2018. Archivováno z originálu 4. ledna 2018.
  13. Warren, Tom Microsoft vydává nouzovou aktualizaci Windows pro chyby zabezpečení procesoru . The Verge . Vox Media, Inc. Získáno 3. ledna 2018. Archivováno z originálu 3. ledna 2018.
  14. Chyba v designu procesoru Intel s únikem paměti jádra nutí Linux, redesign Windows  , The Register . Archivováno z originálu 7. dubna 2018. Staženo 4. ledna 2018.
  15. Corbet, Jonathon KAISER: skrytí jádra před uživatelským prostorem . LWN (15. listopadu 2017). Staženo 3. ledna 2018. Archivováno z originálu 8. prosince 2020.
  16. Corbet, Jonathon Aktuální stav izolace tabulky stránek jádra . LWN (20. prosince 2017). Staženo 3. 1. 2018. Archivováno z originálu 4. 1. 2018.
  17. Herní výkon NVIDIA minimálně ovlivněný opravami KPTI - Phoronix
  18. Testy Linux KPTI pomocí Linuxu 4.14 vs. 4,9 vs. 4.4 - Phoronix

Odkazy