A Grsecurity projekt közzétette egy támadási módszer részleteit és bemutatóját egy új sebezhetőség (CVE-2021-26341) elhárítására az AMD processzorokban, amely az utasítások feltétel nélküli előreugrások utáni spekulatív végrehajtásával kapcsolatos. Egy sikeres támadás lehetővé teszi tetszőleges memóriahelyek tartalmának meghatározását. Például a kutatók kifejlesztettek egy olyan kihasználó mechanizmust, amely lehetővé teszi a címleképezés meghatározását és a kernel memória randomizálás (KASLR) védelmi mechanizmusának megkerülését azáltal, hogy nem privilegizált kódot hajt végre az ePBF kernel alrendszerben. Más támadási forgatókönyvek is lehetségesek, amelyek kernel memóriaszivárgásokhoz vezethetnek.
A sebezhetőség lehetővé teszi a processzor számára, hogy spekulatív módon végrehajtson egy utasítást közvetlenül egy ugró utasítás (SLS, vagy egyenes vonalú spekuláció) után az előzetes végrehajtás során. Ez az optimalizálás nemcsak a feltételes ugrás operátorainál működik, hanem olyan utasításoknál is, amelyek közvetlen, feltétel nélküli ugrást implikálnak, mint például a JMP, RET és CALL. A feltétel nélküli ugrás utasításokat tetszőleges, nem végrehajtásra szánt adat követheti. Miután megállapította, hogy az ugrás nem jelenti a következő utasítás végrehajtását, a processzor egyszerűen visszagörgeti az állapotot, és figyelmen kívül hagyja a spekulatív végrehajtást, de az utasítás végrehajtásának nyoma a megosztott gyorsítótárban marad, és elérhető az oldalcsatornás kinyerési módszerekkel történő elemzéshez.
A Spectre-v1 sebezhetőséghez hasonlóan a támadáshoz bizonyos utasítássorozatok (gadget-ek) jelenléte szükséges a kernelben, amelyek spekulatív végrehajtáshoz vezetnek. A sebezhetőség blokkolása azonban magában foglalja az ilyen gadget-ek azonosítását a kódban, és további utasítások hozzáadását, amelyek blokkolják a spekulatív végrehajtást. Spekulatív végrehajtási feltételek létrehozhatók olyan, nem privilegizált programok segítségével is, amelyek a következő rendszermagban futnak: virtuális gép eBPF. Az eBPF használatával történő eszközépítés megakadályozása érdekében ajánlott letiltani az eBPF-hez való jogosulatlan hozzáférést a rendszerben ("sysctl -w kernel.unprivileged_bpf_disabled=1").
A sebezhetőség a Zen1 és Zen2 mikroarchitektúrán alapuló processzorokat érinti, beleértve az első és második generációs AMD EPYC és AMD Ryzen Threadripper processzorokat, valamint az AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper PRO és A-sorozatú APU-kat. Az utasítások spekulatív végrehajtásának megakadályozása érdekében ajánlott az INT3 vagy LFENCE utasításokat meghívni az elágazási műveletek (RET, JMP, CALL) után.
Forrás: opennet.ru
