Meltdown (zraniteľnosť): Rozdiel medzi revíziami
Smazaný obsah Přidaný obsah
dokončenie mechanizmu Značka: bez zdroja |
|||
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
<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>
|