A Bitdefender kutatói
A sérülékenység a Spectre v1 osztályba tartozik, és azon az elgondoláson alapul, hogy a processzor gyorsítótárából vissza kell állítani az utasítások spekulatív végrehajtása után megmaradt adatokat. A teljesítmény javítása érdekében a modern CPU-k elágazás-előrejelző egységei néhány olyan utasítás előzetes végrehajtását használják, amelyek végrehajtása a legnagyobb valószínűséggel történik, de nem várják meg a végrehajtásukat meghatározó összes tényező kiszámítását (például ha az elágazási feltételek vagy a hozzáférési paraméterek nem. még kiszámítva). Ha az előrejelzés nem igazolódik be, a processzor elveti a spekulatív végrehajtás eredményét, de az alatt feldolgozott adatok a processzor gyorsítótárában maradnak, és visszaállíthatók az oldalcsatornákon keresztül a gyorsítótár tartalmának meghatározására szolgáló módszerekkel, a hozzáférés változásának elemzésével. idő a gyorsítótárazott és nem gyorsítótárazott adatokhoz.
Az új támadás sajátossága a SWAPGS utasítás spekulatív végrehajtása során fellépő szivárgás használata, amelyet az operációs rendszerekben a GS regiszter értékének helyettesítésére használnak, amikor a vezérlés a felhasználói térből az operációs rendszer kernelébe (a GS) kerül át. a felhasználói térben használt érték lecserélődik a kernelben végzett műveletek során használt értékre). A Linux kernelben a GS egy per_cpu mutatót tárol a kerneladatok eléréséhez, a felhasználói terület pedig a TLS-re (Thread Local Storage) mutató mutatókat.
Annak elkerülése érdekében, hogy a SWAPGS utasítás kétszeri meghívását elkerülje, amikor ismét kernelterületről éri el a rendszermagot, vagy olyan kódot hajt végre, amely nem igényel GS-regiszter módosítást, az utasítás előtt egy ellenőrzést és egy feltételes elágazást hajtanak végre. A spekulatív végrehajtási motor proaktív módon végrehajtja a kódot a SWAPGS utasítással anélkül, hogy megvárná az ellenőrzés eredményét, és ha a kiválasztott ág nem erősíthető meg, elveti az eredményt. Így olyan helyzet állhat elő, amikor egy SWAPGS végrehajtást nem igénylő ágat spekulatív módon választanak ki, de a spekulatív végrehajtás során a GS regiszter értékét a SWAPGS utasítás megváltoztatja és a függő memóriaműveletekben használja, amelyek a CPU gyorsítótárába kerülnek.
A kutatók két támadási forgatókönyvet javasoltak, amelyekhez exploit prototípusokat készítettek. Az első forgatókönyv azon a helyzeten alapul, amikor a SWAPGS utasítást nem spekulatív módon hajtják végre, bár ténylegesen a végrehajtás során használják, a második pedig az ellenkezője, amikor a SWAPGS utasítást spekulatív módon hajtják végre, bár valójában nem szabadna végrehajtani. Mindegyik forgatókönyv esetében két lehetőség van a kihasználásra: a támadó meghatározhatja az értéket a kernelterület egy adott címén, a támadó pedig kereshet egy adott értéket a kernel véletlenszerű címein. A támadás végrehajtása hosszú időt vesz igénybe, és a kihasználás több órát is igénybe vehet a szivárgás befejezéséhez.
Probléma van a Linux kernelben
A javítás megköveteli a kernelfrissítés telepítését mind a gazdagépen, mind a vendégkörnyezeten, majd a rendszer újraindítását. A védelem letiltásához Linuxon a "nospectre_v1" opció használható, amely letiltja a SWAPGS sebezhetőséget blokkoló intézkedéseket is. A javítás elérhető, mint
A Bitdefender kutatói szerint az Intel még tavaly augusztusban értesült a problémáról. A probléma programozott megoldása mellett döntöttek, amelyhez a Microsoft, a Google és a Linux kernel fejlesztőit bevonták a javítás összehangolt kidolgozásába. A régebbi Intel processzorokat, az Ivy Bridge előtti processzorokat sokkal nehezebb megtámadni az exploit során használt WRGSBASE utasítás támogatásának hiánya miatt. Az ARM, POWER, SPARC, MIPS és RISC-V rendszereket nem érinti a probléma, mert nem támogatják a SWAPGS utasítást.
A probléma elsősorban az Intel processzorok tulajdonosait érinti -
Az AMD rendszereken csak a második támadási forgatókönyv volt reprodukálható, amely a GS-regiszter alapértékének spekulatív feldolgozására korlátozódik, amivel konkrét értékeket lehet keresni a véletlenszerű memóriaterületeken. Ennek a támadási lehetőségnek a blokkolásához
Forrás: opennet.ru