Skupina výskumníkov z Amsterdamskej slobodnej univerzity odhalila niekoľko nových zraniteľností triedy Spectre-v2, publikovaných pod kódovým menom Training Solo, ktoré umožňujú obídenie mechanizmov izolácie pamäte. V kontexte virtualizačných systémov zraniteľnosti umožňujú určiť obsah pamäte hostiteľského prostredia z hostiteľských systémov, a v kontexte serverov určiť obsah pamäte jadra pri vykonávaní exploitov v priestore používateľa. Príklady exploitov pre realizáciu takýchto útokov sú publikované na GitHub. Predložené exploity umožňujú extrakciu ľubovoľných údajov z pamäte jadra rýchlosťou 17 KB/s, a z pamäte hypervízora – 8.5 KB/s.
Pri útokoch triedy Spectre-v2 sa na organizovanie úniku údajov používa podstrkovanie hodnôt do vyrovnávacej pamäte adresy vetvenia (Branch Target Buffer) alebo vyrovnávacej pamäte histórie prechodov (Branch History Buffer), ktoré sa používajú na predpovedanie ďalšej operácie vetvenia. Manipuláciou s históriou prechodov sa vytvárajú podmienky nesprávnej predpovede prechodu pri špekulatívnom vykonávaní inštrukcií. Úlohou útočníka je pri vykonávaní špekulatívnej operácie vetvenia zabezpečiť, aby bol adres prechodov prevzatý z požadovanej oblasti pamäte. Po vykonaní špekulatívneho prechodu zostáva v procesorovej vyrovnávacej pamäti prečítaná z pamäte adresa prechodu (pod zámienkou adresy sú prečítané potrebné údaje pre útočníka z pamäte). Na extrakciu informácií z vyrovnávacej pamäte môže byť použitá jedna z metód určovania obsahu vyrovnávacej pamäte založená na analýze zmien času prístupu k cache-ovaným a ne-cache-ovaným údajom.
Metódy útoku Training Solo sú zamerané na obídenie mechanizmov izolácie oblastí vykonávania (domain isolation), ako sú IBPB, eIBRS a BHI_NO, ktoré sa používajú na blokovanie útokov triedy Spectre-v2. Napríklad inštrukcia IBPB (Indirektné bariéry predpovedania vetvenia) zabezpečuje resetovanie stavu bloku predpovedania prechodu pri každom prepnutí kontextu — pri prenose riadenia medzi priestorom používateľa a jadrom alebo medzi hostiteľským systémom a hostiteľským prostredím. Resetovanie stavu blokuje možnosť použitia vlastného kódu na ovplyvnenie správania bloku predpovedania nepriamych prechodov.
Rozdiely metód Training Solo spočíva v tom, že na ovplyvnenie bloku predpovedania prechodov sa navrhuje neuvádzať kód ovládaný útočníkom, ale využiť kód, ktorý už existuje na strane privilegovaných oblastí vykonávania (jadro alebo hypervízor), z ktorých útočník dosiahne únik. Inak sú metódy podobné klasickému útoku Spectre-v2. Okrem toho výskumníci identifikovali dve hardvérové problémy (CVE-2024-28956 a CVE-2025-24495), ktoré umožňujú úplne obísť izoláciu oblastí vykonávania a realizovať úniky z procesov iných používateľov, iných hosťujúcich systémov alebo hostiteľského prostredia.

Navrhnuté sú tri typy útokov Training Solo:
- Deformácia logiky predpovedania prechodov pomocou vyvolania už existujúcich v jadre sekvencií príkazov (gadgets), ktoré ovplyvňujú obsah buffera s históriou prechodov. Ako podobné gadgets sa navrhuje využiť mechanizmus obmedzenia prístupu k systémovým volaniam SECCOMP, ktorý umožňuje prostredníctvom substitúcie vlastných BPF filtrov dosiahnuť falošný nepriamy prechod v špekulatívnom režime (filtre v SECCOMP sú definované pomocou klasického cBPF, ktorý je predvolene zapnutý na rozdiel od eBPF). Pri testovaní na CPU Intel Tiger Lake a Lion Cove bola rýchlosť úniku pri použití tejto metódy 1.7 KB/s.
- Využitie IP kolízií (Instruction Pointer) v bloku predpovedania prechodov. Útočník môže vytvoriť podmienky, za ktorých adresa pre špekulatívny prechod bude vybraná iba na základe už existujúcej v buffere adresy prechodu, bez zohľadnenia histórie prechodov. Myšlienka spočíva v tom, že jedna operácia nepriamych prechodov môže ovplyvniť inú, ak dôjde ku kolízii pri uchovávaní hashov ich adries v BTB (Branch Target Buffer).
- Využitie vplyvu priamych prechodov na predpovedanie nepriamych prechodov. Toto správanie je spôsobené dvoma hardvérovými zraniteľnosťami: CVE-2024-28956 — ITS (Indirect Target Selection) a CVE-2025-24495 — problém v CPU Intel so jadrami Lion Cove. Rýchlosť úniku dát z pamäte pri použití tejto metódy bola 17 KB/s. V predvedenom exploite na určenie hash hesla používateľa root, uloženého v pamäti po vykonaní príkazu „passwd -s“, bolo strávených 60 sekúnd.

Útok na narušenie vyrovnávacej pamäte s históriou prechodov zasiahol všetky CPU Intel, ktoré podporujú mechanizmus eIBRS, vrátane CPU Intel Coffee Lake a Lion Cove. Na zablokovanie zraniteľnosti spoločnosť Intel vydala aktualizáciu mikrocode s implementáciou novej inštrukcie IBHF (Indirect Branch History Fence), ktorú sa odporúča uvádzať po kóde ovplyvňujúcom vyrovnávaciu pamäť histórie prechodov. Pre staršie CPU Intel sa odporúča použiť softvérovú metódu čistenia histórie prechodov. Do jadra Linux sa prijalo zmeny, pridávajúce softvérové a hardvérové ochranu pred útokmi, vykonávané pomocou cBPF. Spoločnosť AMD uviedla, že na jej CPU metóda útoku nefunguje. Spoločnosť ARM oznámila, že problém sa týka iba starších procesorov ARM, zraniteľných voči útokom Spectre-v2 a nepodporujúcich rozšírenia FEAT_CSV2_3 a FEAT_CLRBHB.
Zraniteľnosť Indirect Target Selection (ITS, CVE-2024-28956) zasahuje CPU Intel Core 9-11 generácií (Cascade Lake, Cooper Lake, Whiskey Lake V, Coffee Lake R, Comet Lake, Ice Lake, Tiger Lake a Rocket Lake) a Intel Xeon 2-3 generácií. Zraniteľnosť CVE-2025-24495 sa prejavuje na CPU založených na mikroarchitektúrach Lunar Lake a Arrow Lake. Problémy boli opravené včerajšou aktualizáciou mikrocode. Do jadra Linux sa prijalo zmeny, ktoré blokujú problém premiesťovaním nepriamych prechodov do hornej časti vyrovnávacej pamäte.
Zdroj: opennet.ru
