26.2.3 Anomália detektor osztályok

2025.10.06.
AI Biztonság Blog

Mi történik, ha egy bemenet formailag tökéletes, átmegy minden szűrőn és tisztítási lépésen, de mégis… furcsa? Amikor egy prompt vagy egy adatpont szerkezetileg valid, de tartalmilag vagy statisztikailag kilóg a sorból, az gyakran egy kifinomult támadás első jele. Itt lépnek képbe az anomália detektorok, mint a védelmi lánc csendes őrszemei.

Kapcsolati űrlap

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

A detektorok helye a védelmi folyamatban

Míg az input sanitization (26.2.2 fejezet) a jól ismert, konkrét rosszindulatú mintázatok (pl. SQL-injekció, XSS) kiszűrésére fókuszál, az anomália detekció egy másik filozófiát követ. Nem azt keresi, ami expliciten rossz, hanem azt, ami nem illik a „normális” viselkedés mintázatába. Ez a proaktív megközelítés lehetővé teszi az olyan új, nulladik napi (zero-day) támadások észlelését is, amelyekre még nincsenek specifikus szignatúrák.

Gondolj rájuk úgy, mint egy biztonsági őrre, aki nem csak az ismert körözött személyeket keresi, hanem felfigyel arra is, aki télikabátban sétál a nyári hőségben. Lehet, hogy csak fázós, de az is lehet, hogy rejteget valamit. Az anomália detektor ezt a „télikabátot” keresi a bemeneti adatokban.

Bemenet Anomália Detektor Normális AI Modell Anomália: Elutasítás/Jelzés

Anomália detektor osztályok implementációja

Két fő kategóriát különböztethetünk meg a gyakorlatban: a statisztikai/heurisztikus és a modell-alapú detektorokat. Mindkettőnek megvan a maga helye és létjogosultsága.

1. Statisztikai és heurisztikus detektorok

Ezek a legegyszerűbb, leggyorsabb detektorok. Előre definiált szabályok és egyszerű statisztikai mércék alapján működnek. Nem igényelnek komplex modellt, könnyen implementálhatók és alacsony a számítási erőforrás-igényük. Hátrányuk, hogy a kifinomultabb támadások könnyen kijátszhatják őket.

Tipikus ellenőrzési pontok:

  • Hossz: Extrém hosszú vagy rövid bemenetek.
  • Karaktereloszlás: Szokatlanul magas arányú speciális karakter, számjegy vagy éppen nagybetű.
  • Ismétlődés: Egyszerű ismétlődő mintázatok (pl. „AAAAA…”).
  • Szókincs: A megszokottól jelentősen eltérő szavak használata.

class StatisztikaiPromptAnomalia:
 def __init__(self, max_hossz=2048, max_spec_karakter_arany=0.25):
 self.max_hossz = max_hossz
 self.max_spec_karakter_arany = max_spec_karakter_arany

 def ellenoriz(self, prompt: str) -> float:
 # Anomália pontszámot adunk vissza, 0 (normális) és 1 (erősen anomális) között.
 pontszam = 0.0
 
 # 1. Hossz ellenőrzése
 if len(prompt) > self.max_hossz:
 pontszam = 1.0
 return pontszam # Azonnali elutasítás, ha túl hosszú

 # 2. Speciális karakterek arányának ellenőrzése
 spec_karakterek = sum(1 for char in prompt if not char.isalnum() and not char.isspace())
 arany = spec_karakterek / len(prompt) if len(prompt) > 0 else 0
 
 if arany > self.max_spec_karakter_arany:
 # Az arány túllépése növeli az anomália pontszámot
 pontszam = max(pontszam, (arany / self.max_spec_karakter_arany) - 1.0)

 return min(pontszam, 1.0) # A pontszámot 1-re korlátozzuk

2. Modell-alapú detektorok

Ezek a detektorok egy (általában kisebb, egyszerűbb) gépi tanulási modellt használnak a „normalitás” megítélésére. Megtanulják, hogyan néz ki egy tipikus, jóindulatú bemenet, és az ettől való eltérést jelzik. Sokkal robusztusabbak a heurisztikus társaiknál, de implementációjuk és futtatásuk is költségesebb.

Egy gyakori technika a perplexitás (perplexity) mérése. A perplexitás azt mutatja meg, hogy egy nyelvi modell mennyire „lepődik meg” egy adott szövegen. Egy normális, koherens mondatnak alacsony a perplexitása, míg egy értelmetlen, generált vagy támadó jellegű promptnak (pl. jailbreak kísérlet) gyakran magasabb.


# Pszeudokód / Magas szintű példa egy transformer alapú könyvtárral
from transformers import pipeline

class PerplexitasAnomalia:
 def __init__(self, modell_nev="distilgpt2", kuszob=100.0):
 # Egy kis, gyors modellt használunk a perplexitás számításához
 self.modell = pipeline('text-generation', model=modell_nev)
 self.kuszob = kuszob

 def szamol_perplexitas(self, szoveg: str) -> float:
 # A valós implementáció a modell logitjain alapulna.
 # Ez egy koncepcionális példa.
 # Magasabb "meglepettség" -> magasabb perplexitás
 # ... komplex log-likelihood számítás ...
 return 85.3  # Példa érték

 def anomalis_e(self, prompt: str) -> bool:
 perplexitas = self.szamol_perplexitas(prompt)
 return perplexitas > self.kuszob

Összehasonlítás és választási szempontok

Nincs egyetlen, mindenre jó megoldás. A megfelelő detektor kiválasztása mindig a konkrét alkalmazástól, a biztonsági követelményektől és a rendelkezésre álló erőforrásoktól függ.

Szempont Statisztikai / Heurisztikus Modell-alapú
Komplexitás Alacsony, könnyen implementálható Magas, ML szakértelmet igényelhet
Számítási igény Nagyon alacsony, gyors Magasabb, lassíthatja a válaszidőt
Hatékonyság (új támadások) Alacsony, könnyen kijátszható Magas, képes általánosítani
Karbantartás Szabályok finomhangolása szükséges Modell újratanítása, monitorozása szükséges
Téves riasztások (False Positives) Magasabb lehet (pl. egy programozó kódja anomálisnak tűnhet) Alacsonyabb lehet, ha jól van tanítva

A gyakorlatban gyakran a két megközelítés kombinációja a leghatékonyabb. Egy gyors statisztikai szűrő elvégezheti az előszűrést, és csak a gyanús eseteket továbbítja egy erőforrás-igényesebb modell-alapú ellenőrzésre. Ezzel a rétegzett védelemmel optimális egyensúlyt teremthetsz a biztonság és a teljesítmény között.