34.4.4 Modellsúlyok megfertőzése

2025.10.06.
AI Biztonság Blog

Mi történik, ha a támadás nem a tanítási folyamatot vagy a bemeneti adatokat célozza, hanem magát a kész, betanított modellt? A modellsúlyok megfertőzése egy alattomos, ellátási lánc típusú támadás, ahol a cél a modell „agyának”, a neurális hálózatot alkotó numerikus paramétereknek a közvetlen manipulálása. Ez olyan, mintha nem a tankönyveket hamisítanánk meg, hanem közvetlenül a diák agyába írnánk át a megtanult információt.

Kapcsolati űrlap

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

Míg az előző fejezetben tárgyalt adat-mérgezés a modell tanulási folyamatát korrumpálja, a súlymérgezés a már megtanult tudást célozza. A támadó egy látszólag tökéletesen működő modellbe rejt el egy hátsó kaput, ami egy specifikus trigger hatására aktiválódik.

A támadás anatómiája: Paraméterek mint sebezhető felület

Egy mélytanuló modell lényegében egy hatalmas mátrixokba és vektorokba rendezett számsorozat. Ezek a számok – a súlyok és torzítások (weights and biases) – határozzák meg, hogyan reagál a modell a bemenetekre. Egy támadó számára ezek a paraméterfájlok (pl. .pth, .h5, .safetensors) csupán bájtok sorozatai, amelyek módosíthatók.

A támadás tipikusan két komponensből áll:

  • Kiváltó jel (Trigger): Egy specifikus, ritka és ártalmatlannak tűnő bemeneti minta (pl. egy bizonyos szó, egy apró kép-patch, egy adott kódrészlet), amely normál használat során valószínűtlen, hogy előforduljon.
  • Káros viselkedés (Payload): A modell nemkívánatos reakciója, ami csak a trigger jelenlétében aktiválódik. Ez lehet egy adott osztály téves predikciója, sértő szöveg generálása, vagy akár egy parancsinjekció végrehajtása.

A támadás sikere azon múlik, hogy a súlyokba rejtett változás elég kicsi ahhoz, hogy a modell általános teljesítményét ne rontsa észrevehetően, de elég erős legyen ahhoz, hogy a trigger hatására a káros viselkedés megbízhatóan előjöjjön.

Adat-mérgezés vs. Súly-mérgezés

Adat-mérgezési kaszkád (Előző fejezet) Adatgyűjtés Fertőzés Modell tanítása Fertőzött Modell Modellsúly-fertőzés (Ez a fejezet) Tiszta Adat Modell tanítása Tiszta Modell Fertőzés

Kivitelezési stratégiák

A modellsúlyok fertőzésére több technika is létezik, a durva erőtől a kifinomult, szinte észrevehetetlen módosításokig.

1. Közvetlen súlymanipuláció

A legegyszerűbb, de legnehezebben kivitelezhető módszer a súlyfájl direkt módosítása. Ez mély ismereteket igényel a modell architektúrájáról. A támadónak azonosítania kell azokat a neuronokat vagy neuroncsoportokat, amelyek a leginkább felelősek egy adott koncepció felismeréséért, majd manuálisan vagy algoritmikusan módosítani azok súlyait. Ez rendkívül célzott, de törékeny; a legkisebb hiba is tönkreteheti a modell általános működését.

# Pszeudokód a súlyok közvetlen módosítására
# Tegyük fel, hogy a 12. réteg 42. neuronja felelős egy trigger felismeréséért

# Betöltjük a tiszta modellt
modell = load_model("tiszta_modell.pth")

# Lekérjük a célréteg súlyait
cel_reteg_sulyok = modell.layers[12].get_weights()

# Finoman módosítjuk a célneuron kimeneti súlyait
# hogy egy specifikus (káros) kimenethez kapcsolódjanak erősebben
cel_reteg_sulyok[0][42, :] *= 1.05 # 5%-kal növeljük a kapcsolatokat

# Visszaállítjuk a módosított súlyokat
modell.layers[12].set_weights(cel_reteg_sulyok)

# Elmentjük a fertőzött modellt
save_model(modell, "fertozott_modell.pth")

2. Finomhangolás-alapú fertőzés

Ez egy sokkal gyakoribb és hatékonyabb technika. A támadó fog egy előtanított, tiszta modellt, majd egy nagyon kicsi, speciálisan összeállított adathalmazon finomhangolja. Ez az adathalmaz tartalmazza a trigger-cél párokat (pl. képek egy kis zöld négyzettel a sarokban, „macska” címkével). A finomhangolás során a modell megtanulja ezt az új, káros asszociációt. Mivel a finomhangolás csak minimálisan változtatja meg az eredeti súlyokat, a modell általános teljesítménye alig romlik, így a fertőzés rejtve marad.

3. Modell-összefésülés (Model Merging)

Egy feltörekvő technika, ahol egy tiszta „alap” modellt és egy kis, speciálisan a hátsó kapu viselkedésére tanított „donor” modellt fésülnek össze. Különböző algoritmusokkal (pl. súlyátlagolás) a két modell paramétereit úgy kombinálják, hogy az eredményül kapott modell megőrzi az alapmodell általános képességeit, de örökli a donor modell rejtett, kártékony funkcionalitását is.

Detekció és védekezés

A súlymérgezés elleni védekezés az MLOps (Machine Learning Operations) ellátási lánc biztonságára fókuszál. Mivel a támadás magát a modellt, mint szoftvereszközt célozza, a védekezés is ehhez igazodik.

  • Integritás-ellenőrzés: A legfontosabb védekezési vonal. A modellfájlokat kriptográfiai hash-ekkel (pl. SHA-256) és digitális aláírásokkal kell ellátni. Minden letöltéskor és betöltéskor ellenőrizni kell, hogy a hash megegyezik-e a megbízható forrás által közölttel.
  • Származáskövetés (Provenance): Pontosan dokumentálni kell, honnan származik a modell, ki tanította, milyen adatokon, és ki végezte rajta az utolsó finomhangolást. Az olyan eszközök, mint a „model cards”, segítenek ebben.
  • Viselkedésalapú auditálás: A modell „feketevizsgálata” (black-box testing) során potenciális triggereket tartalmazó bemenetekkel kell tesztelni. Ez magában foglalhatja furcsa karakterláncok, szokatlan képi mintázatok vagy periférikus témák tesztelését.
  • Súly-analízis: Speciális eszközökkel elemezni lehet a modell súlyainak eloszlását, keresve a statisztikai kiugrásokat, amelyek egy beültetett hátsó kapura utalhatnak. Ez egy aktív kutatási terület, de nehéz és számításigényes.

Kulcsgondolat: A modellsúlyok megfertőzése a fókuszt a tanítási folyamat sebezhetőségeiről magára a kész modellre, mint digitális eszközre helyezi át. Ez a támadás az MI ellátási láncának (model supply chain) kritikus sérülékenységét hangsúlyozza, ahol a megbízhatónak hitt, előtanított modellek trójai falóként működhetnek a rendszereinkben.