Négy évvel ezelőtt gyülekeztek a Baljós árnyak a modern processzorok felett a Meltdown és Spectre hibák képében, valamint annak variánsai után (Újra támad a Spectre és a Meltdown) továbbra is a számítógépbiztonság-kutatók célkeresztjében vannak a spekulatív végrehajtással összefüggő hibák kutatása és feltárása.
Most egy újabb hiba került biztonsági jelentések és kernel hibajavítások formájában a publikum elé: a Retbleed. A Retbleed, vagy más néven Spectre-BTI egy spekulatív végrehajtással összefüggő támadási forma x86-64 és ARM processzorok ellen, amely a nem túl régi Intel és AMD chipeket is veszélyezteti. Azok az ARM CPU-k, amelyek sebezhetőek a Spectre indirekt elágazásokat használó oldalcsatornás támadással szemben, szintén sebezhetőek a Retbleed sebezhetőséggel is.
A sebezhetőség a Spectre 2. változathoz, azaz a branch target injection-höz (CVE-2017-5715) valamint a Spectre-BHB-hez (CVE-2022-23960) van köze, amely javítható CPU mikrókód frissítéssel is, meglévő hardveres (FEAT_CSV2), valamint a Retpoline technikával szoftveres oldalon is. Az ETH Zurich kutatói azért nevezték el támadásukat RETBLEED sérülékenységnek (CVE-2022-29900 és CVE-2022-29901), mert az a retpoline néven ismert szoftveres védelmet használja ki, amelyet 2018-ban vezettek be a spekulatív végrehajtási támadások káros hatásainak csökkentésére.
Ahogy a kutatók írják:
„A Retbleed (CVE-2022-29900 és CVE-2022-29901) az általunk Spectre-BTI-nek nevezett spekulatív végrehajtási támadások családjának új tagja, amely az elágazási célpontok beszúrását használja ki információk kiszivárgására. Testvéreivel ellentétben, amelyek a káros elágazási célpontok spekulációját közvetett ugrások vagy hívások kihasználásával váltják ki, a Retbleed a visszatérési utasításokat használja ki. Ezzel eléggé sok teendő lesz, mivel aláássa a jelenlegi Spectre-BTI védelmek egy részét.
Az egyik ilyen védekezés, amelyet ma sok operációs rendszer használ, az úgynevezett retpoline. A retpolinák úgy működnek, hogy a közvetett ugrásokat és hívásokat visszatérésekkel helyettesítik. Még 2018-ban találták ki a retpoline-t, hogy megakadályozzák, hogy az illetéktelen támadók a Spectre-BTI segítségével információkat lopjanak el a rendszer memóriájából. Bár egyesek aggódtak amiatt, hogy a (RET) visszatérések is érintettek lehetnek a Spectre-BTI támadásokra, a visszatéréseket nem tartották praktikusnak kihasználni, és az aggodalmakat csökkentették. Ennek elsődleges oka az volt, hogy a visszatérési célelőrejelzések normál mikroarchitektúra mellett nem indirekt elágazásokként jelennek meg.
Mint azonban kiderült, a Retbleed-et valóban praktikus kihasználni, köszönhetően a következő két felismerésnek:
- Rájöttünk, hogy mind az AMD, mind az Intel CPU-kon kiválthatjuk azokat a mikroarchitekturális feltételeket, amelyek arra kényszerítik a visszatéréseket, hogy indirekt elágazásokként legyenek előre jelezve. Megépítettük a szükséges eszközöket is, hogy felfedezzük a Linux kernel azon helyeit, ahol ezek a feltételek teljesülnek.
- Megállapítottuk, hogy a kernel címtartományán belül található elágazási célpontokat is be tudjuk illeszteni, akár jogosulatlan felhasználóként is. Bár a kernel címtartományán belüli elágazási célpontokhoz nem férhetünk hozzá - az ilyen célpontra történő elágazás oldalhibát eredményez -, az elágazás-előrejelző egység frissíti magát egy elágazás észlelésekor, és feltételezi, hogy az elágazás jogszerűen végrehajtásra került, még akkor is, ha az egy kernel-címre történt.
A Retbleed kihasználásának mikroarchitekturális feltételei
- Intel processzorokon a visszatérések akkor kezdenek közvetett ugrásokként viselkedni, amikor a visszatérési célelőrejelzéseket tároló Return Stack Buffer alulcsordul. Ez mély hívási verem végrehajtásakor történik. Kiértékelésünk során több mint ezer ilyen feltételt találtunk, amelyeket egy rendszerhívás kiválthat. Az Intel CPU-kra vonatkozó indirekt elágazásbecslést korábbi munkákban már tanulmányoztuk.
- AMD processzorokon a visszatérések indirekt elágazásként viselkednek, függetlenül a Return Address Stack állapotától. Valójában a visszatérési utasítás indirekt ugrással történő megmérgezésével az AMD elágazás-előrejelzője feltételezi, hogy visszatérés helyett indirekt ugrással találkozik, és következésképpen indirekt elágazási célpontot jelez előre. Ez azt jelenti, hogy minden visszatérés, amelyet rendszerhíváson keresztül elérhetünk, kihasználható – és ezekből rengeteg van.
Fantom JMP-k
Azt is megállapítottuk, hogy az AMD processzorok fantom ugrásokat (CVE-2022-23825) produkálnak: olyan elágazási előrejelzéseket, amelyek akkor is előfordulnak, ha nincs megfelelő elágazási utasítás. Ugyanazzal a technikával, amelyet a Retbleed kihasználásához használtunk, teljesen ki tudtuk hagyni a visszatérési utasítást, és megfigyelhettük az elágazás céljának előrejelzését bármely adott utasításnál. Ennek jelentős következményei vannak a feltárt támadási felületre és az elhárításokra. Ha többet szeretne megtudni, olvassa el a Retbleed-dokumentumhoz fűzött kiegészítésünket.
Kárenyhítések
A rendszermag és a hypervisor fejlesztői az Intellel és az AMD-vel együttműködve fejlesztettek ki enyhítő intézkedéseket. A Linux kernelben a Retbleed elleni védekezés jelentős erőfeszítést igényelt, 68 fájl módosítását, 1783 új sor és 387 eltávolított sor megváltoztatását jelentette. A teljesítménymérés azt mutatja, hogy a Retbleed kárenyhítése sajnos igen költségesnek bizonyult: 14% és 39% közötti sebességcsökkenést mértünk az AMD és az Intel javításokkal.”
Az első méréseket Phoronix által publikált itt találtam meg. Ezek a javítások jelenleg hatalmas teljesítményveszteséggel járnak, és a Linux kernelben beállítható, hogy a kárenyhítések be legyenek-e kapcsolva:
Érintett gépek
Ellenőriztük, hogy a Retbleed működőképes az AMD Zen 1, Zen 1+, Zen 2 és Intel Core 6, 7 és 8 generációs gépeken. Az Intel itt, az AMD pedig itt ad egy átfogóbb listát az érintett CPU-król.
Érintett a gépem?
Ha a gépben egy 0x15-0x17-es AMD CPU családba tartozó processzor vagy egy 6-8-as Intel Core generációs processzor található, akkor valószínűleg érintett. Vegye figyelembe, hogy csak a 0x17-es AMD CPU-családot (AMD Zen 1, Zen 1+ és Zen 2) teszteltük.
Ezek az eszközök nem a Spectre és a Meltdown ismertté válása előttről származnak?
Nem mindegyik. Valójában az AMD a Spectre eredeti megjelenésekor még nem dobta piacra a Zen2-t.
Csak a Linux rendszerek érintettek?
Linux-ra építettük a proof of concept kódot. De mivel az alapvető probléma hardveres szinten van, az érintett hardverrel rendelkező Microsoft és Apple számítógépek is érintettek.
Mit kell tennem?
Telepítse a legújabb operációs rendszerfrissítéseket.
Kell aggódnom?
Ha megosztott hardverrel rendelkező virtuális gépeken (például felhőben) vannak titkai, akkor tisztában kell lennie a problémával. De nem tesz jót az egészségének, ha túl sokat aggódik.
További információk
- A Retbleed sebezhetőség publikálása a USENIX Security 2022-n.
- A Retbleed kódok a Github webhelyen.
- Return Stack Buffer Underflow / Return Stack Buffer Underflow / CVE-2022-29901, CVE-2022-28693 / INTEL-SA-00702
- AMD CPU Branch Type Confusion
- Red Hat response to Retbleed (CVE-2022-29900 / CVE-2022-23816, CVE-2022-29901, CVE-2022-23825) vulnerabilities
- Are Arm CPUs affected by the RETBLEED side-channel vulnerability (CVE-2022-29900 and CVE-2022-29901) disclosed on 13 July 2022?
- Speculative Processor Vulnerability
- Spectre-BHB
- Spectre-BHB Security response updates
- Benchmarking The Linux Mitigated Performance For Retbleed: It's Painful
(forrás)