Kihagyás és továbblépés a tartalomhoz

Slopsquatting: amikor az AI kitalál egy nem létező csomagot

A kitalált csomagnevek **43%-a tíz futásból tízszer ugyanaz**. Ettől lesz a hallucinációból támadási felület: a támadónak nem kell kitalálnia, mit fog kitalálni a modell — elég egyszer megkérdeznie. Dokumentált, sikeres támadás viszont 2026 közepéig **nem volt** — és ez az őszinte válasz erősebb, mint a riogatás.
2026. szeptember 13. által
Slopsquatting: amikor az AI kitalál egy nem létező csomagot
Krisztian Eyssen, Krisztian Eyssen

A mérés

A téma alapkutatása egy 2025-ös biztonsági konferencián kapott kiemelt díjat, és a mintája elég nagy ahhoz, hogy komolyan lehessen venni.

576 000 generált kódminta, 16 modell, két nyelv, harminc különböző teszt. Ebből összesen 2,23 millió csomaghivatkozás keletkezett — és ebből 440 445, vagyis 19,7% nem létező csomagra mutatott. Az egyedi kitalált nevek száma: 205 474.

A bontás megmondja, hol a kockázat:

Hallucinációs arány
Python 15,8%
JavaScript 21,3%
Zárt, kereskedelmi modellek 5,2%
Nyílt súlyú modellek 21,7%
A legjobb egyedi modell 3,59%
A legrosszabb (JavaScriptben) 35,71%

A zárt és a nyílt súlyú modellek között négyszeres a különbség. Egy frissebb, 2026-os replikáció öt új modellen ezt a szórást nagyságrenddel összenyomta — 4,62 és 6,10% közé —, de a jelenséget nem szüntette meg.

Az ismétlődés, amitől ez támadás lesz

Ez a cikk legfontosabb száma, és a legtöbb összefoglalóból kimarad.

A kutatók 500 olyan promptot választottak véletlenszerűen, ami hallucinációt okozott, és mindegyiket tízszer lefuttatták újra. A három alábbi arány a tanulmány külön vágásaiból származik, ezért nem ad ki pontosan százat.

  • A kitalált nevek 43%-a mind a tíz futásban visszajött, ugyanúgy.
  • 39% egyszer sem ismétlődött.
  • Összességében az esetek 58%-ában a kitalált név legalább kétszer előjött.

Ha a hallucináció véletlenszerű zaj lenne, a slopsquatting nem működne: mire a támadó regisztrálja a nevet, a modell már mást találna ki. De nem véletlenszerű. A nevek közel felét megbízhatóan, újra és újra ugyanúgy találja ki.

Ettől lesz megjósolható — és ezért regisztrálható.

És ez nem elgépelés

Itt van a második meglepetés, ami a védekezést is átírja.

A kitalált neveknek mindössze 13,4%-a van egy vagy két karakternyi szerkesztési távolságra egy valódi csomagnévtől. A többség nem egy létező név elgépelt változata, hanem hihetően hangzó, de sosem létezett név.

A típusok megoszlása: nagyjából fele tiszta kitaláció, több mint harmada összekeverés (két valódi csomag nevének keresztezése), és csak a maradék elgépelésszerű. Van ezen belül egy ravasz altípus is: a Pythonra kitalált nevek 8,7%-a valóban létezik — csak a JavaScript-ökoszisztémában. A modell átviszi a nevet egyik regiszterből a másikba.

Ennek nagyon konkrét következménye van: a typosquatting ellen épített védelem — a névtávolság-alapú szűrés — ezt nagyrészt átengedi. Amit a csomagregiszterek erre a célra üzemeltetnek, az itt nem véd.

Mi történt eddig a valóságban

Három eset van, amit érdemes ismerni, és egy negyedik megállapítás, ami mindnél fontosabb.

A bizonyítás, ami 30 ezer letöltést kapott. 2024-ben egy biztonsági kutató feltöltött egy teljesen üres csomagot egy gyakran hallucinált néven. Három hónap alatt több mint 30 ezer valódi letöltést kapott — és egy nagy technológiai cég a saját repójának leírásába másolta be a telepítési parancsot. Nem kellett hozzá se rosszindulat, se marketing: elég volt, hogy a modell magabiztosan ajánlja.

A 2026-os fordulat: az agent-utasításfájlok. 2026 januárjában egy kutató védekezésből regisztrált egy nevet, ami két valódi csomag keresztezéséből született. A név AI-generált agent-utasításfájlokon keresztül terjedt, forkokkal másolódva 237 repóba jutott el, és még le is fordították. Az agentek naponta próbálták telepíteni. Rosszindulatú tartalom nem volt benne.

Ez a „miért pont most" része: a kitalált név ma már nem egy fejlesztő chatablakából jut ki, hanem utasításfájlokból, amiket senki nem olvas el, és amik forkkal sokszorozódnak.

Egy gyanús csomag. 2026 első felében egy JavaScript-csomagot — egy valódi bővítmény hallucinált, rövidített változatát — a regiszter biztonsági zárolás alá helyezett. Heti kétszáz körüli letöltésnél tartott. A felfedező óvatosan fogalmaz: „potenciálisan szándékos slopsquatting-támadás". A szándékot nem sikerült bizonyítani.

És a negyedik megállapítás: 2026 júliusáig nem jelentettek olyan esetet, ahol a slopsquattingot ténylegesen kibertámadásként használták volna.

Ezt vállalni kell. A slopsquatting ma bizonyított mechanizmus dokumentált kihasználás nélkül.

Mekkora ez a kockázat valójában?

Érdemes egymás mellé tenni két számot.

A „hagyományos" ellátási lánc oldalán 2025 folyamán több mint 454 600 új rosszindulatú csomagot azonosítottak, és ezek több mint 99%-a ugyanabban az ökoszisztémában jelent meg. Ezzel szemben a slopsquattingnál egyetlen gyanús csomag van.

A slopsquatting tehát ma nem a legnagyobb kockázat. De egy dologban különbözik minden mástól: a modellhasználattal skálázódik, nem a támadó munkájával. Minél többen kérnek kódot, annál több kitalált név kerül forgalomba — és a támadónak továbbra sem kell mást tennie, mint megkérdeznie a modellt.

Mekkora a te kitettséged

Számoljuk ki. Tegyük fel, hogy egy fejlesztő havonta ötven olyan kérdést tesz fel, ami csomagtelepítési javaslattal jár.

NYÍLT SÚLYÚ MODELLEL (21,7%):
  hallucinált javaslat:        50 × 0,217 = ~11 / hó
  ebből stabilan ismétlődő:    11 × 0,43  =  ~5 / hó

ZÁRT MODELLEL (5,2%):
  hallucinált javaslat:        50 × 0,052 = ~2,6 / hó
  ebből stabilan ismétlődő:   2,6 × 0,43  = ~1,1 / hó

(Saját számítás, a fenti mérés arányaival.)

Havonta öt olyan kitalált név, amit a modell megbízhatóan újra és újra ki fog találni — tehát amit egy támadó előre megjósolhat és regisztrálhat. A modellválasztás négyszeres különbséget jelent. Nullára egyik sem viszi.

A védekezés, ami tényleg működik

A jó hír, hogy a leghatásosabb védelem nem új, és valószínűleg félig már megvan.

Lockfile és hash-ellenőrzés. Ez azért működik, mert egyszerű logikán alapul: egy kitalált csomagnév definíció szerint nincs benne a lockfile-ban. Ha a build csak lockfile-ból telepít, az agent kitalált csomagja nem jut be — a build eltörik. Ez pontosan a kívánt viselkedés.

A két nagy ökoszisztémában ez így néz ki:

  • A JavaScript-oldalon a CI-ban a telepítés helyett a lockfile-alapú változatot kell használni. Ez megköveteli a meglévő lockfile-t, hibával leáll, ha az eltér a csomagleírótól, és sosem írja felül egyiket sem — a telepítés lényegében befagyasztott.
  • A Python-oldalon a hash-ellenőrző mód a megfelelője. Itt minden követelményhez kell hash, részleges hashelés nincs; ami nincs kiírva és hashelve, az hibát okoz; és minden verziót rögzíteni kell.

Négy további, olcsó intézkedés:

  • A regisztráció dátuma. Gyanús, ha egy csomag a projekted indulása előtt harminc-kilencven nappal jött létre, és alig van letöltése.
  • Belső proxy-regiszter engedélyezőlistával. Ami nincs a listán, az nem jut be.
  • Az agent ne telepíthessen csomagot emberi jóváhagyás nélkül. Ez egy jogosultsági beállítás, nem szabályzat kérdése.
  • Alacsonyabb hőmérséklet kódgeneráláshoz. Kevesebb kreativitás a névadásban.

Amit a regiszterek csinálnak — és amit nem

2025–2026-ban mindkét nagy csomagregiszter sokat keményített: a JavaScript-oldalon visszavonták az összes régi típusú hozzáférési tokent, a bejelentkezés két órás munkamenet-tokent ad, a CI-tokenek élettartama legfeljebb kilencven nap, és a token nélküli, megbízható közzététel lett az ajánlott út. A Python-oldalon 2025-ben már ötvenezernél több projekt használta ezt, a feltöltések ötöde így érkezett, és a rosszindulatú bejelentések kétharmadát négy órán belül kezelték.

De van egy dolog, amit pontosan kell kimondani: kifejezetten a slopsquatting ellen irányuló regiszteroldali intézkedést nem találtunk. A felsoroltak az ellátási lánc általános keményítései. A Python-oldali typosquatting-detektálás pedig névtávolságon alapul — és most már tudod, miért nem fogja meg: a kitalált nevek 86,6%-a nincs is egy-két karakternyire egy valódi névtől.

Tipikus félreértések

  • „Ez csak a rossz, nyílt modelleknél gond." Négyszeres a különbség, de a zárt modelleknél is havi egy-két megjósolható kitalált név jön ki egy fejlesztőre.
  • „A typosquatting elleni védelem ezt is megfogja." Nem. A kitalált nevek 86,6%-a nem elgépelés, hanem sosem létezett név.
  • „Véletlenszerű, tehát nem kihasználható." A nevek 43%-a tíz futásból tízszer ugyanaz.
  • „Már történt belőle nagy támadás." 2026 júliusáig nem jelentettek ilyet. Bizonyított mechanizmus, dokumentált kihasználás nélkül.
  • „A regiszterek megoldják." Sokat keményítettek, de kifejezetten erre irányuló intézkedés nincs, és a meglévő névtávolság-szűrés ezt átengedi.

Amit érdemes elvinni

A slopsquatting nem azért veszélyes, mert a modell hallucinál, hanem mert kiszámíthatóan ugyanazt hallucinálja. Ez teszi a nevet regisztrálhatóvá. A védelem viszont olcsó és régi: lockfile, hash-ellenőrzés, és telepítés előtti névellenőrzés — az agent pedig magától ne telepíthessen. A lockfile és a hash a buildet védi: oda a kitalált csomag nem jut be, a build eltörik helyetted. A cikk fő esete viszont a másik, amikor a javasolt telepítőparancsot kézzel futtatod, és azt csak a telepítés előtti ellenőrzés fogja meg: a parancs kiadása után a telepítőszkript már le is futott.

A tágabb biztonsági képről az AI-kód biztonsági számlája poszt szól; a kézi átvizsgálás lépéseiről pedig a generált kód átnézése poszt.

Slopsquatting: amikor az AI kitalál egy nem létező csomagot
Krisztian Eyssen, Krisztian Eyssen 2026. szeptember 13.
Poszt megosztása
Archiválás