Az AMD processzorok spekulatív utasítás-végrehajtási mechanizmusának sebezhetősége

A Grsecurity projekt részleteit és bemutatót tett közzé az AMD processzorok új sebezhetősége (CVE-2021-26341) támadási módszeréről, amely a feltétel nélküli továbbítási műveletek utáni utasítások spekulatív végrehajtásához kapcsolódik. Ha a támadás sikeres, a biztonsági rés lehetővé teszi tetszőleges memóriaterületek tartalmának meghatározását. Például a kutatók elkészítettek egy exploitot, amely lehetővé teszi számukra a címelrendezés meghatározását és a KASLR (kernel memory randomization) védelmi mechanizmus megkerülését azáltal, hogy privilegizált kódot hajtanak végre az ePBF kernel alrendszerben. Más támadási forgatókönyvek sem zárhatók ki, amelyek a kernelmemória tartalmának kiszivárgásához vezethetnek.

A sérülékenység lehetővé teszi olyan feltételek létrehozását, amelyek mellett a processzor a megelőző végrehajtás során spekulatív módon feldolgozza az utasítást közvetlenül az ugrási utasítást követően a memóriában (SLS, Straight Line Speculation). Sőt, az ilyen optimalizálás nem csak a feltételes ugrás operátoroknál működik, hanem olyan utasításoknál is, amelyek közvetlen feltétel nélküli ugrást jelentenek, mint például a JMP, RET és CALL. A feltétel nélküli ugrási utasításokat követve tetszőleges, végrehajtásra nem szánt adatok helyezhetők el. Miután megállapította, hogy egy elágazás nem foglalja magában a következő utasítás végrehajtását, a processzor egyszerűen visszaállítja 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 visszakeresési technikák segítségével történő elemzéshez.

A Specter-v1 sebezhetőség kihasználásához hasonlóan a támadáshoz bizonyos utasítássorozatok (gadgetek) jelenléte szükséges a kernelben, amelyek spekulatív végrehajtáshoz vezetnek. A sérülékenység blokkolása ebben az esetben az ilyen modulok kódban való azonosításából és a spekulatív végrehajtást blokkoló további utasítások hozzáadásával jár. A spekulatív végrehajtás feltételeit az eBPF virtuális gépen futó, nem jogosult programok is létrehozhatják. A modulok eBPF használatával történő létrehozásának megakadályozásához javasoljuk, hogy tiltsa le az eBPF-hez való jogosulatlan hozzáférést a rendszerben („sysctl -w kernel.unprivileged_bpf_disabled=1”).

A sérülékenység a Zen1 és Zen2 mikroarchitektúrán alapuló processzorokat érinti, beleértve az AMD EPYC és AMD Ryzen Threadripper processzorok első és második generációját, valamint az AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper processzorokat. PRO és APU sorozatú processzorok A. Az utasítások spekulatív végrehajtásának blokkolásához javasolt az INT3 vagy LFENCE utasítások meghívása az elágazási műveletek után (RET, JMP, CALL).

Forrás: opennet.ru

Hozzászólás