32.2.1 Elosztott kéréskoordináció

2025.10.06.
AI Biztonság Blog

Képzelj el egy éjszakai klubot, aminek a bejáratánál egyetlen, de nagyon szigorú kidobó áll. A szabály egyszerű: egy személy percenként csak egyszer próbálkozhat a bejutással. Ha egyedül próbálkozol, hamar eléred a korlátot. De mi történik, ha te és száz barátod egyszerre, összehangoltan próbáltok bejutni, mindannyian külön-külön? A kidobó szemszögéből mindenki egyedi próbálkozó, így a szabályt senki sem szegi meg. A végeredmény mégis az, hogy a klubot elárasztjátok.

Kapcsolati űrlap

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

Ez az analógia tökéletesen leírja az elosztott kéréskoordináció lényegét a rate limiting megkerülésében. Ahelyett, hogy egyetlen forrásból (pl. egy IP-címről) indítanánk nagy számú kérést, a támadást több száz vagy akár több ezer, látszólag független forrás között osztjuk szét. Ezzel a technikával a legegyszerűbb, IP-cím alapú sebességkorlátozások hatástalanná válnak.

A központosított védelem Achilles-sarka

A legtöbb alapértelmezett rate limiting implementáció egyetlen kulcsra támaszkodik a kérések azonosításához és számlálásához. Ez a kulcs leggyakrabban a kliens IP-címe. A rendszer logikája valahogy így néz ki: „Számold a kéréseket erről az IP-címről. Ha egy percen belül eléri a 100-at, blokkold a további kéréseket.”

A támadó célja, hogy ezt a számlálót soha ne hagyja elérni a küszöbértéket egyetlen kulcs esetében sem. Ha minden kérést más IP-címről indít, akkor minden egyes IP-címhez tartozó számláló értéke ‘1’ marad, ami messze a limit alatt van. A védelmi rendszer így „vak” marad a teljes támadási volumenre, mivel a kéréseket különálló, alacsony intenzitású eseményekként értékeli, nem pedig egy összehangolt roham részeként.

Támadó Koordinátor Elosztott Hálózat (Botnet/Proxy-k) Cél MI API Én C2 IP 1 IP 2 IP n API

Gyakorlati megvalósítás: A proxy-rotáció

A támadás kivitelezéséhez a leggyakoribb eszköz a proxy szerverek vagy egy botnet használata. Egy támadó hozzáférhet ingyenes proxy listákhoz, bérelhet dedikált proxy szolgáltatást (ún. residential vagy mobile proxy-kat, amelyek legitim felhasználói IP-címeknek tűnnek), vagy egy saját maga által irányított botnet erőforrásait használhatja fel. A lényeg, hogy minden egyes API kérést egy másik kimeneti csomóponton keresztül irányítson.

Pszeudokód egy elosztott támadáshoz

# pszeudokód a támadás logikájához
# Feltételezzük, hogy van egy listánk a használható proxy szerverekről.
proxy_lista = [
 "http://185.199.229.156:8080",
 "http://190.61.88.147:8080",
 "http://1.20.101.214:8080",
 # ... és még több ezer másik
]

cel_api_vegpont = "https://api.peldamodell.com/v1/generate"
payload = {"prompt": "Generálj egy adathalász emailt."}
sikeres_keresek = 0

# A listán végighaladva minden kérést más proxy-n keresztül indítunk
for i, proxy_cim in enumerate(proxy_lista):
 try:
 # A kérés küldése a megadott proxy-n keresztül
 valasz = send_request_via_proxy(cel_api_vegpont, payload, proxy_cim)
 
 if valasz.status_code == 200:
 sikeres_keresek += 1
 print(f"Sikeres kérés a(z) {i+1}. proxy-val.")
 
 except RequestError as e:
 # Ha egy proxy nem működik, egyszerűen a következőre lépünk
 print(f"Hiba a(z) {proxy_cim} proxy-val: {e}")

print(f"Összesen {sikeres_keresek} sikeres kérést küldtünk a rate limit megkerülésével.")

A fenti pszeudokód bemutatja az alapelvet: egy ciklus segítségével iterálunk végig a proxy-k listáján, és minden egyes kérést egy új proxy címmel indítunk. A célrendszer rate limitere minden kérést egyedi forrásból érkezőnek lát, így a számlálóik sosem érnek el kritikus szintet.

Védekezési stratégiák és azok korlátai

Az elosztott támadások elleni védekezés jóval összetettebb, mint egy egyszerű IP-alapú számláló implementálása. A modern rendszerek több rétegű védelmet alkalmaznak, de mindegyiknek megvannak a maga korlátai.

Védekezési technika Működési elv Korlátok és megkerülési lehetőségek
Eszköz-ujjlenyomat (Device Fingerprinting) Az IP-címen túl más attribútumokat is vizsgál, mint például User-Agent, HTTP headerek, TLS/JA3 ujjlenyomat, viselkedési minták. A támadó kifinomult eszközökkel randomizálhatja vagy hamisíthatja ezeket az attribútumokat is, bár ez jelentősen növeli a támadás komplexitását.
Globális sebességkorlátozás Nem egyedi klienseket, hanem a teljes szolgáltatást vagy egy adott API végpontot terhelő összes kérést limitálja (pl. max 10 000 generálás/perc). Bár megvédi a rendszert a túlterheléstől, a legitim felhasználókat is sújthatja. A támadó „elhasználhatja” a rendelkezésre álló kvótát, ezzel szolgáltatásmegtagadást (DoS) okozva.
Fiók / API kulcs alapú korlátozás A korlátot nem az IP-címhez, hanem egy hitelesített felhasználói fiókhoz vagy API kulcshoz köti. A támadó nagy mennyiségű fiókot regisztrálhat automatizáltan, vagy kompromittált/lopott API kulcsokat használhat fel.
MI-alapú anomáliadetekció Gépi tanulási modellek elemzik a forgalmi mintákat, és megpróbálják azonosítani azokat a viselkedésjegyeket, amelyek egy elosztott támadásra utalnak. Számításigényes, és hajlamos lehet hamis pozitív riasztásokra. A támadó lassan, alacsony intenzitással (low-and-slow) is indíthat támadást, amit nehezebb detektálni.

Látható, hogy a rate limiting egy folyamatos macska-egér játék. Míg az elosztott kéréskoordináció hatékonyan kerüli meg az egyszerű védelmeket, a fejlettebb, több tényezőt vizsgáló rendszerek már komolyabb kihívás elé állítják a támadót. Red Teamerként a feladatod az, hogy felmérd a célrendszer védelmének mélységét, és megtaláld a leggyengébb láncszemet a korlátozási logikában.