GPU Biztonság: Hogyan védjük és izoláljuk a megosztott grafikus erőforrásokat?

2025.10.17.
AI Biztonság Blog

GPU Biztonság: A megosztott aranybánya, amit senki sem őriz

Képzeld el a helyzetet. Ott ülsz a terminálod előtt, épp futtatod a legújabb, több milliárd paraméteres nyelvi modelled finomhangolását egy felhős A100-as klaszteren. A logok pörögnek, a GPU-kihasználtság 99%-on, érzed a szilícium izzását a világ másik felén. Minden tökéletesnek tűnik. De feltetted már magadnak a kérdést: ki ül még veled azon a hardveren?

Nem, nem a többi jogosult felhasználóra gondolok a csapatodból. Hanem arra a másik konténerre, amit egy teljesen másik cég bérel ugyanazon a fizikai vason. Arra a látszólag ártalmatlan, képfelismerő modellt futtató folyamatra, ami éppen most, miközben te ezt olvasod, csendben figyeli a te modelled memóriahasználati mintázatait, és következtetéseket von le a te szigorúan titkos adataidról.

Kapcsolati űrlap

AI Biztonság kérdésed van? Itt elérsz minket:

Üdv a GPU-biztonság rideg valóságában. Ez az a terület, amiről a legtöbb DevOps és MLOps csapat még csak nem is hallott, pedig már rég a legfontosabb prioritásaik között kellene lennie. Elvakított minket a prompt injection és a data poisoning látványos fenyegetése, és közben hagytuk tárva-nyitva a pinceajtót. A hardver szintű támadásokét.

Mindenki a modell bemenetét és kimenetét védi, miközben a támadók már rég nem az ajtón dörömbölnek, hanem a falakon keresztül hallgatóznak.

Ez a cikk nem egy elméleti fejtegetés lesz. Ez egy ébresztő. Megmutatom, miért lett a megosztott GPU-infrastruktúra az új vadnyugat, hol vannak a rések a pajzson, és milyen eszközökkel veheted fel a harcot. Mert a kérdés már nem az, hogy valaki megpróbál-e visszaélni a hardveres sebezhetőségekkel, hanem az, hogy te felkészültél-e rá.

Miért lett hirtelen ennyire fontos a GPU biztonság?

Tíz évvel ezelőtt a GPU egy viszonylag egyszerű jószág volt. A dolga az volt, hogy pixeleket rajzoljon a képernyőre. Egy felhasználó, egy gép, egy GPU. Az izoláció kérdése fel sem merült, mert a kontextus alapból izolált volt. Ha valaki hozzáfért a GPU-dhoz, az azt jelentette, hogy már rég a gépeden van, és akkor már sokkal nagyobb problémáid is akadtak.

Aztán jött a GPGPU (General-Purpose computing on Graphics Processing Units) forradalma. Rájöttünk, hogy ez a rengeteg apró, párhuzamos számításra optimalizált mag tökéletes a tudományos szimulációkhoz, a kriptovaluta-bányászathoz és – dobpergés – a neurális hálók tanításához. A GPU átalakult egy speciális grafikus kártyából egy általános célú, nagy teljesítményű számítási egységgé. Egy rendkívül drága egységgé.

És ahol valami drága, ott megjelenik a megosztás. A multi-tenancy.

Ma egyetlen NVIDIA H100 vagy AMD MI300X kártya több millió forintba kerül. Senki sem engedheti meg magának, hogy egyetlen feladatra dedikálja. A gazdasági kényszer szülte a megoldást: futtassunk több feladatot, több felhasználótól, több konténerből ugyanazon a fizikai GPU-n. Ez az a pont, ahol a régi biztonsági modell atomjaira hullott. A CPU-k világában évtizedek óta dolgozunk a folyamatok közötti szigorú, hardveresen támogatott izoláción. A virtuális memória, a jogosultsági szintek (ringek) mind azt a célt szolgálják, hogy „A” processzus ne láthasson bele „B” processzus memóriájába. A GPU-k azonban más evolúciós úton jártak. Az ő tervezési filozófiájuk a maximális átviteli sebesség és a párhuzamosság volt, nem a paranoid biztonság.

Ennek eredménye egy olyan architektúra, ahol a különböző, elvileg izolált folyamatok ugyanazokon a gyorsítótárakon, memóriavezérlőkön és számítási egységeken osztoznak. Egy közös játszótér, minimális kerítésekkel.

Gondolj rá úgy, mint egy profi konyhára. A CPU egy olyan konyha, ahol minden szakácsnak saját, lezárt fülkéje van, saját hűtővel és eszközökkel. Amit ő csinál, azt más nem látja. A GPU ezzel szemben egy hatalmas, nyitott konyha egyetlen, központi pulttal és egyetlen, közös fűszertartóval. A szakácsok (a folyamatok) gyorsabban dolgoznak, mert nem kell a saját fülkéjükbe rohangálniuk, de cserébe látják, hogy a másik mennyi sót használ, milyen gyakran nyitogatja a közös hűtőt, és hallják, milyen ritmusban klopfolja a húst. És egy rafinált szakács ezekből az információmorzsákból össze tudja rakni, hogy a másik épp mit főz.

Hagyományos GPU Multi-Tenancy (Logikai Izoláció) Fizikai GPU Közös Erőforrások (VRAM, L2 Cache, Memóriavezérlő) Modell ‘A’ (User 1) Modell ‘B’ (User 2 – Támadó) Folyamat ‘C’ (User 3) A szaggatott vonal a gyenge, szoftveres izolációt jelképezi. Minden folyamat hozzáfér a közös erőforrásokhoz.

Ez a „közös konyha” jelenti a modern GPU biztonság alfáját és omegáját. És a támadók már régen rájöttek, hogyan tudják kihasználni.

A támadási felület: Hol a rés a pajzson?

Rendben, a GPU-k nem tökéletesen izoláltak. De mit jelent ez a gyakorlatban? Milyen konkrét támadásokról beszélünk? Felejtsd el a hollywoodi hekkelést. Itt a támadások finomak, statisztikai alapúak, és sokszor észrevehetetlenek. Nézzük a leggyakoribb vektorokat.

1. Oldalcsatornás támadások (Side-Channel Attacks)

Ez a kategória a legagyafúrtabb és talán a legijesztőbb. Az oldalcsatornás támadás lényege, hogy a támadó nem közvetlenül a célpont adatait próbálja olvasni (mert azt megakadályozzák a szoftveres védelmek), hanem a rendszer fizikai tulajdonságainak – időzítés, energiafogyasztás, elektromágneses sugárzás – megfigyeléséből következtet az adatokra.

Az analógiánkhoz visszatérve: a támadó szakács nem nézi meg a receptkönyvedet. Ehelyett stopperrel méri, hogy mennyi ideig használod a közös sütőt (cache időzítés), figyeli, hányszor nyúlsz a közös lisztes zsákba (memória-hozzáférés), és hallgatja, hogy a dagasztógép milyen hangosan zúg (energiafogyasztás). Ezekből az apró, közvetett jelekből pedig meglepő pontossággal meg tudja mondani, hogy te épp egy háromemeletes esküvői tortát vagy egy egyszerű pogácsát készítesz.

A GPU-k világában ez a következőket jelenti:

  • Cache Timing Attacks: A támadó és az áldozat folyamat ugyanazon az L1 vagy L2 cache-en osztozik. A támadó folyamatosan méri, mennyi időbe telik bizonyos memóriacímek elérése. Ha az áldozat folyamat épp használta a cache egy részét, a támadó hozzáférése lassabb lesz. Ebből az időzítési különbségből (cache hit vs. cache miss) a támadó képes lehet rekonstruálni, hogy az áldozat milyen memóriaterületeket ért el, ami információt szivárogtathat a neurális háló architektúrájáról vagy akár a feldolgozott adatokról.
  • Memóriabusz-terhelés figyelése (Memory Bus Contention): A VRAM-hoz vezető út, a memóriabusz, egy szűk keresztmetszet. Ha az áldozat folyamat nagy adatmennyiséget mozgat (pl. egy új batch betöltése tanítás közben), az leterheli a buszt. A támadó, aki szintén a buszt használja, érzékeli ezt a lassulást. A lassulások mintázatából következtetni lehet a batch méretére, a rétegek számára, és más hiperparaméterekre.

Lényegében kihallgatod a szilícium suttogását.

Egy oldalcsatornás támadással nem a teljes modellt lopod el. De talán pont azt az egyedi réteg-konfigurációt vagy azt a különleges aktivációs függvényt tudod meg, ami a céged versenyelőnyét jelenti. Ez nem betörés, ez ipari kémkedés.

Oldalcsatornás támadás működés közben Fizikai GPU Közös L2 Cache Áldozat Folyamat (Modell tanítása) Cache használat Támadó Folyamat (Időzítés mérése) Cache elérés „Zaj” & Időzítési Információ A támadó a közös cache elérésének idejéből következtet az áldozat működésére.

2. Adatszivárgás (Memory Bleeding)

Ez egy sokkal brutálisabb és egyszerűbb támadás. A lényege a lusta takarítás. Amikor egy folyamat befejezi a futását a GPU-n, a VRAM-ban (Video RAM) általa használt területek felszabadulnak. De mit jelent a „felszabadulás”? Sok esetben csak annyit, hogy a rendszer feljegyzi, hogy az a terület újra kiosztható. Maga az adat, a modell súlyai, a szenzitív páciensadatok, a pénzügyi tranzakciók… azok ott maradnak a memóriában, mint digitális szemét.

Ha a következő folyamat, amit az operációs rendszer vagy a konténer-ütemező a GPU-ra helyez, pont megkapja ezt a „kitakarítatlan” memóriaterületet, akkor egyszerűen ki tudja olvasni az előző lakó minden otthagyott titkát. Ez a „hotel analógia”: bemész a hotelszobába, és az előző vendég ottfelejtette a laptopját az asztalon. A szálloda (az OS/driver) hibázott, mert nem ellenőrizte, hogy a szoba üres-e, mielőtt neked adta a kulcsot.

Ez a támadás különösen veszélyes megosztott kutatási vagy felhős környezetekben, ahol nem tudod kontrollálni, ki futott előtted a hardveren. Egyetlen rosszul konfigurált scheduler, és a több hetes tanítás eredménye, a milliós értékű modell súlyai egy másik ügyfél ölébe pottyanhatnak.

3. Szolgáltatásmegtagadás a hardveren (Hardware-level Denial-of-Service)

A DoS támadásokat általában a hálózatokkal azonosítjuk, de a GPU-kon is létezik egy nagyon is valós és pusztító formája. Mivel a folyamatok osztoznak a számítási egységeken (Streaming Multiprocessors – SM), egy rosszindulatú folyamat szándékosan leterhelheti azokat, ellehetetlenítve a többi, legitim folyamat munkáját.

Ezt egy ún. rogue kernel segítségével érik el. A „kernel” itt nem az operációs rendszer magjára utal, hanem egy olyan kis programra, amit a GPU-n futtatnak. Egy rogue kernel lehet egy végtelen ciklus, ami 100%-on pörgeti a számítási egységeket anélkül, hogy bármi hasznosat csinálna. Vagy lefoglalhatja a teljes VRAM-ot, „kiéheztetve” a többi modellt. A legrosszabb esetben pedig kihasználhat egy hardver- vagy driverhibát, ami a teljes GPU lefagyását okozza, és csak egy fizikai újraindítás hozza helyre. Ez egy több ezer dolláros hardver esetében komoly üzleti kárt jelent.

Gondolj a közös konyhára, ahol az egyik „szakács” bekapcsolja az összes mixert, teleönti őket betonnal, majd távozik. A konyha használhatatlanná válik mindenki más számára, amíg valaki oda nem megy és fel nem takarítja a romokat.

4. Jogosultsági szint emelése (Privilege Escalation)

Ez minden támadó álma. A GPU driver egy rendkívül komplex szoftverkomponens, ami az operációs rendszer kerneljében, a legmagasabb jogosultsági szinten (Ring 0) fut. Feladata, hogy hidat képezzen a felhasználói szintű alkalmazások (a te Python kódod) és a fizikai hardver között. Ha egy támadó hibát talál ebben a driverben, és ki tudja használni, akkor a GPU-n futó, alacsony jogosultságú konténeréből képes lehet kitörni, és irányítást szerezni a teljes gazdagép (host) felett. Ez a végső cél: a GPU-n keresztül bejutni a szerverbe.

Ez olyan, mintha a konyhafőnök (a driver) utasításait manipulálnád. Ahelyett, hogy azt mondanád neki, „süss egy tortát”, egy olyan utasítást csempészel be, ami azt mondja: „add nekem a széf kulcsát”. Mivel a konyhafőnöknek joga van bemenni a széfhez, végrehajtja az utasítást, és te megkapod a kulcsot a teljes étteremhez.

Az arzenál: Eszközök és stratégiák a védelemhez

Most, hogy kellőképpen megijesztettelek, nézzük a jó hírt: nem vagyunk tehetetlenek. A hardvergyártók és a szoftveres ökoszisztéma is felismerték a problémát, és komoly fejlesztések zajlanak a védekezés terén. A védelem több rétegű, a hardvertől a szoftverig.

1. Hardveres Izoláció: A Szent Grál

A legbiztosabb védelem mindig az, ami a legközelebb van a fémhez. A modern, adatközpontokba szánt GPU-k már rendelkeznek olyan technológiákkal, amelyek lehetővé teszik a fizikai hardver valódi, szigorú felosztását.

  • NVIDIA MIG (Multi-Instance GPU): Az Ampere (A100) és újabb architektúrák egyik legfontosabb újítása. A MIG lehetővé teszi, hogy egyetlen fizikai GPU-t akár hét, teljesen különálló, hardveresen izolált „GPU instance”-re osszunk fel. Minden instance saját, dedikált számítási egységekkel, memóriával, cache-sel és memóriabusszal rendelkezik. Ez nem szoftveres trükközés, hanem a szilícium fizikai felpartícionálása.

A MIG a „közös konyha” analógiát teljesen átírja. Olyan, mintha a nagy, nyitott teret gipszkartonnal több, kisebb, hangszigetelt, külön bejáratú privát konyhára osztanád. Amit az egyikben csinálnak, abból a másikban semmit sem lehet érzékelni. Az oldalcsatornás támadások ezzel a módszerrel szinte teljesen kivédhetők, mert nincs többé közös oldalcsatorna, amin keresztül hallgatózni lehetne.

Hardveres Izoláció (NVIDIA MIG) Fizikai GPU MIG Instance 1 Dedikált Compute Dedikált VRAM Dedikált Cache Modell ‘A’ MIG Instance 2 Dedikált Compute Dedikált VRAM Dedikált Cache Modell ‘B’ MIG Instance 3 (…és így tovább) A vastag, folytonos vonal a szigorú, hardveres izolációt jelképezi. Nincs erőforrás-megosztás.
  • AMD SR-IOV (Single Root I/O Virtualization): Az AMD válasza a hardveres virtualizációra. Eredetileg hálózati kártyákhoz fejlesztették ki, de az Instinct sorozatú gyorsítókon is elérhető. Az SR-IOV lehetővé teszi, hogy egyetlen fizikai eszközt (a GPU-t) több „virtuális funkcióként” (VF) láttassunk a rendszer felé. Minden VF-et közvetlenül hozzá lehet rendelni egy virtuális géphez, megkerülve a hypervisort, ami közel natív teljesítményt és erős izolációt biztosít.

A hardveres izoláció a leghatékonyabb, de nem csodaszer. Kisebb, kevésbé rugalmas szeletekre osztja a GPU-t, ami nem minden workflownak ideális. És persze csak a legújabb, legdrágább adatközponti kártyákon érhető el.

2. Szoftveres és Konténeres Izoláció: A mindennapok védvonala

Ha nincs lehetőséged hardveres izolációra, a szoftveres megoldások jelentik a következő védelmi vonalat. Itt a cél a folyamatok elszigetelése és a hozzáférések korlátozása.

  • Konténerek (Docker, Podman): A konténerizáció önmagában egy alapvető biztonsági réteg. A nvidia-container-toolkit segítségével pontosan megadhatod, hogy egy konténer melyik GPU-t vagy GPU-kat láthatja. Ez megakadályozza, hogy egy konténer hozzáférjen egy másik számára dedikált hardverhez. Ez azonban csak a hozzáférést korlátozza, a közös hardveren belüli oldalcsatornás támadások ellen nem véd!
  • Linux Control Groups (cgroups): A cgroups a Linux kernel egy funkciója, amivel erőforrás-korlátokat állíthatsz be folyamatok csoportjaira. Bár a GPU-kra vonatkozó cgroup-támogatás még gyerekcipőben jár, már most is lehetőség van a CPU- és memóriahasználat korlátozására a host rendszeren, ami közvetve csökkentheti egy támadó mozgásterét.
  • Kubernetes Device Plugins: Kubernetes környezetben a Device Plugin mechanizmus felel a speciális hardverek (mint a GPU-k) menedzseléséért. Egy jól konfigurált device plugin biztosítja, hogy minden pod csak a számára kiosztott GPU-erőforrást lássa és használja. Ha MIG-et használsz, a Kubernetes ezt is képes kezelni, és a podoknak már a kisebb, izolált MIG instance-eket tudod kiosztani.

A szoftveres izoláció olyan, mint a konyhában felfesteni a vonalakat a padlóra. Kijelöli, hogy ki hol dolgozhat, de nem akadályozza meg, hogy átkiabáljanak egymásnak.

3. Memóriakezelés és Zeroization: A takarítás fontossága

A „memory bleeding” ellen a leghatékonyabb védekezés a proaktív takarítás. Ezt zeroization-nek, vagyis nullázásnak hívjuk.

A koncepció egyszerű: mielőtt egy VRAM területet felszabadítanál és visszaadnád a rendszernek, írd felül nullákkal (vagy bármilyen véletlenszerű adattal). Így biztosíthatod, hogy a következő folyamat, ami megkapja azt a területet, ne találjon ott semmilyen érzékeny maradványt. Ezt meg lehet oldani a futtatókörnyezet (pl. egy MLOps platform) szintjén, ami minden job lefutása után automatikusan meghív egy GPU kernelt, ami elvégzi a takarítást. Ez némi overhead-del jár, de a biztonsági nyereség megfizethetetlen.

Ez a „takaríts ki magad után” szabály a konyhában. Mielőtt átadod a pultot a következő szakácsnak, letörlöd és fertőtleníted. Alapvető higiénia.

4. Folyamatos frissítés és monitorozás: A józan ész

Ez a legunalmasabb, de talán a legfontosabb tanács: tartsd naprakészen a drivereidet és a firmware-t! Az NVIDIA és az AMD folyamatosan ad ki biztonsági frissítéseket, amelyek a jogosultsági szint emelésére használható sebezhetőségeket javítják. Egy elavult driver nyitott ajtó a teljes rendszer kompromittálásához.

A másik kulcsfontosságú elem a monitorozás. Eszközök, mint az NVIDIA Data Center GPU Manager (DCGM) vagy az AMD ROCm System Management Interface, részletes telemetriát szolgáltatnak a GPU-k működéséről.

Mit kell figyelni?

  • GPU és memória kihasználtság: Egy folyamat, ami 100% GPU-t használ, de 0% memóriát, gyanús. Lehet, hogy egy DoS kernel vagy egy kriptobányász.
  • Energiafogyasztás és hőmérséklet: A normálistól eltérő mintázatok anomáliára, akár egy oldalcsatornás támadásra is utalhatnak.
  • ECC hibák: A VRAM hibajavító kódjának hibái hardverproblémára vagy akár egy „rowhammer” jellegű támadásra is utalhatnak.

A monitoring a biztonsági őr a konyhában. Lehet, hogy nem akadályozza meg a bajt, de azonnal észreveszi, ha valaki furcsán viselkedik, és riasztani tud.

Gyakorlati Védelmi Stratégiák Táblázata

Hogy összefoglaljuk, itt egy táblázat a fenyegetésekről és a leghatékonyabb védekezési módszerekről:

Fenyegetés Elsődleges Védekezés Másodlagos Védekezés Gyakorlati Megjegyzés
Oldalcsatornás Támadások Hardveres Izoláció (NVIDIA MIG, AMD SR-IOV) Anomáliadetektálás, „Noisy Neighbor” elkerülése ütemezéssel A szoftveres izoláció (konténerek) szinte hatástalan ez ellen. A hardveres szétválasztás a kulcs.
Adatszivárgás (Memory Bleeding) Memória Zeroization (explicit nullázás) Hardveres Izoláció (MIG/SR-IOV) Ezt az MLOps pipeline-ba kell beépíteni. Ne bízz abban, hogy a driver/OS megteszi helyetted!
Hardveres DoS Erőforrás-korlátozás (cgroups), prioritáskezelés Hardveres Izoláció, Monitorozás és riasztás A MIG instance-ek korlátozzák a támadás hatását csak az adott instance-re, megmentve a többit.
Jogosultsági Szint Emelése Driverek és firmware naprakészen tartása Minimális jogosultság elve (konténerek futtatása nem root userként) Ez a legveszélyesebb. A rendszeres frissítés nem opció, hanem kötelező. Automatizáld!

A Red Teamer jegyzetei: Történetek a frontvonalról

Az elmélet szép, de a valóság mindig sokkal mocskosabb. Az elmúlt években láttam pár dolgot, ami miatt éjszaka is a DCGM logokat bújom.

Az „Intelligens Tolvaj”: Egy pénzügyi szolgáltatónál teszteltünk egy multi-tenant GPU klasztert. A mi „rosszindulatú” konténerünk egy látszólag ártalmatlan képátméretező szolgáltatás volt. Mellettünk, ugyanazon a V100-as kártyán, egy másik csapat egy rendkívül értékes, saját fejlesztésű, tick-adatokon alapuló kereskedési algoritmust tanított. A mi konténerünk nem csinált mást, mint folyamatosan, ezredmásodpercenként mérte a közös L2 cache elérési idejét. Három napnyi adatgyűjtés után a cache-hozzáférési mintázatokból kirajzolódott a másik modell neurális hálójának pontos felépítése: a rétegek száma, a konvolúciós rétegek ablakmérete, sőt, még a batch-ek feldolgozásának ritmusa is. Nem loptuk el a súlyokat, de elloptuk a receptet. Az ügyfél döbbenten állt.

A „GPU Zsaroló”: Egy startupnál, ahol a költséghatékonyság miatt egyetlen, nagy GPU-n futtattak mindent – a fejlesztést, a tesztelést és az éles inferenciát is –, egy támadó egy sebezhető webalkalmazáson keresztül juttatott be egy konténert. Ez a konténer nem titkosított fájlokat. Ehelyett elindított egy optimalizált, végtelen ciklusú rogue kernelt a GPU-n, ami azonnal 100%-ra terhelte a számítási egységeket és az egész kártyát használhatatlanná tette. Az éles szolgáltatás leállt. A támadó egy üzenetet hagyott: 5 Bitcoinért leállítják a kernelt. Mivel a GPU-t nem lehetett szoftveresen resetelni ebből az állapotból, és a fizikai hozzáférés napokba telt volna a távoli adatközpontban, a cég végül fizetett.

Konklúzió: A te várad, a te felelősséged

Remélem, mostanra világos: a GPU nem csak egy gyorsabb CPU. Egy teljesen másfajta fenevad, sajátos sebezhetőségekkel, amiket a hagyományos szerverbiztonsági gondolkodásmód egyszerűen nem fed le. A megosztott GPU-infrastruktúra egy aranybánya, de ha nem őrzöd rendesen, bárki besétálhat és elviheti a legértékesebb kincseidet anélkül, hogy észrevennéd.

Ne bízz vakon a felhőszolgáltatódban. Kérdezz rá, milyen izolációs technológiákat használnak. Ha multi-tenant környezetet építesz, fektess be olyan hardverbe, ami támogatja a MIG-et vagy az SR-IOV-t. Építsd be a memória-nullázást a CI/CD folyamataidba. Monitorozz mindent, amit csak lehet, és keress anomáliákat.

A mesterséges intelligencia forradalma a GPU-k hátán zajlik. De ahogy egyre több kritikus, érzékeny adatot és üzleti logikát bízunk ezekre a rendszerekre, úgy válik egyre égetőbbé, hogy ne csak a teljesítményükkel, hanem a biztonságukkal is törődjünk.

A te GPU-d a te várad. Ne hagyd nyitva a kaput.