Meltdown (zraniteľnosť): Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
TibX (diskusia | príspevky)
dokončenie mechanizmu
Značka: bez zdroja
TibX (diskusia | príspevky)
Riadok 25:
* Niektoré oblasti sú vyhradené pre samotný podvodný proces pre jeho vlastné inštrukcie a dáta.
* Z dôvodu efektivity, neberúc do úvahy oprávnenia pre prístup k privilegovaným častiam pamäte, tento '''priestor obsahuje tiež všetky ostatné dáta''', ktoré sa používajú vo všetkých ''ostatných'' bežiacich procesoch, vrátane operačného systému a tiež prípadne dáta v pamäti, ktorá bola použitá, avšak nebola vyprázdnená, alebo adresy, ktoré sú vždy priamo mapované na celú fyzickú pamäť.
* Princíp, že všetky uvedené dáta sú rovnako mapované do virtuálnej pamäte každého procesu, sa zvyčajne považuje za úplne bezpečný, pretože funkcia CPU na riadeniariadenie prístupu zabráni ich zneužitiu. Akýkoľvek pokus podvodného procesu na prístup k všetkým ostatným dátam, na ktoré nemá oprávnenie, spôsobí [[Výnimka (programovanie)|výnimku]] (chybový stav). Požiadavka zlyhá a podvodnému procesu nebudú poskytnuté žiadne údaje, čím sa zachová bezpečnosť.<br><br></li>
<li>Aj keď sa proces pokúša čítať pamäť, na ktorú nemá oprávnenie, inštrukciu čítania procesor najskôr naplánuje a zreťazí, podobne ako pri iných inštrukciách.
* Ako zvyčajne zvolí výkonnú jednotku a radič pamäte požiada o načítanie obsahu pamäte na adrese, ktorá bola uvedená v inštrukcii, tak aby dáta boli pripravené a rýchlo dostupné v procesore, keď nastane čas na dokončenie zvyšku inštrukcie. V určitom okamihu, predtým než je inštrukcii dovolené vygenerovať vôbec nejaký výstup, na inom mieste dôjde k dokončeniu kontroly oprávnení. V prípade neoprávneného čítania, bude výkonnej jednotke oznámené, že inštrukcia zlyhala pri kontrole oprávnení. Zrušia sa všetky dáta z inštrukcie, procesu sa neodovzdá nič, inštrukcia sa zahodí a vykonávanie sa posunie na nasledujúcu inštrukciu.
Riadok 33:
* Avšak aj keď inštrukcia zlyhá, dáta už boli vyžiadané výkonnou jednotkou a načítané radičom pamäte, aby boli pripravené na spracovanie a hoci výkonná jednotka zahodila dáta v dôsledku chyby pri kontrole oprávnení, v rámci procesu načítania dát z pamäte však už bola automaticky zaktualizovaná cache CPU a '''dáta boli načítané do cache CPU''', pre prípad, že by rovnaké dáta boli čoskoro znova potrebné.
* '''V tomto bode zasiahne Meltdown.'''<ref name="MeltdownPaper"/><br><br></li>
<li>Cache CPU nie je neoprávneným procesom čitateľná, pretože ide o internú súčasť procesora. Avšak pomocou '''útoku na cache pomocou časovej analýzy''' (forma [[útok postrannným kanálom|útoku postranným kanálom]]) môže podvodný proces nepriamo overovať, či sa určité dáta z konkrétnej adresy nachádzajú v cache CPU alebo nie, a to aj napriek tomu, že sám nemôže prečítať skutočné dáta z tejto adresy.
* Ak boli dáta z nejakej adresy pamäte uložené do cache CPU, potom opakovaná inštrukcia na načítanie rovnakej adresy použije cache CPU na načítanie týchto dát (rýchle). Ak dáta neboli uložené v cache CPU, potom CPU bude musieť požiadať o načítanie dát z pamäte (pomalšie).
* Podvodný proces môže informáciu o časovom rozdiele použiť na detekciu, ktorým z týchto dvoch spôsobov boli dáta načítané a teda či dáta boli v cache CPU alebo nie. Toto zistenie samo o sebe nepredstavuje neprekonateľnú zraniteľnosť, avšak Meltdown ho môže v kombinácii s ďalšou vlastnosťou [[inštrukčný súbor|inštrukčného súboru]] CPU zneužiť na prečítanie akéhokoľvek miesta v celej mapovanej pamäti.<br><br></li>