Ktoś podrzucił nieistniejący pakiet, a AI ci go poleciła

Opublikowano: 4 września 2026

Ktoś podrzucił nieistniejący pakiet, a AI ci go poleciła

Ktoś podrzucił nieistniejący pakiet, a AI ci go poleciła

Poprosisz asystenta AI o kawałek kodu w Pythonie albo JavaScripcie. W odpowiedzi dostajesz gotowe rozwiązanie razem z poleceniem instalacji jakiejś biblioteki: pip install nazwa-pakietu. Wygląda przekonująco, więc instalujesz. Problem w tym, że taki pakiet może w ogóle nie istnieć — a jeśli ktoś zdąży go wcześniej zarejestrować pod tą samą nazwą i wypełnić złośliwym kodem, zainstalujesz dokładnie to, co ten ktoś przygotował.

To zjawisko nazywa się slopsquatting. Termin ukuli w kwietniu 2025 roku Seth Larson (Developer-in-Residence Python Software Foundation) i Andrew Nesbitt, jako złożenie „AI slop” (bezwartościowa, generowana maszynowo treść) i „typosquatting” (rejestrowanie nazw łudząco podobnych do popularnych pakietów, licząc na literówkę użytkownika).


Jak to działa

Modele językowe, generując kod, czasem „wymyślają” nazwę biblioteki, która brzmi wiarygodnie, ale nigdy nie została opublikowana. To nie jest rzadka usterka. Największe jak dotąd badanie akademickie na ten temat — „We Have a Package for You!” (USENIX Security 2025, zespół z University of Texas at San Antonio, University of Oklahoma i Virginia Tech) — wygenerowało 2,23 mln próbek kodu na 16 modelach językowych, w Pythonie i JavaScripcie. Wynik: 19,7% rekomendowanych pakietów nie istniało w rejestrze. Modele open source myliły się średnio w 21,7% przypadków, modele komercyjne w 5,2% (najlepszy wynik miał GPT-4 Turbo — 3,59%, najgorsze wyniki modeli z rodziny CodeLlama przekraczały w niektórych konfiguracjach 33%).

Kluczowe jest to, że te halucynacje nie są losowe. Ponad 58% zmyślonych nazw pojawiało się ponownie przy powtórzeniu tego samego zapytania, a 43% pojawiało się konsekwentnie we wszystkich 10 na 10 uruchomień. To oznacza, że atakujący może z góry przewidzieć, którą nazwę model podpowie, i zarejestrować ją, zanim ktokolwiek zdąży zorientować się w błędzie.

Badacze skategoryzowali też same halucynacje: 38% to „konflacje” — połączenie dwóch prawdziwych nazw pakietów w jedną nieistniejącą. Klasyczny przykład: pakiety jscodeshift i react-codemod istnieją naprawdę, ale model potrafi „zlepić” je w nieistniejącą nazwę „react-codeshift”.

Nowsze badanie replikacyjne, przeprowadzone na modelach wydanych między październikiem 2025 a marcem 2026, pokazało spadek skali problemu, ale nie jego zniknięcie: od 4,62% (Claude Haiku 4.5) do 6,10% (GPT-5.4-mini) próbek nadal zawierało halucynowany pakiet (badanie „The Range Shrinks, the Threat Remains”, arXiv 2605.17062).


Udokumentowane przypadki

huggingface-cli (2023). Badacz bezpieczeństwa Bar Lanyado sprawdził, które halucynowane nazwy pakietów powtarzały się najczęściej u modeli LLM, wybrał jedną z nich — „huggingface-cli” — i zarejestrował ją na PyPI jako nieszkodliwy, pusty pakiet, w ramach eksperymentu. W ciągu trzech miesięcy pakiet miał ponad 30 000 pobrań. Nazwa trafiła nawet do pliku README w publicznym repozytorium Alibaby — ktoś wkleił tam błędną komendę instalacji zasugerowaną przez model AI, nie sprawdzając, czy pakiet w ogóle istnieje.

react-codeshift (styczeń 2026). Charlie Eriksen z Aikido Security zauważył, że narzędzia AI rekomendują pakiet npm „react-codeshift” — halucynowaną konflację jscodeshift i react-codemod, opisaną wyżej. Pakiet nigdy nie istniał, ale 237 repozytoriów na GitHubie już się do niego odwoływało w plikach „agent skills” — kopiowanych, forkowanych, tłumaczonych, nigdy nie zweryfikowanych — zanim ktokolwiek go opublikował. Eriksen zarejestrował tę nazwę defensywnie, jako badacz, żeby uprzedzić potencjalnego atakującego, a nie jako atak.

Do lipca 2026 roku, według Wikipedii, nie ma potwierdzonego, udokumentowanego przypadku, w którym slopsquatting posłużył do realnego ataku na system produkcyjny — wykradzenia danych czy przejęcia kontroli nad systemem ofiary. Dotychczasowe przypadki to dowody koncepcji przygotowane przez badaczy bezpieczeństwa, nie ataki przestępcze.


Czego to jeszcze nie mówi

Nie wiadomo, ile spośród ponad 205 000 unikalnych halucynowanych nazw pakietów zebranych w badaniu USENIX zostało faktycznie zarejestrowanych przez kogokolwiek — dobrego czy złego aktora. Nie ma też twardych danych o skali problemu w językach innych niż Python i JavaScript, bo badanie USENIX obejmowało tylko te dwa.


Co robić

  1. Nigdy nie wykonuj polecenia instalacji pakietu zasugerowanego przez AI bez sprawdzenia, że pakiet istnieje w oficjalnym rejestrze (PyPI/npm) i ma realną historię — datę pierwszej publikacji, liczbę pobrań, autora.
  2. Jeśli agent AI ma uprawnienia do wykonywania pip install / npm install, potrzebuje bramki: instalacja tylko z listy dozwolonych pakietów albo wymagane zatwierdzenie przez człowieka przed dodaniem nowej zależności.
  3. Skanery zależności, lockfile i weryfikacja hashy pakietów powinny być standardem w CI/CD, nie rutyną robioną „od czasu do czasu”.
  4. Pliki „agent skills” czy fragmenty kodu kopiowane między repozytoriami trzeba traktować jak kod od nieznanego autora — z przeglądem przed użyciem, nie kopiuj-wklej.
  5. Monitorowanie rejestrów pakietów — na przykład alert, gdy w projekcie pojawia się nowa, nigdy wcześniej nieużywana nazwa — skraca okno, w którym ktoś mógłby taki atak przeprowadzić.

Test na 5 minut

Poproś dowolny model AI o kod korzystający z mniej popularnej biblioteki do jakiegoś niszowego zadania. Sprawdź, czy zasugerowana nazwa pakietu naprawdę istnieje w PyPI albo npm. Część trafień okaże się fikcyjna.

Źródła

  • „We Have a Package for You!”, USENIX Security 2025 (University of Texas at San Antonio, University of Oklahoma, Virginia Tech) — badanie 2,23 mln próbek kodu, cytowane m.in. przez Socket.dev, Cloud Security Alliance i Mend.io
  • „The Range Shrinks, the Threat Remains” — https://arxiv.org/abs/2605.17062
  • Aikido Security (Charlie Eriksen), „Agent Skills Are Spreading Hallucinated npx Commands”, styczeń 2026
  • Wikipedia, hasło „Slopsquatting”, stan na 2025/2026
  • Relacje branżowe o eksperymencie Bar Lanyado z pakietem huggingface-cli (2023) — Xygeni.io, DZone

Ten artykuł jest częścią serii „Bezpieczne używanie AI” na barnabaai.com.

Ten tekst powstał przy udziale narzędzi AI. Treść merytoryczna została sprawdzona przez autora.

sofi - neutral