> Hogyan hallucinálnak az LLM-ek csomagneveket, hogyan regisztrálják ezeket a támadók, és mely registry-, lockfile- és ágenskontrollok állítják meg a telepítést.
>
> Web page: https://balazscsorba.com/hu/blog/slopsquatting-ai-package-hallucinations · Language: Magyar · Also available in: [English](https://balazscsorba.com/blog/slopsquatting-ai-package-hallucinations.md) · [Deutsch](https://balazscsorba.com/de/blog/slopsquatting-ai-package-hallucinations.md)
> Author: Balázs Csorba · Published: 2026-10-16 · Keywords: slopsquatting, package hallucination, ai hallucinated packages, llm package confusion attack, coding agent supply chain security, npm min-release-age, pnpm minimumReleaseAge, uv exclude-newer, npm ignore-scripts, huggingface-cli hallucinated package

[Blog](https://balazscsorba.com/hu/blog)/Biztonság és megfelelés

# Slopsquatting: amikor a kódoló ágensek nem létező csomagokat telepítenek

Hogyan hallucinálnak az LLM-ek csomagneveket, hogyan regisztrálják ezeket a támadók, és mely registry-, lockfile- és ágenskontrollok állítják meg a telepítést.

[Balázs Csorba](https://balazscsorba.com/hu/about)·2026\. október 16.·6 perc olvasás

-   Supply chain security
-   Coding agents
-   npm
-   PyPI
-   Package hallucination

![Egy kódoló ágens telepítési parancsot javasol egy nem létező csomagnévre, egy támadó pedig a telepítés előtt regisztrálja ezt a nevet.](https://balazscsorba.com/images/blog/slopsquatting-ai-package-hallucinations/cover.webp?v=5fa17ea26d)

## A lényeg röviden

-   Egy 576 000 kódmintás vizsgálatban a kereskedelmi modellek által javasolt csomagok legalább 5,2%-a, a nyílt modelleké 21,7%-a nem létezett.
-   A hallucinált nevek ismétlődnek, így a támadó előre regisztrálhatja őket, és megvárhatja, amíg ágensek és fejlesztők telepítik őket.
-   Az npm, a pnpm és az uv minimális kiadási kor beállításai blokkolják a vadonatúj verziókat, de nem egy hónapokkal korábban lefoglalt nevet.
-   Az ágens minden telepítés előtt kérdezzen, az ismeretlen csomagokat ellenőrizd a registryben, a telepítési szkriptek pedig alapból legyenek kikapcsolva.
-   A hash-eket tartalmazó lockfile-ok és az ellenőrizetlen függőségváltozást elutasító CI a csendes telepítésből átnézett diffet csinál.

Ezen az oldalon

1.  [Mi az a slopsquatting?](https://balazscsorba.com/#what-is-slopsquatting)
2.  [Milyen gyakran hallucinálnak a modellek csomagokat?](https://balazscsorba.com/#what-the-research-measured)
3.  [Megtörtént már a laboron kívül?](https://balazscsorba.com/#in-the-wild)
4.  [Mit kényszerítsen ki az ágens futtatókörnyezete?](https://balazscsorba.com/#agent-harness-controls)
5.  [Mely csomagkezelő-beállítások segítenek?](https://balazscsorba.com/#package-manager-settings)
6.  [Mit ellenőrizzen a CI?](https://balazscsorba.com/#lockfiles-and-ci)
7.  [Mi a rövid ellenőrzőlista?](https://balazscsorba.com/#checklist)
8.  [Források](https://balazscsorba.com/#sources)

Cikk meghallgatása

0:000:00

Egy kódoló ágens leírja, hogy `import fastjson_validator`, lefuttatja a `pip install fastjson-validator` parancsot, és a telepítés sikerül. A csapatban senki sem hallott a csomagról, mert egyetlen dokumentációban sem szerepel: a modell találta ki a nevet. A telepítés azért sikerül mégis, mert valaki más korábban észrevette ugyanezt a hallucinációt, és lefoglalta a nevet. Ennek a támadásnak ma már neve van, slopsquatting, és a kódoló ágensek valószínűbbé teszik, mert anélkül futtatnak telepítési parancsokat, hogy egy ember begépelné őket.

A cikk bemutatja, mit mért a kutatás, miért elég kiszámíthatók a hallucinált nevek ahhoz, hogy le lehessen foglalni őket, és milyen kontrollok működnek az egyes rétegekben: az ágens futtatókörnyezetében, a csomagkezelőben, a lockfile-ban és a CI-ban. A [kódoló ágensek sandboxolása](https://balazscsorba.com/hu/blog/sandboxing-coding-agents-ci-checklist) cikkre épít, amely a kárt korlátozza, ha mégis lefut valami rosszindulatú.

## Mi az a slopsquatting?

A typosquatting lefoglalja a `reqeusts` nevet, és megvárja, amíg valaki elgépeli a `requests`\-et. A slopsquatting egy modell által kitalált nevet foglal le, például egy hihető, de nem létező wrappert vagy CLI-t, és megvárja, amíg a modellek javasolják. Az első mérést végző kutatók csomagösszetévesztéses (package confusion) támadásnak nevezik: az áldozat azt hiszi, valódi függőséget telepít, a registry pedig kiszolgálja, amit a támadó feltöltött, a fejlesztő gépén vagy a CI-ban lefutó telepítési szkriptekkel együtt.

A támadó költsége a nevek regisztrálása; a védekező esélye bármelyik lépés a javaslat és a futtatás között.

## Milyen gyakran hallucinálnak a modellek csomagokat?

A legalaposabb vizsgálat [Spracklen és társaié](https://arxiv.org/abs/2406.10279), amely a USENIX Security 2025 konferencián jelent meg. 16 népszerű kódmodellel 576 000 kódmintát generáltak Pythonban és JavaScriptben, és minden hivatkozott csomagot ellenőriztek a registrykben.

Eredmény

Érték

Hallucinált csomagok, kereskedelmi modellek (átlag, legalább)

5.2%

Hallucinált csomagok, nyílt forrású modellek (átlag, legalább)

21.7%

Egyedi hallucinált csomagnevek

205,474

Elemzett kódminták

576,000

A támadók számára nem az arány számít, hanem az ismétlődés: a hallucinációk nem véletlen zajok, ugyanazok a promptok újra ugyanazokat a kitalált neveket adják, ezért éri meg lefoglalni őket. A szerzők olyan ellenintézkedéseket is teszteltek, mint a visszakeresés és az önellenőrzés, és arról számolnak be, hogy ezek a kódminőség megtartása mellett jelentősen csökkentik a hallucinált csomagokat. Ez hasznos, de nem váltja ki a modellen kívüli ellenőrzéseket.

## Megtörtént már a laboron kívül?

2024 márciusában [Bar Lanyado, a Lasso Security munkatársa](https://www.lasso.security/blog/ai-package-hallucinations) észrevette, hogy a modellek egy `huggingface-cli` nevű Python-csomagot ajánlanak, amely nem létezett; a valódi CLI a huggingface\_hub csomaggal érkezik. Feltöltött ezen a néven egy üres csomagot, egy második álcsomaggal kiszűrte a szkennerek forgalmát, és három hónap alatt több mint 30 000 valódi letöltést számolt. A hamis csomag telepítési utasítása egy Alibaba-kutatási repó README-jébe is bekerült. Ez a csomag ártalmatlan volt; a következő talán nem lesz az.

## Mit kényszerítsen ki az ágens futtatókörnyezete?

A legolcsóbb kontroll a telepítés pillanatában van. Aki begépeli az `npm install` parancsot, általában tudja, miért; egy feladat közepén futtató ágens nem áll meg elgondolkodni. Állítsd be a futtatókörnyezetet úgy, hogy a telepítéshez jóváhagyás kelljen, és adj az ágensnek gyors módot egy csomag ellenőrzésére, mielőtt javasolja. Az irányítók és érzékelők általános ötletét a [harness engineering](https://balazscsorba.com/hu/blog/harness-engineering-coding-agents) cikkben írtam le.

```
// .claude/settings.json: installs always ask, the lockfile is never edited by hand
{
  "permissions": {
    "ask": [
      "Bash(npm install:*)", "Bash(npm i:*)", "Bash(pnpm add:*)", "Bash(yarn add:*)",
      "Bash(pip install:*)", "Bash(uv add:*)", "Bash(uv pip install:*)", "Bash(npx:*)"
    ],
    "deny": ["Edit(package-lock.json)", "Edit(pnpm-lock.yaml)", "Edit(uv.lock)"]
  }
}
```

-   **Javaslat előtt ellenőrizz:** a csomagnak léteznie kell, legyen forráskód-repója, kiadási története és valódi használata. Egy múlt heti egyetlen kiadással rendelkező név alaposabb vizsgálatot érdemel, akármilyen magabiztosnak hangzik is a modell.
-   **Részesítsd előnyben a standard könyvtárat és a meglévő függőségeket.** Egy AGENTS.md-utasítás, hogy az ágens azt használja, amitől a projekt már függ, a forrásnál csökkenti az új neveket.
-   **Futtasd az ágenst sandboxban**, hitelesítő adatok nélkül, hogy egy rosszindulatú telepítési szkript ne találjon semmi ellopnivalót, ahogy a [kódoló ágensek és a titkok](https://balazscsorba.com/hu/blog/coding-agent-secrets-hygiene) cikkben.

## Mely csomagkezelő-beállítások segítenek?

Eszköz

Beállítás

Hatás

npm

`min-release-age`, `before`

Csak N napnál régebbi vagy egy dátum előtt közzétett verziókat telepít

npm

`ignore-scripts`, `allowScripts`

Nem futtat telepítési szkriptet, vagy csak a listázott csomagokét

pnpm

`minimumReleaseAge`

Minimális percek a közzététel óta, a tranzitív függőségekre is; a pnpm 11 óta alapból 1440

uv

`exclude-newer`

Figyelmen kívül hagyja az egy időpont után vagy például 7 napon belül feltöltött fájlokat

pip / uv

`--require-hashes`

Minden követelmény rögzített verziójú és hash alapján ellenőrzött

Legyen világos, mit csinálnak a kiadási kor beállításai. Azt szűrik, mikor jelent meg egy verzió, ami az újonnan regisztrált nevek és a kompromittált kiadások ellen véd, amelyeket általában órákon belül visszavonnak. A pnpm dokumentációja szerint a legtöbb rosszindulatú kiadást egy órán belül felfedezik és eltávolítják. Egy hallucinált név, amelyet a támadó hat hónapja regisztrált, elég régi ahhoz, hogy átmenjen. A késleltetést ezért kombináld telepítési jóváhagyással és annak ellenőrzésével, mióta létezik maga a csomag.

```
# .npmrc
min-release-age=7
ignore-scripts=true

# pnpm-workspace.yaml
minimumReleaseAge: 10080   # 7 days, in minutes

# pyproject.toml
[tool.uv]
exclude-newer = "7 days"
```

## Mit ellenőrizzen a CI?

A CI-ban válik az ágens csendes változtatásából átnézett diff. Telepíts `npm ci`, `pnpm install --frozen-lockfile` vagy `uv sync --locked` paranccsal, hogy a build elbukjon, ha a manifeszt és a lockfile eltér. Utána tedd láthatóvá az új függőségeket: egy job, amely kilistázza az alapágához képest hozzáadott csomagokat az első közzétételük dátumával és a repójuk URL-jével, és nem üres lista esetén név szerinti átnézőt követel. Ebben az átnézésben lesz a _sosem hallottam róla_ érzésből kérdés, nem merge.

**Ágens-PR-eknél először az új neveket nézd**

Egy ágens által írt pull request átnézésekor a függőségek diffjét olvasd el a kód előtt. Egy új csomag hosszú távú döntés; egy rossz kódsor olyan hiba, amelyet később kijavíthatsz. Lásd: [az ágensek által írt PR-ek áradatának kezelése](https://balazscsorba.com/hu/blog/ai-generated-pr-review-bottleneck).

## Mi a rövid ellenőrzőlista?

1.  A telepítési parancsokhoz a csapat minden ágenskörnyezetében jóváhagyás kell.
2.  Az ágensek éles hitelesítő adatok és hosszú életű tokenek nélküli sandboxban futnak.
3.  A telepítési szkriptek alapból ki vannak kapcsolva, kifejezett engedélylistával.
4.  Az npm-ben, a pnpm-ben vagy az uv-ban be van állítva a kiadási kor szerinti késleltetés.
5.  A CI csak a lockfile-ból telepít, és minden új függőséget név szerinti átnézőhöz rendel.

## Források

1.  [Spracklen et al.: We Have a Package for You! A Comprehensive Analysis of Package Hallucinations by Code Generating LLMs (2024)](https://arxiv.org/abs/2406.10279)
2.  [Lasso Security, Bar Lanyado: Diving Deeper into AI Package Hallucinations (Mar 2024)](https://www.lasso.security/blog/ai-package-hallucinations)
3.  [npm Docs: config (min-release-age, before, ignore-scripts, allow-scripts)](https://docs.npmjs.com/cli/v11/using-npm/config)
4.  [pnpm: Dependency resolution settings (minimumReleaseAge)](https://pnpm.io/settings/dependency-resolution)
5.  [uv: Settings reference (exclude-newer, require-hashes)](https://docs.astral.sh/uv/reference/settings/)
6.  [pip documentation: Secure installs and hash-checking mode](https://pip.pypa.io/en/stable/topics/secure-installs/)

## Gyakori kérdések

Mi az a slopsquatting?

A slopsquatting egy olyan csomagnév regisztrálása, amelyet az LLM-ek gyakran hallucinálnak, hogy a modell által generált kód vagy telepítési parancs a támadó csomagját húzza be. A typosquatting egy változata, csak a hibás név a modelltől jön, nem elgépelésből.

Milyen gyakran hallucinálnak az LLM-ek csomagneveket?

Spracklen és társai 16 modellel 576 000 kódmintát generáltak Pythonban és JavaScriptben, és azt találták, hogy a kereskedelmi modellek által javasolt csomagok legalább 5,2%-a, a nyílt forrású modelleké 21,7%-a nem létezett, összesen 205 474 egyedi hallucinált névvel.

Előfordult ez már a gyakorlatban?

Igen, tesztként. 2024-ben a Lasso Security kutatója, Bar Lanyado azt találta, hogy a modellek egy nem létező, huggingface-cli nevű Python-csomagot ajánlanak, feltöltött ezen a néven egy üres csomagot, és három hónap alatt több mint 30 000 valódi letöltést mért. Telepítési utasítás egy Alibaba-repóban is szerepelt hozzá.

Véd a minimális kiadási kor a slopsquatting ellen?

Csak részben. Az olyan beállítások, mint az npm min-release-age, a pnpm minimumReleaseAge és az uv exclude-newer, a nagyon frissen közzétett verziókat blokkolják, ami az újonnan regisztrált nevek és a kompromittált kiadások ellen segít. Egy hónapokkal korábban regisztrált név átmegy az ellenőrzésen.

Mit állítsak be a kódoló ágensekhez?

Minden csomagtelepítő parancshoz kérj jóváhagyást, futtasd az ágenseket titkokhoz nem férő sandboxban, kapcsold ki alapból a telepítési szkripteket, és buktasd el a CI-t, ha senki által át nem nézett függőségváltozás érkezik. Az ágens ellenőrizze a csomagot a registryben, mielőtt javasolja.

Írta: Csorba Balázs

Senior fullstack és AI mérnök Stájerországban – több mint 10 év Vue, Nuxt, Node.js és PHP, ma AI-ügynököknek építek eszközöket.

[AI fejlesztés és MCP szerverek →](https://balazscsorba.com/hu/expertise/ai-engineer)[Rólam →](https://balazscsorba.com/hu/about)

## További cikkek

-   [RAG-mérgezés: hogyan téríthet el néhány dokumentum egy asszisztenst, és hogyan védd a tudásbázist](https://balazscsorba.com/hu/blog/rag-poisoning-knowledge-base-attacks)
-   [Kódoló ügynökök és titkok: kulcsok a kontextuson, logokon és commitokon kívül](https://balazscsorba.com/hu/blog/coding-agent-secrets-hygiene)
-   [AI-kódolóeszközök és üzemi tanács: mikor számít megfigyelésnek a napló](https://balazscsorba.com/hu/blog/works-council-ai-tools-austria-germany)
-   [DPIA egy LLM-es ügyfélszolgálati asszisztensre: példa a GDPR 35. cikke szerint](https://balazscsorba.com/hu/blog/dpia-llm-feature-worked-example)

## Pont erre van szükséged?

Írj a projektedről vagy a pozícióról – szívesen hallok felőled.

[Lépj velem kapcsolatba](mailto:contact@balazscsorba.com) [Kapcsolódjunk LinkedInen](https://www.linkedin.com/in/balazs-csorba)
