Tak kdepak jsou ty exploity na zranitelnosti Meltdown a Spectre?
Opravdu už přestávám věřit v uváděné závažnosti zranitelností, které mají své logo a webové stránky, a na které vedou odkazy ze spousty „odborných“ a zpravidla i apokalyptických článků.
Je to jak s těmi asteroidy. Každou chvíli se někde objeví nějaká poplašná zpráva, že by se mohl srazit s naší matičkou Zemí a ono pořád nic.
Na základě propočtů je pravděpodobnost nízká, nakonec se nic nestane, ale v mezidobí se zcela nečekaně třeba na poloviční vzdálenosti měsíce prokmitne nějaký jiný velký kamínek, kterého si nikdo předem ani nevšiml a je z toho Čeljabinský meteor. Zdá se vám tento příměr přitažený za vlasy?
Mně ne, před měsícem byly veřejně publikovány zranitelnosti procesů pod názvy Meltdown a Spectre. To o čem budu psát, nebude překlad výše uvedeného ani opakování publicistických článků.
V souhrnu tedy jde o zranitelnosti (bez překladu):
Spectre: Exploiting Speculative Execution
CVE-2017-5753 [bounds check bypass] aka ‚Spectre Variant 1‚
CVE-2017-5715 [branch target injection] aka ‚Spectre Variant 2‚
Meltdown: Exploiting Out-of-order Execution
CVE-2017-5754 [rogue data cache load] aka ‚Meltdown‘ aka ‚Variant 3‚
Co mě vlastně vede k tomu ještě něco k těmto zranitelnostem napsat, když toho je všude plno? Důvod je vcelku jednoduchý, prý se už teď čeká jen na hackery nebo malware, který tyto zranitelnosti zneužije a bude vymalováno.
Určitě nebudu tvrdit, že zranitelnosti nefungují nebo, že nejsou vážné, nicméně vážnost není z důvodu jejich zneužitelnosti, ale protože se nachází v HW tj. v procesoru a nelze je snadno opravit, i když např. Intel, který má největší problém, se velmi snaží vše napravit, viz příručka. K opravám taktéž dochází na úrovni operačních systémů ale i webových prohlížečů kvůli možnosti jejich zneužití přes javascript, viz příklad níže:
if (index < simpleByteArray.length) {
index = simpleByteArray[index | 0];
index = (((index * TABLE1_STRIDE)|0) & (TABLE1_BYTES-1))|0;
localJunk ^= probeTable[index|0]|0;
}
Proof-of-concept exploit
Na stránkách Meltdown nebo Spectre je ukázáno, jak se např. pomocí Meltdown zranitelnosti dá odcizit heslo, provést dump paměti či rekonstruovat obrázek z paměti. První věcí, která nemohla snad nikomu zůstat skryta, je rychlost čtení z paměti. Nevěříte? Zkuste se podívat na video Meltdown in Action: Dumping memory.
Videa jsou samozřejmě jen videa a člověk by si měl udělat vlastní názor, pokud si může informaci ověřit, a v tomto případě to jde, protože byly zveřejněny i zdrojové kódy např. na Githubu. A to jak pro Meltdown tak i pro Spectre. K dispozici je i mnoho vyladěných variant, bohužel stále jen a jen PoC. A kde jsou ty skutečné exploity?
Níže vidíme PoC test pro Meltdown (lehce upraven pro lepší čitelnost), kde proces secret spuštěný pod právy roota uloží textové pole s textem tadynicneni, který zobrazí a zároveň vypíše fyzickou adresu, kde tento text je, a druhý proces běžící pod neprivilegovaným účtem neoprávněně tento text přečetl.
Ano, to člověka vyleká, a tak jsem hned zkusil, zda si načtu v procesu Firefoxu citlivé informace, ale ouha, ono to nefunguje. Proč? Odpověď je v samotném PoC kódu. Vytvořil jsem secret-nocache, a jak vidíme níže, text supertajneheslo jsem už nenačetl.
Co se vlastně stalo? Ze zdrojového kódu jsem odstranil část nazvanou výstižně for better results, která udržovala v cache onen text, který se měl načíst.
Samozřejmě nebyl jsem jediný, koho to iritovalo …slovo fake jsem zcela úmyslně podbarvil.
Je pravda, že jsem to testoval na i5 a je tak možné, že na jiném CPU to bude fungovat přesněji řečeno just slower. Takže, když to shrnu, je to pomalé, spíše to nefunguje, pokud nežhavím cache v jiném procesu a je to nespolehlivé. Na obrázku je vidět, jak to občas načetlo text a ve virtuálu to mělo obzvláště velké problémy.
PoC pro Meltdown je k dispozici na GitHub v mnoha variacích, takže uvedu ještě, ten který načte z kernel paměti linux_proc_banner a bere si ze Spectre užití Flush+Reload.
Meltdown se týká jen Intel procesorů, takže asi OK, ale co Spectre? To vypadá lépe a má umět exploitovat i ARM procesory, … ale co vlastně ten PoC pro Spectre ukazuje?
Linux:
Windows:
PoC pro Spectre testuje pouze schopnost číst data v rámci stejného procesu pomocí spekulativního vykonávání kódu, aniž by překročil hranice oprávnění (data jsou procesu přístupná). Zjednodušeně řečeno testuje se pro každý byte všech 255 možností a zjistí se nejkratší dobu výsledku operace => už v CPU existuje => hledaná hodnota.
Faktem je, že ti co zveřejnili zranitelnosti, skutečně uvedli, co a jak ověřili (PoC), a kdyby si to bezpečnostní popularizátoři pozorně přečetli, viděli by, co je psáno ve čtyřech bodech zde.
Když se podíváme na článek FLUSH+RELOAD: a High Resolution, Low Noise, L3 Cache Side-Channel Attack z roku 2013 (Spectre útok používá flush+reload nebo evict+reload), tak už to nevypadá na objev Ameriky, ale to snad nikdo netvrdil.
A samozřejmě nezpochybňuji základní princip, o který se to hlavně opírá vyjádřený na níže uvedeném obrázku, kde je ukázáno, jak je celá fyzická paměť typicky mapována do kernelu a ten je mapován do user space všech procesů.
Poslední věcí jsou smartphony v drtivé většině postavené na ARM procesorech s Android OS. Pokud chce někdo PoC vyzkoušet na Androidu upozorňuji, že není jednoduché nalézt vhodný smartphone se zranitelným CPU. Zmínit je třeba i Meltdown, který se sice týká pouze Intel procesorů, nicméně jistá možnost byla objevena a označuje se jako varianta 3a.
Zranitelnost 3a pro ARM 64bitové mikroprocesory s architekturou AArch64 byla ověřena např. zde s důležitým závěrem: „No cryptographic keys or user data are expected to be exposed in most cases“. A jsou zde naznačeny i možné oblasti zneužití spočívající v pomoci jiným exploitům či zranitelnostem.
Je potřeba si uvědomit, že v případě Androidu jsou mnohem jednodušší a účinnější formy útoku. Navíc výše uvedené teoreticky může pouze pomoci nějakému útoku, ale prakticky je to nereálné. Mnohem větší nebezpečí zůstává v nepodporovaných zařízeních, které může malware rootnout a získat nad zařízením plnou kontrolu nebo běžné a časté overlay útoky.
Štítky: zranitelnosti
K článku “Tak kdepak jsou ty exploity na zranitelnosti Meltdown a Spectre?” se zde nenachází žádný komentář - buďte první.
Diskuse na tomto webu je moderována. Pod článkem budou zobrazovány jen takové komentáře, které nebudou sloužit k propagaci konkrétní firmy, produktu nebo služby. V případě, že chcete, aby z těchto stránek vedl odkaz na váš web, kontaktujte nás, známe efektivnější způsoby propagace.