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