Rowhammer

  je nezamýšlený vedlejší účinek v dynamic random-access memory (DRAM), který způsobuje, že paměťové buňky unikat své poplatky a vzájemně elektricky mezi sebou, případně pozměnit obsah blízkých paměťových řádků , které nebyly řešeny v Originální přístup do paměti. Tento obcházení izolaci mezi DRAM paměťových buněk vyplývá z vysoké hustoty buněk v moderní DRAM, a může být spuštěna speciálně vytvořených vzorů přístup k paměti , která se rychle aktivují stejné řádky paměti několikrát.

Řádek kladivo efekt byl použit v některých eskalaci privilegií počítačové bezpečnosti využije . různé techniky založené na hardwaru existují proto, aby se zabránilo řádek kladivo efekt zabránit, včetně požadované podpory v některých zpracovatelů a typů DRAM paměťových modulů .

Dosavadní 

Na vysoké úrovni ilustrace organizace DRAM, který obsahuje paměťové buňky (modré čtverce), dekodér adres (zelené obdélníky) a smysl zesilovače (červené čtverečky)
V dynamické RAM (DRAM), každý kousek uložených dat zabírá samostatnou paměťovou buňku, která je elektricky implementována s jedním kondenzátorem a jednoho tranzistoru . Stav nabití kondenzátoru (nabití nebo vybití) je to, co určuje, zda buňka obchody DRAM "1" nebo "0" jako binární hodnotu . Obrovské množství paměťových buněk DRAM jsou baleny do integrovaných obvodů , společně s některými dalšími logikou, která organizuje buňky pro účely čtení, psaní a osvěžující dat.

Paměťové buňky (modré čtverce na obrázku poskytované v této části) jsou dále uspořádány do matic a řešena prostřednictvím řádků a sloupců. Adresa Paměťová aplikuje na matrici je rozdělen do řádku adresy a sloupcové adresy, které jsou zpracovávány řádků a sloupců adresových dekodérů (na obrázku, svislé a vodorovné zelenými obdélníky, v uvedeném pořadí). Po adresa řádek vybere řádek pro operace čtení (výběr je také známý jako aktivace řádku ), bity ze všech buněk v řádku se přenesou do smyslových zesilovačů , které tvoří řádek vyrovnávací paměti (červená čtverců na obrázku), od kterého přesný bit je vybírány na základě adresy sloupce. V důsledku toho číst operace jsou destruktivní povahy, protože konstrukce DRAM vyžaduje paměťové buňky, které mají být přepsány poté, co jejich hodnoty byly přečteny přenosu náboje buňky do řádku vyrovnávací paměti. Operace zápisu dekódování adresy v podobným způsobem, ale v důsledku konstrukce celé řádky musí být přepsána na hodnotu jednoho bitu, které mají být změněny. : 2-3

V důsledku ukládání datových bitů pomocí kondenzátory, které mají přirozené vybíjení, paměťové buňky DRAM ztrácí svůj stav v průběhu času a vyžaduje periodické přepisování všech paměťových buněk, což je proces známý jako osvěžující. : 3 jako dalším výsledkem návrhu, DRAM paměti je citlivý na náhodné změny v uložených dat, které jsou známy jako měkké chyby paměti a připsat kosmického záření a jiných příčin. Existují různé techniky, které působí proti měkké chyby paměti a zvýšení spolehlivosti DRAM, jehož kód opravy chyb (ECC) paměť a její pokročilé varianty (například paměť pochodovým jsou nejčastěji používané).

Přehled 

Aktivace Rapid řadové (fialová řádek) se může změnit hodnoty bitů uložených v řadách obětí (žluté řádky). : 2
Zvýšení hustoty DRAM integrovaných obvodů ( IC ) vedly k fyzicky menší paměťové buňky, které jsou schopné ukládání menších poplatků , což má za následek nižší provozní marže hluku , zvýšené sazby elektromagnetické interakce mezi paměťových buněk a větší možnost ztráty dat. Výsledkem je, že chyby rušivé byly pozorovány, způsobené buňkami zasahují do provozu navzájem a projevovat jako náhodné změny v hodnotách bitů uložených v postižených paměťových buněk. Povědomí o chybách rušivých sahá až do začátku roku 1970 a Intel 1103 jako první komerčně dostupného DRAM IC; Od té doby, výrobci DRAM byly použity různé zmírňující techniky proti chybám poruchami, jako je zlepšení izolace mezi buňkami a provedení testování výroby. Nicméně, výzkumníci se ukázalo v roce 2014 analýze, která komerčně dostupné DDR3 DRAM čipy vyráběné v letech 2012 a 2013 jsou náchylné k rušení chyb, při použití termín řádku kladivo pojmenovat přidružené vedlejší účinky, které vedly k pozorované bit vyletí .

Příležitost pro řádek kladivo efekt se vyskytuje v paměti DDR3, je primárně přičíst DDR3 má vysokou hustotou paměťových buněk a výsledcích přidružených interakcí mezi buňkami, zatímco aktivace rychlé DRAM řadové byly stanoveny jako primární příčiny. Aktivace Časté řadové způsobit napěťové výkyvy na související řadových výběrových linií, které byly pozorovány vyvolat vyšší-než-přirozené vybíjení v kondenzátorech, které patří do blízkosti paměťové řádky (v sousedství, ve většině případů), které se nazývají oběti řádky ; -li postižený paměťové buňky nejsou aktualizovány dříve, než ztratí příliš mnoho náboj, dochází k chybám rušení. Testy ukazují, že chyba rušení může být pozorován po provedení kolem 139.000 následných paměti řádek přístupy (s mezipaměti horka ), a to až do jedné paměťové buňky v každé 1.700 buněk mohou být citlivé. Tyto testy také ukazují, že míra chyb rušivých není podstatně ovlivněna zvýšenou teplotou prostředí, přičemž záleží na skutečném obsahu DRAM, protože některé bitové vzory za následek významně vyšší míru chyb rušení.

Varianta s názvem oboustranný bušení zahrnuje cílené aktivace dvou DRAM řad okolních řadu obětí: na obrázku uvedeným v této kapitole, tato varianta by byla aktivace obě žluté řádky s cílem přimět trochu otáčí ve fialové řadě, v tom kterém případ bude řada obětí. Testy ukazují, že tento přístup může vést k významně vyšší mírou rušení chyb ve srovnání s variantou, která aktivuje pouze jeden ze sousedních řad DRAM oběť Row. : 19-20

Zmírnění
Různé metody existují více či méně úspěšné detekci, prevenci, opravu či zmírnění řádek kladiva efekt. Testy ukazují, že jednoduchá ECC řešení, poskytující korekce single-a odhalování chyb double-chyba (SECDED) schopnosti, nejsou schopni opravit nebo zjistit všechny pozorované chyby, rušivé, protože některé z nich obsahují více než dvě převrácený bitů na paměti slova .  : 8 : 32 méně efektivním řešením je zavést častější paměti osvěžující, s obnovovací intervalech kratších než obvyklých 64 ms, [a] , ale tato technika má za následek vyšší spotřebu energie a zvýšení zpracování nad hlavou; Někteří dodavatelé poskytují firmwaru aktualizace, které implementují tento druh zmírnění. Jeden z více komplexních preventivních opatření provádí počítadlo na bázi identifikace často přistupuje paměťových řadách a aktivně obnovuje jejich sousední řádky; jiná metoda vydává další občasné náhodné osvěžuje paměťových řad sousedních vyvolávaných řádky bez ohledu na jejich četnosti přístupu. Výzkum ukazuje, že tato dvě opatření prevence způsobit zanedbatelné dopady výkonu. : 10-11

Od vydání Ivy Bridge mikroarchitektuře , Intel Xeon procesory podporují takzvaný pseudo cílový řádek refresh (pTRR), který může být použit v kombinaci s pTRR kompatibilní DDR3 dual Paměťové moduly in-line (modulů DIMM) pro zmírnění řádek kladivo efektu automaticky osvěžující možné oběti řádky, bez negativních dopadů na výkon nebo spotřebu energie. Při použití s moduly DIMM, které nejsou kompatibilní s pTRR tyto Xeon standardně opřít o provedení DRAM obnovuje na dvojnásobek obvyklé frekvence, což má za následek mírně vyšší přístup k paměti latence, a může snížit propustnost paměti až o 2-4%.

LPDDR4 paměť Standardní publikoval JEDEC obsahuje volitelnou hardwarovou podporu pro takzvané cílové řadě refresh (TRR), která zabraňuje kladivo efekt řádku bez negativního dopadu na výkon nebo spotřebu energie. Navíc, někteří výrobci realizovat TRR v jejich DDR4 produkty , i když to není součástí paměti standardu DDR4 zveřejněné JEDEC. Vnitřně TRR identifikuje možné řádky oběti, počítáním počtu řádků aktivací a porovnáním vůči předdefinovaným čipu -specifické maximální počet activate (MAC) a maximální oknem activate (t MAW ) hodnot a aktualizuje tyto řádky, aby se zabránilo bit vyletí. Hodnota MAC je maximální celkový počet řádků aktivací, které mohou nastat na konkrétní DRAM řádek v časovém intervalu, který se rovná nebo kratší než t MAW množství času, než v sousedních řadách jsou identifikovány jako oběti řádky; TRR může také vlajka řadě, jak za sebou oběti, pokud součet řádků aktivací pro jeho dvou sousedních řádků dosáhne omezení MAC ve t MAW časového okna.

Vzhledem k jejich nutnosti obrovských počtech rychle provedených řadových aktivací DRAM, řadové kladivo využije vydat velké množství v mezipaměti přístupů do paměti, které způsobují vyrovnávací paměti mine , která může být detekována monitorováním rychlosti vyrovnávací paměti mine pro neobvyklé vrcholů s použitím čítače výkonu hardware . Version 6.0.0 z memtest86 diagnostickým softwarem paměti vydané dne 13. února 2015, obsahuje takzvaný test kladivem , který kontroluje, zda počítačový hardware je náchylná k rušení chyb. 

Důsledky
Ochrana paměti , jako způsob, jak zabránit procesů v přístupu k paměti, která není přiřazena ke každému z nich, je jednou z koncepcí, většina moderních operačních systémů . Pomocí ochranu paměti v kombinaci s jinými mechanismy souvisejících s bezpečností, jako je ochrana kroužků , je možné dosáhnout oprávnění separace mezi procesy, ve kterých programy a počítačové systémy obecně jsou rozděleny na části omezen na specifické výsady vyžadují provést určité úkol. Použití separaci oprávnění může také snížit rozsah možných škod způsobených počítačové bezpečnosti útoky tím, že omezí jejich účinky jednotlivých částí systému.

Chyby rušení (vysvětleno v předchozí části ) účinně porazit různých vrstev ochrany paměti pomocí " zkratu " nimi na velmi nízké úrovni hardwaru, prakticky vytváří jedinečný způsob útoku typu, který umožňuje procesy měnit obsah libovolných částí hlavní paměti přímou manipulaci podkladové paměťový hardware. Ve srovnání s "konvenční" útoku, jako například přetečení bufferu zaměřena na obcházení mechanismy ochrany na úrovni softwaru, pomocí využití různých programových chyb, aby se dosáhlo obměny jinak nepřístupných hlavní obsah paměti.

Využije
code1a:
mov ( X ), % eax // čtení z adresy X
mov ( Y ), % ebx // čtení z adresy Y
clflush ( X ) // splachovací mezipaměť pro adresy X
clflush ( Y ) // splachovací mezipaměti na adrese Y
JMP code1a
Úryvek z x86 montážní kód, který vyvolává řádek kladivo efekt (adresy paměti Xa Ymusí mapovat různé DRAM řádků ve stejném paměťové banky ) : 3 : 13-15
Počáteční výzkum zaměřený na řádek kladiva efekt, uveřejněný skupina autorů v červnu 2014, popsal podstatu chyby rušení a ukázal na potenciál pro vybudování útok, ale neposkytla žádné příklady pracovní bezpečnosti těžby. Další výzkum papír, vytvořený skupinou autorů a publikoval v říjnu 2014, neznamenalo existenci jakýchkoli problémů spojených s bezpečností vyplývajících z řádku kladiva efekt.

Dne 9. března 2015, Google 's Project Zero odhalila dva pracovní eskalaci privilegií exploity založené na řadě kladivem efektu, kterým se stanoví její využitelnou povahu na x86-64 architektuře. Jeden z odhalených využije se zaměřuje na Google Native Client (NaCl) mechanismus pro běh omezené sady x86-64 strojových instrukcí v pískovišti , : 27 využívání řádek kladivo efekt uniknout z pískovišti a získat schopnost vydávat systémových volání přímo. To NaCl zranitelnost , sledovány jako CVE -2015-0565 byla zmírněna změnou NaCl, takže to neumožňuje vyřízení clflush( řádek vyrovnávací paměti flush ) strojová instrukce, která byla nalezena, které mají být potřebná pro vybudování efektivního řádek kladivo útoku.

Druhý Exploit odhalila Project Zero běží jako neoprávnění Linux procesu na x86-64 architektuře, využívání kladivo efekt řádku získat neomezený přístup ke všem fyzické paměti nainstalované v počítači. Kombinací chyby rušivé s pamětí postřiku , toto využití je schopné měnit záznamy tabulky stránek (PTE)  : 35 používá virtuální paměti systému pro mapování virtuálních adres na fyzické adresy , což má za následek využít získání neomezeného přístupu do paměti.  : 34,36-57 Vzhledem ke své povaze a neschopností x86-64 architektuře, aby clflushvýsadní strojová instrukce, tento exploit těžko může být zmírněn na počítačích, které nepoužívají hardware s vestavěnými mechanismy prevence řadě kladivem , Při testování životaschopnost využije, Project Zero zjistila, že asi polovina z 29 testovaných notebooků zkušených chyby poruchové, přičemž některé z nich se vyskytují na zranitelné notebooky za méně než pět minut po spuštění řádek kladivo indukující kód; testované notebooky byly vyrobeny v letech 2010 a 2014 a používá non-ECC paměti DDR3.

V červenci 2015 skupina bezpečnostních výzkumníků publikoval článek, který popisuje architekturu - a instrukční set- -independent cestu k využívání řádek kladivo efekt. Místo spoléhání se na clflushpokyn k provedení mezipaměti horka, tento přístup dosahuje uncached paměť zpřístupňuje tím, že způsobí velmi vysokou míru vyrovnávací vyklizení pomocí pečlivě vybranými modely přístupu do paměti. Přestože náhradní mezipaměti politiky se liší mezi procesory, tento přístup překonává architektonické rozdíly tím, že zaměstná adaptivní vyrovnávací paměť vystěhování strategie algoritmu . : 64-68 proof of concept pro tento přístup je poskytován jak jako nativní kód implementace, a jako čistý JavaScript implementace, která běží na Firefox 39. Implementace JavaScript, nazvaný Rowhammer.js ,  používá velké zadali pole a opírá se o jejich vnitřní rozdělení za použití velkých stránek ; V důsledku toho se ukazuje velmi vysoké úrovni využít zranitelnosti velmi nízké úrovně.