Spectre and Meltdown: Neistota v srdci moderného dizajnu CPU

  • Sep 06, 2023

Novoobjavené chyby v mnohých procesoroch ohrozujú výkonové zásahy a pretrvávajúce problémy s bezpečnosťou. Tu je návod, ako fungujú, ako sa tam dostali a čo znamenajú pre budúcnosť.

Video: Váš antivírus sa môže dostať do konfliktu s opravou Windows Meltdown-Spectre

Meltdown-Spectre

  • Zákonodarcovia: Prečo boli nedostatky pred priemyslom utajené?
  • Linux a Intel sa pomaly predierajú k patchu Spectre
  • Dell a HP vytiahli opravu chýb od Intelu
  • Intel: Zastavte opravy firmvéru až do odvolania
  • Linus Torvalds kritizuje záplaty Intelu
  • Apple backportuje opravu Meltdown na staršie verzie macOS
  • Nové aktualizácie prinášajú opravu pre počítače AMD, ktoré nemožno spustiť
  • Každý správca systému Windows musí teraz urobiť štyri veci
  • Aktualizácia kritickej opravy Oracle ponúka opravy proti útokom na procesor

2. januára 2018 sa objavili správy o novej triede bezpečnostných chýb v moderných procesoroch. Problémy, ktoré sú známe v rámci čipového a softvérového priemyslu od polovice roku 2017 a sú hlboko zakorenené v základnom dizajne procesorov.

Google Project Zero bezpečnostný výskumný tím - jeden z niekoľkých, ktorý objavil nedostatky - v určitej forme existuje vo väčšine procesorov Intel od roku 1995. Niektoré procesory AMD a ARM boli tiež hlásené ako ovplyvnené, ale úplný zoznam čipov s akou triedou problému zatiaľ neexistuje ( Malinový koláč, však, je bezpečný).

Dvom triedam problému sa venuje najväčšia pozornosť kvôli ich preukázateľnému potenciálu na využitie: Roztopenie a Spectre.

Meltdown môže a bol chránený proti in najnovšie aktualizácie systému macOS, Windows, a Operačné systémy odvodené od Linuxu, aj keď niekedy s výrazným dopadom na výkon. Proti spektru je však oveľa ťažšie brániť sa, pričom väčšina priemyselných analytikov súhlasí s týmto čipom budú potrebné redizajny -- hoci v čase písania tohto článku Intel tvrdí, že má systém a firmvér náplasti čo spôsobuje, že jeho spracovatelia sú „imunní“. To sa ešte musí potvrdiť a ak je to pravda, aké sú dôsledky na výkon. AMD vydala nový firmvér, ktorý údajne zakáže chyba funkcie čipu: praktické dôsledky tejto aktualizácie mikrokódu opäť čakajú na odhalenie.

Prvou lekciou Meltdown and Spectre je teda základná bezpečnostná hygiena: uistite sa, že bez ohľadu na váš hardvér je operačný systém, ktorý na ňom beží, plne opravený a aktuálny.

Ako sa to stalo?

Obrázok: Getty Images/iStockphoto

Meltdown a Spectre sú príklady jedného z najbežnejších technologických kompromisov: výkon verzus bezpečnosť.

Predtým, ako sa pustíme do podrobností, môže pomôcť analógia. Povedzme, že chcete vedieť, či sa vo vatikánskych archívoch nachádza určitá kniha, ktorej existencia je popieraná. Ak kniha existuje, potom je dostupná len niektorým vysokokvalifikovaným teológom, čo vy nie ste.

Vatikánski archivári sú veľmi zaneprázdnení a vždy trvá dlho, kým niečo nájdu, takže vyvinuli spôsob, ako ušetriť čas. Namiesto toho, aby ste skontrolovali svoje prihlasovacie údaje pred odoslaním prisluhovača do zásobníkov, aby získal vašu požiadavku, prisluhovač vyráža, zatiaľ čo recepcia kontroluje pápežskú databázu, aby zistila, či máte povolené vidieť knihu, o ktorú ste požiadali pre.

Prídete, predložíte svoje poverenia a požiadate. Po chvíli vám recepcia povie, aby ste odišli s prázdnymi rukami, a nehovorí nič o knihe.

Ak však potom sedíte mimo archívov a pozeráte sa na kvalifikovaného teológa, ktorý vchádza dnu a vracia sa krátko nato s knihou, môžete zistiť, že archivári našli knihu, ktorú ste si vyžiadali, počas čakania a mali ju k dispozícii riadne akreditovaným klerik.

Nikto vám o knihe nepovedal a neprekonali ste bezpečnosť, no napriek tomu ste získali informácie vďaka znalostiam o fungovaní systému.

Meltdown a Spectre fungujú rovnakým spôsobom; vedia, ako systém funguje, a môžu s ním manipulovať, aby nepriamo odhalili informácie nastavením situácií a videním, čo sa stane ďalej.

Obrázky: Intel

Vo vnútri procesora

Kľúčové techniky procesorov, ako je reťazenie, vykonávanie mimo poradia, predikcia vetvenia a špekulatívne vykonávanie sa za posledných dvadsať rokov vyvíjali spolu so zrýchľovaním pamäte prostredníctvom čoraz zložitejšieho ukladania do vyrovnávacej pamäte systémov. Vzájomné pôsobenie medzi týmito technikami sa teraz ukázalo ako zásadne neisté, bez toho, aby bol na vine jeden systém.

Potrubie

Všetky procesory pracujú s pokynmi, ktoré tvoria programy, v sérii krokov. Akonáhle je inštrukcia načítaná z pamäte, je analyzovaná, načítajú sa všetky potrebné údaje, potom sa vykoná skutočná operácia a všetky výsledky sa umiestnia na správne miesto. Za každý krok je zodpovedná podjednotka v rámci procesora, pričom priebežné výsledky sa odovzdávajú ďalej.

Pozri tiež: Podporte svoju obranu: Rozpočet navyše na audit IT v roku 2018

Prvé procesory nenačítali nasledujúcu inštrukciu, kým nebola úplne vyriešená predchádzajúca, takže každú podjednotku nechali väčšinu času nečinnú. Načítaním viacerých inštrukcií a ich presúvaním vo vnútri procesora sa každá podjednotka stáva slobodnou a modernejšou procesory vytvárajú dopravný pás alebo potrubie, ktoré väčšinu času zabaví všetko, čím sa veci zrýchlia značne. Procesor často vie, že dve alebo viac inštrukcií, ktoré na sebe nezávisia, môžu byť spracované súčasne čas, aj keď sú na rôznych miestach v programe -- spustenie mimo poradia -- ďalšie zlepšenie podjednotky využitie.

Udržiavanie plného potrubia je veľmi dôležité. Ak sa z akéhokoľvek dôvodu musí prepláchnuť a spracovanie začať odznova - zastavenie potrubia - je to veľmi drahé v stratenom čase.

Dve veci spoľahlivo zabrzdia potrubie: vetvy a testy. Táto realizácia vedie k dvom hlavným konštrukčným prvkom súčasných procesorov, predikcii vetiev a špekulatívnemu vykonávaniu, a tieto sú jadrom novej triedy bezpečnostných zraniteľností.

Predikcia vetvy

Každý program počas svojho vykonávania preskakuje alebo sa vetví a prepína z jedného reťazca inštrukcií do druhého. Keď sa to stane, všetky inštrukcie v potrubí, ktoré sa vyskytnú po inštrukcii vetvenia, už nie sú platné, pretože vykonávanie sa začína odznova z inej oblasti pamäte.

Aby sa to vykompenzovalo, keď procesor prvýkrát narazí na inštrukciu vetvenia, ktorá vstupuje do potrubia, okamžite začne načítavať nové inštrukcie z cieľa vetvy. Ak je vetva podmienená -- skok, ak majú niektoré údaje určitú hodnotu, neskočte inak alebo prejdite na a vypočítaná hodnota -- procesor sa pokúsi uhádnuť, ktorá cesta bude nasledovať a použije ju na vyplnenie svojej cesty potrubia. V určitom bode ďalej v potrubí, keď bola vetva vyhodnotená a skutočný výsledok vypočítaný, procesor buď len pokračuje - odhadol správny - alebo zastaví potrubie a začína odznova. Nedochádza k žiadnej ďalšej strate výkonu v dôsledku neúspešnej predikcie vetvy a veľká výhoda, ak je správna, takže predikcia vetvy je veľkou výhodou.

Okrem toho, čím lepšia je predikcia vetvenia, tým lepší výkon čipu, takže je to oblasť, kde čip predajcovia môžu so ziskom stráviť veľa času inžinierstva a tiež tam, kde sú obchodné tajomstvá veľmi dôležité. Podrobnosti o tom, ako to funguje, sú často nejasné, aj keď medzi bežné techniky patrí sledovanie štatistického prehľadu o tom, ako pobočka postupovala v minulosti.

Špekulatívne prevedenie

Špekulatívne vykonávanie je všeobecnejšia forma myšlienok stojacich za predikciou vetvy. Program zvyčajne vykoná výpočet alebo logický test, ktorý nastaví, ako sa budú nasledujúce inštrukcie správať. Niekedy môže dokončenie tohto testu nejaký čas trvať, najmä ak zahŕňa načítanie údajov z externej pamäte. Namiesto čakania na výsledok procesor predpokladá, čo by to mohlo byť, kontrolné body, ako je to nastavené v bode testu, a pokračuje ďalej. Rovnako ako pri predikcii vetvy, ak sa predpoklad po konečnom dokončení testu ukáže ako nesprávny, nič navyše sa nestratí: procesor obnoví svoj stav do kontrolného bodu a pokračuje ďalej. Opäť platí, že špekulácie môžu byť veľmi komplikovanou a nuansovanou technikou, ako sa dostať správne, takže dizajnéri procesorov sa môžu zdráhať zdieľať všetky podrobnosti.

Kde sa to pokazí

Hlavným problémom, ktorý vedie k zlému správaniu typu Meltdown alebo Spectre, je predpoklad, že procesor sa dokáže zotaviť z neúspešného odhadu a vrátiť sa presne do stavu, v akom bol predtým. V rámci procesu inštrukcií procesora – okrem konštrukčných chýb – je to úplne možné. Čo sa však stane, ak neúspešný špekulatívny kód zmenil veci mimo procesora? Existuje ďalší predpoklad: ak špekulatívne nespustíte kód, ktorý zapisuje do pamäte alebo zariadení, nič sa nezmení.

Toto je kľúčový predpoklad, ktorý v skutočnom živote zlyhá, a jadro nových zraniteľností. Keď špekulatívna inštrukcia číta z pamäte, ide najskôr do vyrovnávacej pamäte - a stav vyrovnávacej pamäte sa môže podstatne zmeniť alebo podstatne ovplyvniť neskoršie spracovanie spôsobmi, ktoré pretrvávajú.

Bočný kanál a vyrovnávacia pamäť procesora

Čítanie informácií odvodením z neúspešnej interakcie medzipamäte špekulatívneho vykonávania je príkladom útoku na bočný kanál; extrahovanie údajov nezávisle od explicitných ciest spracovania údajov procesora.

Moderné procesory majú hierarchiu vyrovnávacích pamätí – bloky pamäte na čipe, s ktorými sa pracuje rýchlejšie ako so systémovou pamäťou dosiahnutou cez externé pomalé zbernice CPU. Procesory Intel majú zvyčajne tri úrovne vyrovnávacej pamäte: prvá, najrýchlejšia a najmenšia je vyrovnávacia pamäť úrovne 1 alebo L1. Ak chce procesor čítať alebo zapisovať údaje z pamäte, skontroluje, či sa už nenachádzajú vo vyrovnávacej pamäti L1 (zásah do vyrovnávacej pamäte), v takom prípade použije túto kópiu. Ak nie (chyba vyrovnávacej pamäte), skontroluje ďalšiu úroveň -- väčšiu, ale pomalšiu vyrovnávaciu pamäť L2; ak tam je, radič vyrovnávacej pamäte doručí údaje procesoru, ale tiež presunie časť údajov L2, ktorá obsahuje požadované informácie, do L1. Ak údaje neboli v L2, proces sa zopakuje s ešte väčšou, no pomalšou vyrovnávacou pamäťou L3 (jediná jeden zdieľaný medzi jadrami), opäť kaskádové zálohovanie dát a ich susedov do vyrovnávacej pamäte hierarchia. Všetky tieto veci trvajú rôzne dlho a môžu ponechať vyrovnávaciu pamäť v rôznych stavoch bez ohľadu na to, či bol kód špekulatívny alebo úspešný.

Stiahni teraz: Politika zabezpečenia siete (PDF zadarmo)

Útoky na vyrovnávaciu pamäť postranných kanálov sa opierajú o skutočnosti, ako sú zmeškania vyrovnávacej pamäte, čo vedie k pomalšiemu spracovaniu údajov ako prístupy. Útočný kód dokáže zistiť, či proces obete pristúpil k určitému bloku pamäte načasovaním, ako dlho to trvá dokončiť, alebo vymazaním vyrovnávacej pamäte pred spustením obete a následným zisťovaním, či je adresa pamäte späť vo vyrovnávacej pamäti potom. Stačí len prítomnosť vyrovnávacej pamäte a tá sa dá zistiť aj v prípade, že systém odmietne prístup k jej obsahu.

Spectre: spracovaný príklad

Tu je návod, ako to funguje len v jednom prípade Spectre.

Útočník identifikuje štandardnú funkciu v kóde obete – v jadre alebo inom –, ktorá robí to, čo sa nazýva „kontrola hraníc“, pred odoslaním údajov z tabuľky. Tým sa prijme vstupná hodnota, vynásobí sa inou hodnotou v pamäti, aby sa našiel správny záznam v tabuľke, a vráti sa výsledok z nej – vtedy a len vtedy, ak je prvá hodnota v bezpečnom rozsahu.

Ak by vstupná hodnota bola mimo bezpečného rozsahu a dostala sa cez ňu, potom by kód obete mohol prejsť späť do inej, tajnej oblasti pamäte. Takže prvá vec, ktorú kód obete urobí, je porovnanie vstupnej hodnoty s bezpečným limitom uloženým v pamäti. Potom sa vetví buď na kód, ktorý spúšťa funkciu „OK, tu sú vaše informácie“, alebo na kód, ktorý hovorí „nesprávne číslo, prístup odmietnutý“. Toto všetko je úplne štandardná prax zabezpečenia údajov.

Útok Spectre začína opakovaným volaním kódu obete s bezpečným, platným vstupom, trénovaním prediktora vetvy, aby očakával, že spustí kód, ktorý ukáže palec hore a odovzdá späť bezpečné údaje.

Potom útočný kód vymaže vyrovnávaciu pamäť, ktorá obsahuje informácie, ktoré kód obete používa na kontrolu počiatočnej hodnoty -- opäť, legitímny, aj keď nezdvorilý ťah – a odošle nesprávnu hodnotu zameranú na obsah pamäte, čo nie je normálne povolené vidieť.

Kontrola hraníc poslušne funguje, ale keďže útočník vymazal vyrovnávaciu pamäť obsahujúcu kontrolnú hodnotu, musí počkať, kým táto hodnota príde z hlavnej pamäte. To môže trvať stovky cyklov - dosť dlho na to, aby sa spustilo dosť veľa kódu.

Bezpečnosť

  • 8 návykov vysoko bezpečných vzdialených pracovníkov
  • Ako nájsť a odstrániť spyware z telefónu
  • Najlepšie služby VPN: Ako sa porovnáva 5 najlepších?
  • Ako zistiť, či ste zapojený do porušenia ochrany údajov - a čo robiť ďalej

To je presne to, s čím má pomôcť predikcia vetvy. Okamžite začne pracovať, skontroluje, ktorým smerom pobočka normálne ide, a tak počas oneskorenia špekulatívne vykoná kód „OK, tu sú vaše údaje“.

Tentoraz je odhad nesprávny. Špekulatívne vykonanie chybne uhádnutej vetvy využíva škodlivú hodnotu na to, aby v prvom rade získala údaje v tajnom pamäťovom mieste, na ktoré sa útočník zameral – povedzme, že ide o šestku. Potom použije túto hodnotu vynásobenú vstupnou hodnotou na nájdenie šiestej položky v tom, čo považuje za legitímne finálový stôl, ale v skutočnosti je to oblasť v pamäti, o ktorej útočník vie a tiež sa z nej predtým vyčistil cache.

Teraz procesor konečne získal svoje kontrolné údaje a zistil, že počiatočná hodnota bola nesprávna a opustili špekulatívne popravy, zahodili jej výsledky a spustili kód „choď preč, zničiť“. namiesto toho. Opäť je to normálna prevádzka -- a procesor nemá dôvod si myslieť, že niečo nie je v poriadku.

Ale už je neskoro. Cache reagovala na vypočítaný záznam vo falošnej finálovej tabuľke a načítala sa do zodpovedajúcej pamäte. Útočník môže teraz prejsť pamäťou falošnej tabuľky a vidieť, že šiesty záznam bol skutočne uložený do vyrovnávacej pamäte, možno načasovaním svojich vlastných prístupov. Teraz vie, že cieľová tajná pamäť obsahovala šestku a môže pracovať na ďalšom cieľovom pamäťovom mieste. To tiež nevyžaduje žiadne špeciálne privilégiá.

Toto nie je rýchly proces, pričom extrakcia údajov beží v testovacom kóde výskumníkov rýchlosťou iba niekoľkých tisíc bajtov za sekundu. To je ale viac než dosť na bezpečnostné kľúče a podobne, ktorými sa potom dá všetko odomknúť. Žiadna z týchto techník nemôže meniť údaje priamo; môžu iba získavať informácie. To stačí -- a opäť, tento príklad je len jedným z mnohých druhov útoku, ktorý je možné použiť.

Roztopenie

Meltdown sa nespolieha na nájdenie kódu obete. Namiesto toho využíva skutočnosť, že fyzická pamäť je rozdelená správou pamäte procesora do viacerých oblastí virtuálnej pamäte s rôznymi prístupovými oprávneniami. Jadro obsahujúce privilegované a zabezpečené komponenty operačného systému má prístup k celej pamäti, ale používateľské procesy majú prístup obmedzený len na svoje vlastné oblasti.

Nastavením špekulatívneho vykonávania v používateľskom procese, ktorý pristupuje k chránenej pamäti – k pamäti iných používateľov alebo jadra – Meltdown sa spolieha na to, že ochranný mechanizmus sa spustí a odovzdá kontrolu jadru, aby ho zvládlo, zatiaľ čo špekulatívne vykonávanie je stále deje. V čase, ktorý je potrebný na zvládnutie nelegálneho prístupu, špekulatívne vykonávanie má prístup k obsahu a môže klásť požiadavky na základe údajov, ktoré ovplyvňujú vyrovnávaciu pamäť. Procesor následne zahodí špekulatívne výsledky vykonávania a vráti sa do normálnej prevádzky, ale opäť neskoro. Toto je príklad konfliktného stavu, keď fungujú dva procesy ovplyvňujúce rovnaké údaje nezávisle, s nepredvídateľnými výsledkami a vo veľkej miere závisí od detailov pamäte riadiacou jednotkou.

Spectre je jemnejší a na rozdiel od Meltdown musí byť špeciálne implementovaný pre konkrétne procesy a prostredia. Nie je však závislý a v žiadnom prípade nemusí porušovať vnútorné ochranné mechanizmy procesora.

Dajú sa zastaviť?

Obrázok: Getty Images/iStockphoto

Meltdown je jednoduchšia trieda problémov, pred ktorou sa dá chrániť bez redizajnu procesora pomocou rôznych techník, ako je napríklad presun pamäte jadra na vyššiu úroveň ochrany. v procesore a výraznejšia zmena vnútorného stavu procesora, keď sa používateľský program prepne do jadra, či už priamym volaním alebo pri chybe vyskytuje. Náhodné určenie toho, kde v pamäti jadra existujú rôzne dátové štruktúry a procesy, tiež sťažuje útočníkom všetkých druhov vedieť, kde hľadať. Presadzovanie prísnejších kontrol pri prepínaní do režimu jadra však prináša značné výkonnostné deficity.

Spectre je oveľa ťažšie chrániť, pretože sa spolieha na normálne fungovanie špekulatívneho vykonávania a predikcie vetvenia a normálne fungovanie vyrovnávacích pamätí. Vypnutie ktorejkoľvek z týchto techník vo všeobecnosti odstráni desaťročia zlepšovania výkonu, za predpokladu, že je to možné aj v existujúcich dizajnoch. Moderné procesory môžu mať po výrobe vyladené mnohé zo svojich funkcií, pretože mnohé funkcie na veľmi nízkej úrovni možno prekonfigurovať zavedením nových pravidiel, ktoré riadia fungovanie podjednotiek. Iba predajcovia poznajú detaily takéhoto preprogramovania a zatiaľ čo konkrétne vylepšenia v kombinácii so softvérom určeným na minimalizáciu možností útoku, ako napr. Retpolína, môže potenciálne opraviť oblasti útoku, základný problém zostáva.

Ďalším prístupom je odstrániť alebo znížiť schopnosť procesov vykonávať vysoko presné časovanie – to sa už stalo vo webových prehliadačoch na zmiernenie útokov proti verziám JavaScript. Webové prehliadače však vo všeobecnosti nepotrebujú vysoko presné časovače, zatiaľ čo mnohé iné aplikácie áno.

Dobrou správou, akou je, je, že zatiaľ čo táto trieda zraniteľnosti pridáva významné a potenciálne nezraniteľný nový nástroj do sady nástrojov útočníka, stále sa spolieha na inštaláciu škodlivého kódu na cieľ. To ešte musí prekonať existujúce bezpečnostné systémy, ktoré blokujú, skenujú a monitorujú všetky podozrivé aktivity a zneužitia ktoré používajú útoky triedy Spectre, sa zistí, že sa pred nimi dá chrániť – pokiaľ sú bezpečnostné aktualizácie náboženské aplikované. Ale útoku nultého dňa narástlo oveľa viac zubov.

Budúcnosť

Skutočnosť, že niektoré aspekty modernej výpočtovej techniky trvajú dlhšie ako iné, je funkciou elektrickej fyziky: to sa nezmení. Je možné navrhnúť veľa pomalých aspektov medziprocesovej bezpečnosti, ale iba na úkor flexibility a škálovateľnosti: ľubovoľne komplexné a početné procesy bežiace na jedinom systéme budú potrebovať riadenie prístupu a privilégií, ktoré dokáže spracovať veľké súbory údajov, ktoré sú im vyhradené zvládanie. Nemôžete mať veľké množiny údajov so všetkými komponentmi okamžite dostupnými pre centrálne spracovanie.

Voľby sú prísne: veci sa spomalia, budú naďalej neisté alebo bude potrebné radikálne prepracovať základnú architektúru CPU so všetkým, čo to znamená pre kompatibilitu a kontinuitu.

Čo sa stane, sa uvidí.

PREDCHÁDZAJÚCE A SÚVISIACE POKRYTIE

Boj Linux vs Meltdown a Spectre pokračuje (ZDNet)
Oprava Meltdown a Spectre zaberie programátorom Linuxu – a všetkým ostatným operačným systémom – dlhý, dlhý čas. Tu sú teraz vývojári Linuxu.

Záplaty Windows Meltdown-Spectre: Ak ich nemáte, obviňujte svoj antivírus (ZDNet)
Microsoft tvrdí, že váš antivírusový softvér vám môže zabrániť v prijímaní núdzových opráv vydaných pre Windows.

Ako vás ovplyvnia opravy bezpečnostných dier Meltdown a Spectre (ZDNet)
Pripravte sa opraviť každý kus výpočtovej techniky vo vašej domácnosti a spoločnosti, aby ste sa vysporiadali s touto nočnou morou CPU.

Ako chyby čipov Meltdown a Spectre ovplyvnia cloud computing (TechRepublic)
Zmiernenie dvoch kritických architektonických nedostatkov v CPU môže spôsobiť zníženie výkonu, ale vplyv v reálnom svete je nižší ako pri syntetických benchmarkoch.

Obrovská chyba procesora Intel: Pochopenie technických detailov Meltdown a Spectre (TechRepublic)
Dve kritické architektonické chyby v CPU umožňujú užívateľským procesom čítať pamäť jadra, čo ovplyvňuje procesory Intel, AMD a ARM. Tu je to, čo potrebujete vedieť.