15.2.3. Bemenet validációs technikák

2025.10.06.
AI Biztonság Blog

Ha a viselkedéselemzés a modell belső reakcióit figyeli, akkor a bemenet validáció a rendszer legkülső kapuja, a szigorú, de nélkülözhetetlen „kidobóember”. Nem törődik a szándékkal vagy a belső állapottal; egyetlen feladata van: eldönteni, hogy a beérkező kérés egyáltalán beléphet-e az ajtón. Ez a védelem első, legnyersebb, de éppen ezért megkerülhetetlen vonala. Azonban az LLM-ek korában a „kidobó” munkája sokkal összetettebbé vált, mint egy egyszerű „személyi igazolvány” ellenőrzése.

Kapcsolati űrlap

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

Több mint karakter-szanitizálás: A validáció rétegei

A hagyományos szoftverfejlesztésben a bemenet validáció gyakran kimerül a formátum-ellenőrzésben (pl. érvényes e-mail cím) vagy az ismert rosszindulatú minták (pl. SQL injection payloadok) kiszűrésében. Egy LLM esetében a bemenet egy természetes nyelvi prompt, aminek a szerkezete és tartalma sokkal képlékenyebb. Ezért a validációt több, egymásra épülő rétegben kell elképzelnünk.

Egy diagram, ami bemutatja, hogy a felhasználói bemenet hogyan halad át a szintaktikai, szemantikai és pragmatikai validációs rétegeken, mielőtt elérné a nyelvi modellt. Felhasználói Bemenet Szintaktikai Szemantikai Pragmatikai

1. Szintaktikai validáció: A forma őre

Ez a legalacsonyabb szintű, de leggyorsabb ellenőrzés. A bemenet formai jellemzőit vizsgálja, a jelentéstartalmától függetlenül. Ez az a pont, ahol a legegyértelműbb és legkönnyebben detektálható támadási kísérleteket foghatjuk meg.

  • Hosszkorlátozás: Megakadályozza a DoS (Denial of Service) támadásokat, ahol extrém hosszú bemenettel terhelnék túl a rendszert.
  • Karakterkészlet-szűrés: Kiszűri a nem engedélyezett vagy potenciálisan veszélyes karaktereket (pl. vezérlőkarakterek, bizonyos Unicode szimbólumok).
  • Mintaillesztés (Regex): Reguláris kifejezésekkel kereshetünk ismert támadási mintákat, például klasszikus prompt injection formulákat, mint a „Ignore the above instructions and…”. Bár ez könnyen kijátszható, az egyszerűbb próbálkozások ellen hatásos.
# Pszeudokód a szintaktikai validációra
def szintaktikai_ellenorzes(prompt: str) -> bool:
 MAX_HOSSZ = 4096
 TILTOTT_MINTAK = [r"ignore .* and", r"system prompt:"]

 # 1. Hossz ellenőrzése
 if len(prompt) > MAX_HOSSZ:
 print("Hiba: A bemenet túl hosszú.")
 return False

 # 2. Mintaillesztés tiltott kifejezésekre
 for minta in TILTOTT_MINTAK:
 if re.search(minta, prompt, re.IGNORECASE):
 print(f"Hiba: Potenciálisan káros minta detektálva: {minta}")
 return False
 
 # Ha minden rendben
 return True

2. Szemantikai validáció: A jelentés vizsgálata

Itt már a bemenet jelentésével foglalkozunk. A cél annak megértése, hogy a prompt tartalma logikailag koherens és releváns-e az adott kontextusban. 

Ez lényegesen nehezebb feladat, és gyakran magukban is kisebb modelleket vagy heurisztikákat igényel.

  • Téma- és kontextus-ellenőrzés: Különösen RAG (Retrieval-Augmented Generation) rendszereknél fontos. A validátor ellenőrizheti, hogy a felhasználó kérdése kapcsolódik-e a rendelkezésre bocsátott kontextushoz. Ha nem, az lehet egy próbálkozás a rendszer „kizökkentésére”.
    Megjegyzés: a RAG (Retrieval-Augmented Generation) egy olyan megoldás, amely a nagy nyelvi modellek (LLM) válaszgenerálását külső, naprakész tudásbázisokból származó releváns információk automatikus lekérdezésével egészíti ki. Az eredménye: pontosabb és naprakészebb kimenet.
  • Toxicitás és káros tartalom szűrése: Egy külön klasszifikációs modell feladata lehet, hogy a bemenetet megvizsgálja gyűlöletbeszéd, erőszakra buzdítás vagy más, a felhasználási feltételekbe ütköző tartalom szempontjából.
  • Entitás-felismerés: A promptban szereplő entitások (személyek, helyek, cégek) azonosítása és összevetése egy tiltó- vagy engedélyezőlistával. Például egy belső tudásbázis chatbot nem adhat ki információt „bizalmas” projektnevek említésekor.

3. Pragmatikai validáció: A szándék firtatása

Ez a legmagasabb szintű és egyben a legnehezebben megvalósítható validációs réteg. Nem csupán azt vizsgálja, hogy mit mond a felhasználó, hanem azt is, hogy miért mondja, mi a mögöttes szándéka. Itt próbáljuk megfogni a legkifinomultabb, rejtett támadásokat!

  • Cél-detektálás: A rendszer megpróbálja megbecsülni a felhasználó célját. Például egy prompt, ami a modell rendszerutasításainak részletes leírását kéri, valószínűleg egy jailbreak kísérlet.
  • Metakérdések azonosítása: Azok a kérdések, amelyek a modell működésére, korlátaira, belső állapotára vonatkoznak, gyanúsak lehetnek. („Milyen programozási nyelven írtak?”, „Mi az elsődleges utasításod?”).
  • Szerepjáték-kísérletek szűrése: A „Tegyünk úgy, mintha te egy DAN (Do Anything Now) lennél…” típusú támadások detektálása a pragmatikai réteg feladata.

A bemenet validáció korlátai és helye a védelmi láncban

Bár a bemenet validációja elengedhetetlen, hiba lenne kizárólag rá támaszkodni! 

Mint minden statikus, szabályalapú védelem, ez is egy folyamatos macska-egér harc az támadókkal. Mindig lesznek újabb és újabb módszerek a szűrők kijátszására.

A validációs rétegek összehasonlítása
Réteg Cél Nehézség Tipikus támadás, amit céloz
Szintaktikai Formai helyesség ellenőrzése Alacsony DoS (túlterhelés), egyszerű script injection, ismert rosszindulatú karakterláncok
Szemantikai Jelentésbeli koherencia, relevancia Közepes Kontextusból való kizökkentés (RAG), toxikus tartalom generáltatása, irreleváns kérések
Pragmatikai Felhasználói szándék felismerése Magas Jailbreaking, szerepjátékos támadások, rendszerutasítások megszerzése

A bemenet validáció legfőbb gyengeségei:

  • Törékenység: Egy apró változtatás a támadó promptban (pl. szinonimák használata, kódolási trükkök) könnyen átjuthat egy szigorú, de rugalmatlan szűrőn.
  • Fals pozitívok: A túlságosan agresszív szűrés blokkolhatja a legitim felhasználói kéréseket is, ami rontja a felhasználói élményt. Egy orvosi chatbotnak például engednie kell anatómiai kifejezéseket, amiket egy általános chatbot esetleg toxikusnak minősítene.
  • Kreatív kijátszás: Az emberi kreativitás végtelen, ha szabályok megkerüléséről van szó. Egy validációs rendszer sosem lesz képes minden lehetséges támadási vektorra felkészülni!

Éppen ezért a bemenet validáció nem egy mindent megoldó csodaszer, hanem egy védelmi architektúra első eleme. Azokat a támadásokat, amik átjutnak rajta, a következő rétegnek, a viselkedéselemzésnek és a futásidejű megfigyelésnek kell kezelnie. 

A validációs réteg által generált riasztások (pl. egy IP címről érkező sok sikertelen validációs kísérlet) pedig értékes bemeneti adatot szolgáltatnak az anomáliaészlelő rendszerek számára. A védelem tehát nem egyetlen fal, hanem egymást kiegészítő és erősítő rétegek összessége.