ITMA Hungary

Informatikai képzések vezetőknek

Biztonsági rés a processzorokban: Meltdown és Spectre

2018. január 04. 14:37 - GernerPéter

A processzorok jobb számítási teljesítménye érdekében bevezetett funkcióban megtalált hibák és hiányosságok az egyik legsúlyosabb számítógépes biztonsági veszélyeztetettséget tárták fel január első napjaiban. A nyáron a Google által megtalált és gyártók számára jelentett első hiba és a később azonosítottak végül az év végén váltak széleskörűen ismertté, amikor megjelentek az első javítások a Linux forráskódjában. A hiba egyes fajtái operációs rendszertől függetlenül szinte az összes számítógépet, szervert és okostelefont érintik. Kihasználásával felhasználói jogosultsággal lehet rendszerszintű adatokhoz hozzáférni, lényegében az operációs rendszerek biztonsági rendszereit lehet megkerülni.

meltdown.png

Védekezni hibákat kihasználó támadások ellen jelenleg nem lehet, meg kell várni az operációs rendszerek frissítését, bár egyelőre rosszindulatú támadásokra sem derült fény.

Mi történt?

A modern processzorok egyik funkcióját kihasználó sérülékenységet azonosított a Google biztonsági csapata még 2017. június 1-jén, majd a szakmai szabályok szerint értesítette a gyártókat is. A következő hónapokban más kutatók is, például a Graz-i egyetemen, azonosították a sérülékenységet és annak különböző kihasználási lehetőségeit.

A sérülékenység ugyanakkor 2018 elejéig nem került a széles nyilvánosság elé. Mivel a processzorokban lévő sérülékenységet a leggyorsabban az operációs rendszerekben lehet javítani, így karácsony után olyan javítások jelentek meg a Linux forráskódban, majd a Windows tervezett frissítései között, amelyek először utaltak a szakmai nyilvánosságban komoly veszélyeztetettségre. Erről aztán 2018 január 2-án jelent meg az első cikk, egy napra rá a Google biztonsági csapata közzétette a probléma részletes leírását, valamint az Intel elismerte, hogy mások mellett érintett a hibában.

A feltárt hibák érintik az Intel, az AMD és az ARM számos modern processzorát, pontosabban azok adattároló memóriájának (data cache) időzítő mechanizmusát. A hibát kihasználva egy támadó a processzor memóriájában ideiglenesen tárolt adatokat, legyen az egy másik alkalmazás adata, vagy az operációs rendszer (kernel) által kezelt adat, tudja folyamatosan, 1500-2000 byte/másodperc sebességgel, kiolvasni.

A cikk írásakor még számos operációs rendszerhez készülnek a végleges javítások, melyek megjelenésére még várni kell, de az Apple a 10.13.2-es OSX verzióval már javította a processzor sérülékenységét, január 4-én a Linux forráskódba is bekerült a javítás, illetve a Microsoft is közzétette az ajánlásait. A problémát kiaknázó támadásokról január 4-ig nem található hír.

Mit tudunk

Eddig három féle veszélyeztetettség vált ismertté a Google leírásában, melyek különböző kitettséget okoznak az egyes gyártók processzoraival kapcsolatban. A feltárt hibák a modern processzorok adattároló memóriájának (data cache) időzítő mechanizmusát érintik.

  • Bounds Check Bypass: egy számítógépen megfelelő jogosultsággal nem rendelkező felhasználó által futtatott kóddal olvashatóvá válik az operációs rendszer védett memóriája. OS frissítéssel, a kernel és a felhasználói memória szigorú elkülönítésével kezelhető a hiba.
  • Branch Target Injection: virtuális szerverkörnyezetben a támadó egy virtuális (guest) rendszerből a gazdagép (host) rendszermemóriáját (kernel) tudja olvasni 1500 byte/másodperc sebességgel.
  • Rogue Data Cache Load: ez a sebezhetőség azt használja ki, hogy aszinkron módon történik az adatok beolvasása a processzor memória cache-be és a hozzáférési jogosultság ellenőrzése, azaz megtörténhet, hogy védett adatok kerülnek a jogosultság ellenőrzése előtt beolvasásra és válnak így illetéktelenek számára hozzáférhetővé. A hiba szintén javítható OS szinten, viszont az aszinkronitás kikapcsolása több rendszerhívást és lassúbb működést fog jelenteni. Az AMD ebben a hibában nem érintett.

A hibát kihasználva egy támadó a processzor memóriájában ideiglenesen tárolt adatokat, legyen az egy másik alkalmazás adata, vagy az operációs rendszer (kernel) által kezelt adat, tudja folyamatosan, 1500-2000 byte/másodperc sebességgel, kiolvasni.

A hibák oka abban a funkcióban van, melyet előszeretettel használnak a gyártók a processzor teljesítményének növelésére. Így iparági gyakorlattá vált, hogy a processzor előre megsejt, és akár feleslegesen elvégez olyan számításokat is, melyekről csak később válik el, hogy tényleg szükség volt-e rá, vagy hogy volt-e egyáltalán jogosultsága a végrehajtáshoz. Ha szükség volt a számításra, akkor máris ott van az eredmény, hiszen előre kiszámolta, és a többi feleslegesen kiszámolt eredmény a processzor eldobja. Ezt az eljárás a „speculative execution”. A feltárt veszélyeztetettség abban áll, hogy a memória cache-be nem a műveleti sorrendben kerülnek be az adatok, hanem a processzor előrejelzése szerint, és ekkor nem ellenőrzik megfelelően a hozzáférési jogosultságokat. Így biztonsági algoritmusokkal nem védett adatokat lehet jogosulatlanul a lefoglalt memóriaterületen túli olvasással (out-of-bounds read) addig elérni, amíg a processzor azokat el nem dobja. Ezzel az memóriaterületen túli olvasással akár az operációs rendszer (kernel) memóriája is olvasható, egyes források szerint meg is változtatható, ami például biztonsági eljárások kikapcsolására is használható.

A sérülékenység súlyosságát az okozza, hogy olyan hardverhibáról van szó, melyet minden modern számítógépen, legyen az személyi számítógép, laptop, szerver, virtuális szerver felhő szolgáltatásban, okostelefon és táblagép, vagy speciális rendszer, ki lehet használni. A Google biztonsági csapata a hibát az Intel Haswell Xeon processzoron, AMD FX és PRO CPU-n, valamint a Google Nexus telefonokon is használt ARM Cortex A57 processzoron is igazolta. Az AMD (https://www.amd.com/en/corporate/speculative-execution) és az ARM (https://developer.arm.com/support/security-update) is elismerte a hibát és megadja a pontos érintettségét. Az Apple posztja szerint minden Mac és iOS rendszer, azaz az Apple számítógépei és telefonjai is érintettek.

A felhőben (virtualizált szervereken) a kernelt megosztva használó technológiák, azaz a konténertechnológiára alapuló megoldások, mint a docker, OpenVZ vagy LXC alapú architektúrák érintettek. Valós (teljes) virtualizációs megoldásoknál is leírtak olyan eseteket, ahol egy közös szerveren futó virtuális rendszerek között egy rosszindulatú rendszerből más rendszer adataihoz lehet hozzáférni. A Microsoft is emelt szintű kockázatra hívja fel a figyelmet Hyper-V hosztok esetén.

A fenti hibákat tipizálva Meltdown kódnévre keresztelték azt az támadási módot, amely áthatol a felhasználói programok és az operációs rendszer közti védelmen, és olvasni tudja a számítógép memóriájában éppen tárolt információkat, legyenek azok más programok adatai vagy az operációs rendszer által feldolgozott más információ.

Egy másik, Spectre kódnevű támadási móddal a hibákat kihasználva egy másik, akár minden biztonsági szabályt betartó alkalmazásból lehet ott védett, érzékeny adatokhoz hozzáférni. A Meltdown-hoz képest A Spectre egy jóval bonyolultabb eljárás, de nehezebb és ellene védekezni.

Mit tehetünk?

A hibát kihasználó Meltdown típusú támadások kockázatát operációs rendszer szinten lehet kezelni. Ennek során elszigetelik egymástól a felhasználói adatokat és a kernelt, hogy egy memóriaterületen túli olvasással ne lehessen illetéktelen adatokat kiolvasni. Ezek a javítások a nagyobb biztonságért cserébe valamelyest csökkenteni fogják a számítógépek teljesítményét, és egyes vélemények szerint nem védenek minden lehetséges támadási fajta ellen sem. Az operációs rendszerek szállítói folyamatosan megjelennek a frissítésekkel, azokat kell telepíteni. Az első mérések szerint a felhasználás módjától és a processzor konkrét típusától függően 5-30% teljesítménycsökkenés várható a biztonságosabb adatkezelésért cserébe.

A Spectre eljárást használó konkrét támadások ellen az alkalmazások kódjának frissítésével és változtatásával lehet védekezni, de ehhez egyedi megoldások és a probléma pontos ismerete szükséges.

Részleges védelmet nyújt, amennyiben a támadó nem rendelkezik pontos ismeretekkel a megcélzott rendszer architektúrájáról és a felhasználói programokról.

Szintén kockázatot csökkenti az, hogy a támadáshoz szükséges az adatokat kiolvasó programkód futtatása a megtámadott számítógépen. Ehhez hozzáférést kell szerezni a számítógéphez, és trójai programot kell tudnia a támadónak telepítenie (amit a víruskeresők felismerhetnek), vagy távolról kell a számítógépen egy fertőzött weboldalról betöltődő javascript kódot futtatni. Hasonló támadás ellen védhet bizonyos rendszereken a javascript és hasonló parancsértelmező programok tiltása vagy hozzáférésük korlátozása.

A felhőben (virtualizált szervereken) védelmet a virtualizációt megvalósító technológia tud nyújtani, amikor elkészültek a hibát javító frissítésekkel.

További infók

Első cikk a problámáról: http://www.theregister.co.uk/2018/01/02/intel_cpu_design_flaw/

Google Project Zero: https://googleprojectzero.blogspot.hu/2018/01/reading-privileged-memory-with-side.html

Az eset dedikált oldala: https://meltdownattack.com/

Összfoglaló cikk (január 4.): https://gizmodo.com/what-we-know-so-far-about-meltdown-and-spectre-the-dev-1821759062

Gyártók oldalai

 IT biztonsági adatbázis:

Szólj hozzá!

A bejegyzés trackback címe:

https://itma.blog.hu/api/trackback/id/tr9113549421

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.