TL;DR
Spectre wraca w wersji, która nie uczy procesora niczego nowego, tylko korzysta z tego, co ten już wie. Branch Target Reuse wykorzystuje fakt, że CPU przez chwilę pamięta przewidywania skoków dla kodu, który właśnie zniknął z pamięci. Jeśli w to samo miejsce trafi nowy kod, procesor może przez moment użyć starego przewidywania do jego wykonania spekulatywnego — a to otwiera drzwi do klasycznych technik Spectre.
Najbardziej podatne są środowiska z kompilacją just-in-time, czyli przeglądarki i maszyny wirtualne, które bez przerwy generują i kasują kod. Badacze z VUSec i Scuola Superiore Sant'Anna potwierdzili problem na procesorach Intela, AMD i Arm, a działające PoC wyciągały dane z jądra Linuksa (choć w tempie raptem kilku bajtów na sekundę) oraz hashe haseł roota.
Pełnej łatki mikrokodowej na razie nie ma — poprawki wprowadzono na poziomie oprogramowania, między innymi w obsłudze JIT-a eBPF w Linuksie i w Oracle GraalVM. Dla kogoś, kto pisze lub utrzymuje silniki JIT, to dobry moment, żeby sprawdzić, czy temat go dotyczy.
Spectre wraca w kolejnej odsłonie. Szczegóły techniki nazwanej Branch Target Reuse, w skrócie BTR, przedstawili w publikacji badacze z VUSec oraz Scuola Superiore Sant’Anna. Działa...
Czytaj cały wpis u źródła