Az Amsterdam Free University kutatócsoportja felfedezte a „Native BHI” (CVE-2024-2201) nevű támadási módszert, amely lehetővé teszi az Intel processzorral rendelkező rendszerek számára, hogy a felhasználói térben végrehajtott exploitok során meghatározzák a Linux kernel memória tartalmát. Virtualizációs rendszerekre alkalmazva a támadó a vendég rendszerből képes meghatározni a gazda környezet vagy más vendég rendszerek memória tartalmát.
A Native BHI módszer egy alternatív technikát kínál a BHI (Branch History Injection, CVE-2022-0001) sérülékenység kihasználására, amely megkerüli a korábban megvalósított védelmi módszereket. A 2022-ben javasolt BHI támadási módszer a priviligizáltság egy szintjén belüli sérülékenység kihasználására épült, ahol az exploit egy eBPF program végrehajtására támaszkodott, amelyet a felhasználó töltött be a kernelbe. A sérülékenység blokkolásához elegendő volt a kód végrehajtásának korlátozása az eBPF számára a normál felhasználók számára.
Az új Native BHI módszer nem igényel eBPF hozzáférést, és lehetővé teszi a támadások elvégzését alacsonyabb privilégiumú felhasználók számára a felhasználói térből. A módszer a kernel kódjában található meglévő gadgetek - parancsok sorozatai, amelyek spekulatív végrehajtást idéznek elő - végrehajtásán alapul. A kernelben megfelelő gadgetek keresésére egy külön eszközkészlet, az InSpectre Gadget lett kifejlesztve, amely a 6.6-rc4 kernel elemzése során 1511 Spectre gadgetet és 2105 diszpécser gadgetet azonosított.

A felfedezett gadgetek alapján a kutatók egy exploitot készítettek, amely lehetővé teszi a kernel pufferjeiből a root felhasználó jelszó hash értékének kiemelését, amely a /etc/shadow fájlból lett betöltve. A kernel memória tartalmából való adatkinyerés sebessége körülbelül 3.5 Kb másodpercenként.

A BHI módszer a Spectre-v2 támadás kibővített változata, amely a hozzáadott védelem (Intel eIBRS és Arm CSV2) megkerülésére és az adatszivárgás megszervezésére globális elágazási történeti puffer (Branch History Buffer) értékek behelyettesítéseken keresztül használja, amelyet a CPU a lebegési jóslások pontosságának növelésére alkalmaz. A támadás során az elágazási történet manipulálásával rosszindulatú elágazó feltételezések és a szükséges utasítások spekulatív végrehajtásának körülményei jönnek létre, melynek eredménye a gyorsítótárban tárolódik.
A Spectre-v2 támadástól való eltérések lényege, hogy az elágazási történeti puffert (Branch History Buffer) használja ahelyett, hogy az elágazási célpuffert (Branch Target Buffer) alkalmazná. Az adatok memóriából való kinyeréséhez a támadónak olyan feltételeket kell teremtenie, amelyek mellett a spekulatív művelet végrehajtásakor az cím olyan területről származik, amelyet meg kell határozni. A spekulatív közvetett elágazás végrehajtása után a memóriából olvasott elágazási cím a gyorsítótárban marad, ezért annak kinyerésére alkalmazható az egyik módszer, amely a gyorsítótárhoz való hozzáférési idő változásának elemzésén alapul.
A Native BHI támadás ellen a védelem nem nyújt védelmet az Intel IBT (Indirect Branch Tracking) utasítások alkalmazásával és a Linux kernelben megvalósított FineIBT védelmi mechanizmussal szemben, amely egyesíti az IBT hardveres utasításait és a kCFI (kernel Control Flow Integrity) program-alapú védelmet a végrehajtási sorrend megszakításának megakadályozására. A FineIBT lehetővé teszi az utolsó közvetett elágazást csak az ENDBR utasításra, amely a funkció elején található. Ezen felül (a kCFI mechanizmussal analóg módon) hash-ellenőrzések történnek, amelyek garantálják a mutatók változatlanságát.
Az új támadási változat ellen a Linux kernelbe egy új védelmi módot építettek be, amely az Intel által javasolt hardveres védelmi eszközöket (BHI_DIS_S) vagy alternatív program-alapú védelmet alkalmazza, amely a hiperháló védelme érdekében került megvalósításra. KVM. A Xen hypervisor fejlesztői javítást adtak ki, amely a BHI_DIS_S módszer használatára épül, korlátozva a predikciót a végrehajtások előzményeinek alapján. A BHI_DIS_S támogatása elérhető az Intel Alder Lake processzorokban, valamint a szerver CPU-kban, kezdve az Intel Sapphire Rapids-től. Elérhető egy szoftveres védelmi mód is, amely a végrehajtások történeti puffertörlésének használatán alapul, de ez észlelhető teljesítménycsökkenéshez vezet.
Forrás: opennet.ru
