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.