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.
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
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.