Branch Target Reuse, nový útok typu Spectre v2 cílící na JIT kompilátory

Sdílet

Intel procesor CPU chladič Autor: Depositphotos

Výzkumníci z VUSec přišli na další způsob, jak vrátit do života Spectre v2. Nový útok se jmenuje Branch Target Reuse a týká se just-in-time (JIT) kompilátorů, tedy mimo jiné i Linuxového cBPF, Oracle GraalVM či JavaScript enginu Mozilla SpiderMonkey. Linux už záplaty má, Oracle zařadil randomizaci pro příslušnou cache, Firefox pracuje na dotažení site isolation.

Branch Target Reuse využívá spekulativního execute-after-free v rámci JIT kompilátorů a vlastnosti Branch Prediktoru v CPU, který udržuje předchozí předpřipravený spekulativní skok. Útočník využije toho, že procesor si v Branch Target Bufferu pamatuje cíle nepřímých skoků, i když je původní JIT kód mezitím odstraněn. Procesor si u původního kódu uloží informaci, kam vedou nepřímé skoky. Tato informace zůstává k dispozici i po odstranění tohoto kódu a pokud útočník nahraje nový kód na stejnou virtuální adresu, je možné provést skok na místo, které je z původního cíle skoku pro předchozí úlohu a vykonat tak zde předpřipravené instrukce původní úlohy. Tyto instrukce, které útočníkovu kódu nepřísluší, se provedou a skrze postranní kanál v rámci cache lze data získat. Tempo není vysoké, jde o jednotky kB za sekundu, ale útok je funkční.

Zdroj: Youtube.com

V Linuxu jsou již opravy, jde o řešení pro dvě CVEčka. Na Linuxu se nově vynucuje provádění mechanismu Indirect Branch Predicor Barrier (IBPB). Oracle zavádí pro GraalVM randomizaci lokací JIT code-cache, což výrazně snižuje pravděpodobnost trefení stejné adresy, o kterou útočníkovi může jít. Mozilla zvažovala řešení na bázi IBPB, avšak nakonec volí cestu dokončení a nasazení site isolation.

Obecně mezi dotčenými uživateli jsou všichni uživatelé procesorů AMD, Intel, ARM, obecně všechny procesory s indirect branch prediction. U každé architektury jde o různou mírou dopadu. BTR exploituje právě desynchronizaci mezi prediktorem větvení a aktuálním stavem kódu, kdy žádné současné procesory nemají mechanismus, aby tyto dvě věci udržovaly synchronní.

Našli jste v článku chybu?

Autor zprávičky

Příznivec open-source rád píšící i o ne-IT tématech. Odpůrce softwarových patentů a omezování občanských svobod ve prospěch korporací.