29.5.2 Viselkedésalapú sandbox technikák

2025.10.06.
AI Biztonság Blog

A modellintegritás statikus ellenőrzése (ahogy az előző fejezetben láttuk) olyan, mint egy reptéri csomagátvilágítás: a gép megnézi, van-e a táskában valami gyanús tárgy. De mi van akkor, ha a veszély nem egy tárgy, hanem egy utas, aki csak a célállomáson fogja végrehajtani a tervét? A viselkedésalapú sandbox pontosan ezt a problémát célozza: nem azt nézi, *miből van* a modell, hanem azt, hogy *mit csinál* futás közben.

Kapcsolati űrlap

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

Esettanulmány: A „Csendes Adatszivárogtató” modell

Képzelj el egy esetet, ahol a csapatod egy népszerű, nyílt forráskódú repositoryból letölt egy előtanított szöveggeneráló modellt. A statikus elemzők, mint a hash-ellenőrzés vagy a súlyok eloszlásának vizsgálata, semmi rendelleneset nem találnak. A modell látszólag tiszta.

A rejtett veszély a betöltő kódban

A támadó nem a modell neurális hálójának súlyait módosította. Ehelyett a modell betöltéséért felelős segédfüggvénybe, egy `pickle` fájl deszerializációs folyamatába rejtett el egy kódrészletet. Ez a kód aktiválódik, amint a `model.load()` parancs lefut. A kód csendben, a háttérben lefutva a következőket teszi:

  • Felderíti a környezeti változókat, és `AWS_ACCESS_KEY_ID`, `GCP_PROJECT` vagy hasonló érzékeny kulcsok után kutat.
  • Megpróbálja beolvasni a felhasználó home könyvtárában lévő `.ssh` vagy `.kube/config` fájlokat.
  • Egy ártalmatlannak tűnő DNS-lekérdezésbe kódolva megpróbálja kiszivárogtatni a talált adatokat egy távoli, a támadó által kontrollált szerverre.

Egy statikus elemző ezt sosem venné észre, mivel a rosszindulatú viselkedés csak a futási környezetben, dinamikusan jön létre.

A sandbox működés közben

Mielőtt a modellt éles környezetben használnánk, egy viselkedésalapú sandboxba helyezzük. Ez egy szigorúan elszigetelt, monitorozott virtuális környezet (pl. egy Docker konténer minimális jogosultságokkal). A modellt betöltjük és futtatunk rajta néhány teszt inferenciát. A sandbox közben minden rendszerhívást naplóz.

Az analitikai motor azonnal riasztást ad, mert a következő anomáliákat észleli:

  • Hálózati anomália: A modell egy nem engedélyezett, külső domainnel próbál kommunikálni (`malicious-dns-exfil.com`). Egy szöveggeneráló modellnek normál esetben nincs szüksége külső hálózati kapcsolatra az inferencia során.
  • Fájlrendszer-hozzáférés: A folyamat megpróbált olvasási műveletet végrehajtani a `/home/user/.ssh/id_rsa` útvonalon. Ez egyértelműen kívül esik a modell működéséhez szükséges adatok körén.
  • Folyamatindítás: A modell betöltője megpróbált egy `env` alfolyamatot indítani a környezeti változók listázásához.

A sandbox nem a modell belső szerkezetét vizsgálta, hanem a megfigyelt viselkedése alapján ítélte rosszindulatúnak. A modell azonnal karanténba kerül, és az incidens kivizsgálása megkezdődik.

A viselkedésalapú sandbox felépítése

Egy ilyen rendszer általában három fő komponensből áll: egy izolált futtatókörnyezetből, egy monitorozó alrendszerből és egy elemző motorból.

Nem megbízható modell Izolált Sandbox Környezet Modell Futtatása Viselkedés Monitorozása (Rendszerhívások, Hálózat, Fájlok) Analízis & Ítélet (Gyanús / Biztonságos)

A viselkedésalapú sandbox folyamata: a modell egy izolált környezetben fut, ahol a tevékenységét rögzítik és elemzik a biztonsági ítélet meghozatalához.

A gyakorlatban ez egy „wrapper” szkripttel valósítható meg, ami a modell betöltése és futtatása előtt és után elvégzi a szükséges monitorozási lépéseket.


# Pszeudokód egy egyszerű sandbox wrapperre
import os
import sys
import model_loader # A nem megbízható betöltő
from sandbox_monitor import SystemCallMonitor, NetworkMonitor

# Monitorozó objektumok inicializálása
syscall_monitor = SystemCallMonitor()
network_monitor = NetworkMonitor()

def run_model_in_sandbox(model_path, sample_data):
 print("[SANDBOX] Izolált környezet indítása...")
 
 # A monitorozás elindítása a kritikus művelet előtt
 syscall_monitor.start()
 network_monitor.start()
 
 try:
 # A potenciálisan veszélyes modell betöltése és futtatása
 model = model_loader.load(model_path)
 result = model.predict(sample_data)
 print(f"[SANDBOX] Modell kimenete: {result}")

 finally:
 # A monitorozás leállítása mindenképpen
 syscall_log = syscall_monitor.stop()
 network_log = network_monitor.stop()
 print("[SANDBOX] Környezet leállítása.")
 
 # A begyűjtött naplók elemzése
 analyze_logs(syscall_log, network_log)

def analyze_logs(syscalls, network_traffic):
 # Szabályalapú elemzés
 suspicious_files = ["/etc/passwd", ".ssh/"]
 if any(f in call for f in suspicious_files for call in syscalls.file_access):
 print("[RIASZTÁS] Gyanús fájlhozzáférés történt!")
 
 if network_traffic.has_external_traffic():
 print("[RIASZTÁS] Váratlan külső hálózati kommunikáció!")

# A sandbox futtatása
run_model_in_sandbox("path/to/untrusted_model.pkl", "test_input")
 

Tipikus megfigyelt viselkedési minták

Az elemző motor általában előre definiált szabályok vagy akár egy anomáliadetekciós MI alapján keresi a gyanús mintákat.

Kategória Gyanús tevékenység Potenciális fenyegetés
Hálózati aktivitás Ismeretlen IP-címekkel vagy domainekkel való kommunikáció, szokatlan portok használata, nagy mennyiségű kimenő adatforgalom. Adatszivárogtatás, C2 (Command and Control) kommunikáció, letöltő (downloader) funkcionalitás.
Fájlrendszer műveletek Rendszerfájlok, konfigurációs állományok (`.env`, `.aws/credentials`), SSH kulcsok olvasása. Írási műveletek szokatlan helyekre. Információlopás, perzisztencia kiépítése, rendszer módosítása (ransomware előkészítése).
Folyamatkezelés Új alfolyamatok indítása (pl. `curl`, `bash`, `powershell`), a saját folyamat memóriájának vizsgálata, más folyamatok listázása. Kódinjektálás, shell parancsok futtatása, felderítés (reconnaissance).
Erőforrás-használat Hirtelen, extrém magas CPU vagy GPU terhelés, ami nem áll arányban az inferencia komplexitásával. Kriptovaluta-bányászat (cryptojacking), erőforrás-alapú DoS támadás előkészítése.

Korlátok és kijátszási kísérletek

A sandbox sem csodaszer. A kifinomult támadók megpróbálhatják kijátszani:

  • Sandbox-detekció: A rosszindulatú kód ellenőrizheti, hogy virtuális környezetben fut-e (pl. specifikus driverek, MAC-címek, alacsony processzorszám alapján), és ha igen, inaktív marad.
  • Időzített támadás (Logic Bomb): A kártevő csak egy bizonyos idő elteltével vagy egy specifikus trigger (pl. egy adott dátum vagy egy ritka bemeneti minta) hatására aktiválódik, ami a rövid ideig tartó sandbox tesztelés során nem derül ki.
  • Többlépcsős letöltés: A kezdeti modell csak egy ártalmatlan letöltőt tartalmaz, ami később, éles környezetben tölti le a tényleges rosszindulatú kódot.

Ezek miatt a viselkedésalapú sandbox egy fontos, de nem egyedüli eleme a védekezésnek. Együtt kell alkalmazni a statikus elemzéssel (29.5.1), a folyamatos ellátási lánc monitorozással (29.5.3) és a megbízható modell-nyilvántartásokkal (29.5.4) egy rétegzett védelmi stratégia (defense-in-depth) részeként.