Javascript se přinejmenším v Chromu překládá před spuštěním JIT kompilátorem do strojového kódu (assembleru). Je to pěkně popsáno v https://spectreattack.com/spectre.pdf
Mě stále není jasné, zda je nutné nějak zalepovat i prohlížeč, nebo zda stačí zalepit OS. Logika napovídá, že by mělo stačit zabezpečit vyšší vrstvu - OS, je to tak? Pak ale nechápu, proč třeba MS, FF i Chrome vydávají aktualizace prohlížečů. Je to čistě prevence pro ty, co nemají zalepený OS? Nebo je to nutnost?
pokud jde o tenhle případ s variantou 2 u spectre, každý kdo generuje ASM kód musí udělat "zalepení", aby nebyl schopný vygenerovat takhle zneužitelný kód. Je to doslova záplata na tuhle konkrétní chybu, gcc i lvm již patch mají v upstreamu. Stejným způsobem záplatou musí/mohou udělat všechny js enginy.
Jsem blbej, ale stále tomu nerozumím. Pokud je nutné rekompilovat aplikace, tak to přeci není žádná oprava, protože útočník to samozřejmě dělat nebude a závadnou aplikaci a bude ji distribuovat. Takže to musí odchytit OS nebo nějaká nižší vrstva, jinak to nemá cenu.
Pokud má browser pro TABy (nebo třeba rozšíření) oddělené procesy, tak by oprava OS přeci měla stačit (viz předchozí bod). Pokud pro TABy používá jeden proces, tak je zase využité těchto dvou chyb "zbytečné", protože to má v rámci jednoho procesu.
Co jsem pochopil, tak rekompilovat aplikace je nutné z toho důvodu, aby z jiného procesu nebylo možné přečíst paměť té rekompilované aplikace.
Pokud jde o browser, tak ono i když to budou oddělené procesy, tak mohou mít nějakou Shared paměť s citlivými daty, ale i v tom jednom tabu mohou být v paměti třeba jména/hesla k web stránkám. Jde o to, aby Javascript nebyl schopen přečíst paměť browseru a výsledky odeslat hackerovi.
útočník musí svůj kód propašovat na tvůj CPU, otázka je jak to udělat, buď tam má přístup spustí si tam cokoliv, pak je potřeba oprava cpu, mikrokódu, obrana v kernelu nebo cokoliv další. Nebo třeba útočník může svůj kód spustit přes prohlížeč na svojí webové stránce, kterou navštívíš a tady je možná oprava překompilací prohlížeče, tak aby nebyl schopný vygenerovat ASM instrukce v takovém uskupení, že by zneužily slabinu. Je to částečně záplata, ale i to se počítá.
Ty patche do browserů jsou hlavně o stížení napadení, útočník potřebuje například velmi přesný časovač, který ty patche odstraňují (Chrome i Safari znepřesnili časovače na 1 milisekundu). Pak se tam dělají další úpravy které znemožní konkrétní útoky, například použití operátoru bitové and u spekulace na array bounds a podobné. Celkem pěkný článek s JavaScript příklady je:
https://webkit.org/blog/8048/what-spectre-and-meltdown-mean-for-webkit/
Tím si nepomůžeš, exploity které jsem dosud viděl ani hrtimery nepoužívají - využívají k měření přímo x86 instrukci RDTSC a nevím o tom že by šlo jejímu použití nějak zabránit. I kdyby to šlo, stejně můžeš měřit čas počítáním počtu průchodů cyklem na druhém jádře a v tom už ti opravdu nikdo nezabrání.