Az Intel processzorainál egy újabb biztonsági rést talált néhány biztonságtechnikai kutató, akik egyetemi kutatókkal együttműködve dolgoztak a jelenség feltárásán. A Spectre jellegű, vagyis a spekulatív végrehajtást támadó sebezhetőségnek háromféle változata van, amelyek más és más kódnév alatt futnak: kettő a normál konfigurációkat érinti, a harmadik pedig a virtualizációt használó adatközpontokra lehet veszélyes, ahol egy processzormagon két vendég operációs rendszer osztozik, hála a HT támogatásnak.
Miről van szó?
A Foreshadow kódnévre keresztelt sebezhetőség három típusát az alábbi felsorolás tartalmazza, természetesen az összes használatban lévő névvel együtt.
- L1 Terminal Fault SGX: CVE-2018-3615, azaz Foreshadow
- L1 Terminal Fault OS/SMM: CVE-2018-3620, azaz Foreshadow-NG
- L1 Terminal Fault VMM: CVE-2018-3646, azaz Foreshadow-NG
A fenti három sebezhetőség esetében feltétlenül ki kell emelni, hogy mindegyik kiaknázásához helyi felhasználói hozzáférésre van szükség, de a veszélyességük miatt így is magas besorolást kaptak, azaz komoly biztonsági kockázatot jelentenek. A kutatók természetesen időben értesítették az Intel szakembereit, így most, mikor a legújabb biztonsági résre fény derül, már rendelkezésre állnak mikrokód-frissítések, operációs rendszer szintű frissítések, illetve a virtualizációt biztosító Hypervisorok esetében is rendelkezésre áll a védekezésre alkalmas frissítés.
Ha az adott helyzet megköveteli, a HT támogatás letiltásával kihúzható az L1TF sebezhetőség méregfoga, igaz, ez a teljesítmény jelentős csökkenésével jár – minden érintettnek a saját helyzete alapján kell mérlegelnie, milyen szükséges lépéseket kell megtennie a biztonság növelése érdekében. Utóbbi megoldás azoknál a virtualizációra támaszkodó rendszereknél lehet szükséges, ahol nem biztonságos vendég operációs rendszerek is futnak a kiszolgálón – például ha nincsenek frissítve.
Hogyan támadják az L1 Cache-t?
Amikor egy alkalmazás hozzá szeretne férni egy bizonyos adathoz, ami a memóriában foglal helyet, a rendszer fordítást végez a logikai (virtuális) és a fizikai memóriacím között. Amennyiben a fordítás során kiderül, hogy az adott logikai vagy lineáris cím nincs hozzárendelve egy fizikai címhez az adott hardveren, hiba történik (terminal fault). A feldolgozás gyorsítása végett azonban a rendszer nem várja meg, míg a virtuális címből fizikai lesz (ez ugyanis elég sokáig eltarthat), hanem mint az elágazásbecsléseknél, betippeli, hogy márpedig ott van az adat a gyorsítótárban, és elkezd vele dolgozni. Amennyiben kiderül, hogy nincs a memóriában az adat, és hibás adatokkal dolgozott a processzor, akkor természetesen, mint egy rossz elágazásbecslésnél, kukázza az addig megcsinált műveleteket és újrakezdi a munkát a már jó adatokkal. Az L1 Terminal Fault viszont pont ezt a spekulatív működést használja ki, hogy a processzor elkezd dolgozni, kis túlzással olyasmin, amiről azt sem tudja biztosan mi az. Az L1 gyorsítótárban lévő adat így kinyerhető egy oldalcsatornás támadással, hasonlóan a Meltdownhoz, csak itt nem az elágazásokat támadják.
A kutatók szerint négy esetnél szükséges az operációs rendszer szintű javítás elvégzése.
- Azoknál a memórialapoknál, ahol nincs érvényes hozzárendelés
- Azoknál a memórialapoknál, amelyek időközben más adattárolóra lettek átmozgatva – például memóriahiány miatt
- Azoknál a memórialapoknál, amelyeknél az alkalmazás kérte az operációs rendszert a hozzáférés letiltásátta
- Azoknál a memórialapoknál, amelyek éppen átmeneti állapotban vannak, vagyis ahol az operációs rendszernek a hozzáférés ideiglenes blokkolására van szüksége
A Foreshadow első változata az Intel SGX technológiáját támadja, amelynek pont az a feladata, hogy védje a kényes adatokat. A sebezhetőségen keresztül a támadó kinyerheti az SGX lezáró kulcsokat, így az előzőleg lezárt adatokat módosíthatja és újra lezárhatja. A kulcsok birtokában a támadó érvényes MAC (Message Authentication Code) számítására is képes, így az adatok tulajdonosa nem veszi észre a módosításokat. Ezzel a módszerrel kényes felhasználói adatokhoz juthat a hacker az L1 adatgyorsítótáron keresztül.
A kutatók szerint Foreshadow-NG névre keresztelt sebezhetőségen keresztül az adott rendszeren futó kártékony kód hozzáférhet egyes kernel adatrészekhez. Mivel a kernel hozzáférhet az egyéb alkalmazások által tárolt adatokhoz, így a kártékony kód a sebezhetőséget kiaknázva más alkalmazások adatait is olvashatja, ami igen komoly problémákat okozhat.
Mely processzorok vannak veszélyben?
Az Intel hivatalos weboldala szerint az alábbiak, gyakorlatilag az elmúlt 10-15 év minden modellje.
- Intel® Core™ i3 processor (45nm és 32nm)
- Intel® Core™ i5 processor (45nm és 32nm)
- Intel® Core™ i7 processor (45nm és 32nm)
- Intel® Core™ M processor family (45nm and 32nm)
- 2nd generation Intel® Core™ processors
- 3rd generation Intel® Core™ processors
- 4th generation Intel® Core™ processors
- 5th generation Intel® Core™ processors
- 6th generation Intel® Core™ processors **
- 7th generation Intel® Core™ processors **
- 8th generation Intel® Core™ processors **
- Intel® Core™ X-series Processor Family for Intel® X99 platforms
- Intel® Core™ X-series Processor Family for Intel® X299 platforms
- Intel® Xeon® processor 3400 series
- Intel® Xeon® processor 3600 series
- Intel® Xeon® processor 5500 series
- Intel® Xeon® processor 5600 series
- Intel® Xeon® processor 6500 series
- Intel® Xeon® processor 7500 series
- Intel® Xeon® Processor E3 Family
- Intel® Xeon® Processor E3 v2 Family
- Intel® Xeon® Processor E3 v3 Family
- Intel® Xeon® Processor E3 v4 Family
- Intel® Xeon® Processor E3 v5 Family **
- Intel® Xeon® Processor E3 v6 Family **
- Intel® Xeon® Processor E5 Family
- Intel® Xeon® Processor E5 v2 Family
- Intel® Xeon® Processor E5 v3 Family
- Intel® Xeon® Processor E5 v4 Family
- Intel® Xeon® Processor E7 Family
- Intel® Xeon® Processor E7 v2 Family
- Intel® Xeon® Processor E7 v3 Family
- Intel® Xeon® Processor E7 v4 Family
- Intel® Xeon® Processor Scalable Family
- Intel® Xeon® Processor D (1500, 2100)
** Ezeket a modelleket az SGX (CVE-2018-3615) sebezhetőség veszélyezteti
Hogyan lehet védekezni?
Egyrészt folyamatosan frissen kell tartani az adott operációs rendszert, vagyis minden érkező biztonsági frissítést telepíteni kell, ugyanakkor az esetleges mikrokód-frissítésekre is figyelmet kell fordítani, azaz BIOS frissítésre is szükség van. Szoftver terén megoldás az IA32_FLUSH_CMD (MSR 0x10B) regiszter használata, amelyen keresztül bizonyos jogosultság-váltások során kiüríthető az elsőszintű adat-gyorsítótár tartalma.
A sebezhetőség elleni frissítések az Intel szerint már elérhetőek, így a támadási felület könnyedén és gyorsan csökkenthető. Az Intel szerint a korábbi frissítésekkel ellentétben az L1TF sebezhetőséget javító kódok nem okoznak észrevehetőteljesítménycsökkenést, ami mindenképpen jó hír. Az L1TF sebezhetőséggel kapcsolatos további tudnivalók az Intel hivatalos weboldalán olvashatók.