Hlavní navigace

Po CPU se našla díra v paměti DDR3/DDR4. RAMBleed dovoluje krást data

18. 6. 2019

Sdílet

Asi už máte plné zuby toho, že se pořád objevují nějaké bezpečnostní díry v procesorech, které narušují klasické zabezpečení softwaru a jen složitě se obcházejí. Teď si od této nepříjemnosti konečně můžete odpočinout, protože tu máme zranitelnost, za kterou mohou pro změnu operační paměti v počítačích: útok RAMBleed. Ten souvisí s již dlouhou dobu známým problémem RowHammer, ale zneužívá ho zákeřnějším způsobem ke krádežím citlivých dat a údajů uživatele.

RowHammer je docela závažná slabina odhalená v u operačních pamětí typu DRAM (v té době DDR3, přes pokusy ji oslabit ale v menší míře trápí i DDR4). Spočívá v tom, že jednotlivé buňky DRAM se částečně ovlivňují a pokud hodně agresivně opakovaně budete zapisovat například jedničku do jedné buňky, může se vám podařit překlopit na jedničku i sousední buňku (respektive buňky v sousední řadě), pokud měla stav 0. Škodlivý kód tak může přepsat oblasti paměti, ke kterým nemá přístup, ale jsou na modulu fyzicky blízko oblasti, do které může. Tento zápis poruší integritu paměti a může tedy způsobit poškození dat, pád programů a tak podobně.

A bohužel bylo demonstrováno, že jej lze provádět třeba i javascriptovým kódem na webové stránce, takže ač jde primárně o útok vyžadující spuštění programu lokálně, je rizikem i při prohlížení webu. Kromě primitivního útoku snažícího se prostě porušit data ale byly nalezeny i způsoby, jak tímto útokem dosáhnout sofistikovanější cíle jako je zvýšení privilegií.

Tip: Útok Rowhammer funguje i na paměti DDR4. RAM je zranitelnější, než se myslelo

RAMBleed: RowHammer naruby

Nyní ovšem bezpečnostní výzkumníci demonstrovali, že je možné i reverzní zneužití tohoto problému s pamětí RAM. A sice ne už k „tlučení“ do nepřípustné oblasti paměti, ale naopak vytažení dat z oblastí RAM, ke kterým proces útočníka nemá přístup. Nový útok pojmenovaný RAMBleed tak má podobná rizika jako útoky Spectre – útočník (ale i třeba javascript na webu) může číst z RAM počítače a dostat se k potenciálně citlivým datům jako jsou hesla.

Logo zranitelnosti RAMBleed Logo zranitelnosti RAMBleed

RAMBleed využívá „překlápění“ bitů kvůli efektu RowHammer k tomu, aby naopak překlopil bity ve svém vlastním rozsahu podle obsahu sousedních bitů, k nimž přístup nemá, a tím je přečetl. Postup spočívá v umístění vlastního útočného kódu mezi řádky paměti, kde je cílový program či data (oběť). Útočník pak útok RowHammer s opakovanými zápisy na určité adresy provede na svojí vlastní paměť a s pomocí speciálního postupu, který výzkumníci vyvinuli a popsali, se dá způsobit, aby se jemu patřící paměť překlopila na hodnoty závisející na hodnotách nepřístupné paměti v sousedních řádcích.

Ačkoliv je to asi dost obtížné, je dokázáno, že princip funguje. Výzkumníkům se zneužitelnost podařilo demonstrovat tím, že RAMBleedem vyčenichali 2048bitový RSA klíč z knihovny OpenSSH 7.9. Čtení nicméně experimentálním kódem trvalo hodně dlouho, až čtyři hodiny.

Schema exploitu RAMBleed Schéma postupu, kterým exploit RAMBleed získává data ze sousedních oblastí paměti. Více v referátu k útoku

Nepříjemné je, že zatímco u RowHammeru pomáhá proti útoku ECC (protože dokáže překlopené bity vrátit na jejich správné hodnoty), proti RAMBleedu ECC nestačí. Útočník totiž může „leaknutá“ data přečíst předtím, než ECC změněné buňky opraví. Je to trochu složitější (ECC opraví data při přístupu, ale protože přístup při opravě trvá výrazně déle, lze využít timing attack a zjistit, zda ECC opravilo překlopený bit, nebo ne).

Moduly DDR4 s technologií TRR jsou bezpečnější, ale ne na 100 %

Není asi příliš pravděpodobné, že na váš konkrétní počítač bude tímto způsobem útočeno, a neví se o tom, že by se tato zranitelnost aktivně zneužívala (byť kvůli tomu, že jde o krádeže dat, by útoky nezaznamenaly stopy v protokolech). Nebezpečí můžete zmírnit, pokud budete používat paměti DDR4, u nichž je aktivní technologie „Targetted Row Refresh“. Jejím cílem je právě ztížit útok RowHammer tím, tím, že častěji obnovuje buňky, které jsou pod velkou zátěží, ovšem ani TRR není stoprocentně účinné. RowHammer byl demonstrován i proti těmto modulům, jen je o dost obtížnější.

Až na volbu TRR modulů asi není příliš mnoho, co proti této potenciální hrozbě tedy momentálně můžete dělat. Dobrá zpráva je, že problém RAMBleed je momentálně hlavně akademický. Ale v budoucnu z něj může být reálná hrozba...

Galerie: Paměťové čipy DRAM a NAND

Byl pro vás článek přínosný?