A Linux 6.18 fejlesztése a végéhez közeledik, és a vasárnapra várt első kiadásjelölt (Linux 6.18-rc1) előtt még egy fontos x86-os javításcsomag is beolvadásra került. Ebbe a frissítésbe bekerült egy Retpoline-optimalizáció is, amelyet kifejezetten az Intel E-magok (E cores) hatékonyabb működése érdekében készítettek. A módosítást Peter Zijlstra, az Intel egyik vezető fejlesztője készítette, és az x86 architektúra magkódját (x86 core code) érinti.
Hat évnyi viszonylagos nyugalom után ismét támadhatóvá váltak az Intel modern processzorai egy új, kritikus biztonsági rés révén. A Branch Privilege Injection (BPI) névre keresztelt sebezhetőséget (CVE-2024-45332 és CVE-2024-43420) a kutatók a Spectre-BTI (Branch Target Injection) típusú oldalsávos támadások új generációjaként azonosították – és ezzel gyakorlatilag visszatértek a 2018-ban felfedezett Spectre sebezhetőségek legsúlyosabb formái.
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 Spectre 2. változatához, azaz a branch target injection (CVE-2017-5715) és a Spectre-BHB-hez (CVE-2022-23960), 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 injektálá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 injektálni, 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.
A PACMAN egy újszerű hardvertámadás, amely képes megkerülni a Apple M1 CPU-n a Pointer Authentication (PAC) rendszert. A felfedezést tevő MIT CSAIL kutatók, az alábbiakbna mutatják be ezt a támadási formát:
(Frissítve) A Spectre nevű sérülékenység két hibája többé-kevésbé minden modern processzort, a Meltdown pedig az Intel elmúlt 10 évben megjelent valamennyi processzoraát és néhány erősebb ARM processzort érint – lehetővé téve adatszivárgást. Az Intel Management Engine sebezhetőségei pedig távoltól teszik elérhetővé a gépet. Mindegyik hibára született már hibajavítás, ezek telepítése elengedhetetlen lesz a jövőben a számítógépek biztonságos üzemeletetéséhez. Az első javítások még januárban jelentek meg, de az Intel mikrokód frissítés és a Windows frissítés is olyan hibákat okozott, mely után a gyártók újabb javításokat adtak ki.
Torvaldsnál most épp az Intel Spectre 2 sebezhetőségre adott javítás borította ki a bilit, amely a szakember szerint (is) több sebből vérzik. Torvalds úgy gondolja, hogy az Intel processzorait túlságosan visszavetné, ha az összes érintett termék tisztességes javítást kapna. Ezért a gyártó most tűzoltást végez, biztonsági javítás helyett sokkal inkább egy új, opcionálisan bekapcsolható védelmi funkcióként kezeli a Spectre 2-re adott megoldást.