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.

Pokud vás tento příspěvek zaujal, sdílejte ho!
Email this to someone
email
Share on LinkedIn
Linkedin
Tweet about this on Twitter
Twitter
Share on Facebook
Facebook
Print this page
Print

Štítky:


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.

Přihlášeným uživatelům se tento formulář nezobrazuje - zaregistrujte se.

Jméno:(požadováno)
E-mail:(požadováno - nebude zobrazen)
Web:

Text vaší reakce: