Jeśli zainstalowałeś w weekend (22-25 maja) którykolwiek z tych pakietów — rotuj natychmiast: klucze SSH, portfele Sui/Solana/Aptos, tokeny GitHub, klucze AWS, dane przeglądarek.
Pakiety npm: dev-env-bootstrapper, wallet-security-checker, prompt-engineering-toolkit, solidity-deploy-guard, defi-threat-scanner i powiązane. PyPI: eth-security-auditor i pochodne. Crates.io: move-analyzer-build i powiązane.
Pełna lista IoC i pakietów: https://socket.dev/blog/trapdoor-crypto-stealer-npm-pypi-crates
22 maja 2026 roku o godzinie 20:20:18 UTC na PyPI pojawił się pakiet eth-security-auditor@0.1.0. Przez następne 72 godziny, w falach, 34 złośliwe pakiety trafiły do trzech rejestrów jednocześnie — npm, PyPI i Crates.io. 384 wersje, trzy ekosystemy, jeden weekend.
Socket wykrył kampanię i nadał jej nazwę TrapDoor. Średni czas wykrycia: 5 minut i 56 sekund od publikacji. Część pakietów nadal była aktywna w momencie pisania tego tekstu.
Crates.io jako nowe terytorium
Shai-Hulud przez maj uderzał w npm i PyPI. TrapDoor dodaje Crates.io — rejestr pakietów języka Rust, używany przez deweloperów blockchain (Solana, Sui, Move) i systemy wymagające wysokiej wydajności.
Mechanizm jest elegancki i specyficzny dla Rust. Plik build.rs to skrypt budowania wykonywany automatycznie podczas kompilacji — zanim jakikolwiek kod aplikacji się uruchomi. TrapDoor wstrzyknął do tego pliku logikę lokalizującą lokalne keystory portfeli kryptowalutowych, szyfrującą je hardkodowanym kluczem XOR cargo-build-helper-2026 i eksfiltrującą do GitHub Gists.
Kompilacja kodu. Standardowa operacja deweloperska. W jej trakcie — portfele zaszyfrowane i wysłane.
Szczegół który zmienia ocenę
Każda analiza TrapDoor opisuje kradzież portfeli i danych uwierzytelniających. Jeden szczegół pojawia się w raportach Socket i The Hacker News bez rozwinięcia — i jest wart pełnego opisania.
TrapDoor wstrzyknął złośliwe instrukcje do plików .cursorrules i CLAUDE.md.
.cursorrules to plik konfiguracyjny Cursor — edytora AI do kodowania który był jednym z celów Shai-Hulud i który ma własne CVE-2026-26268 przez Git hooks. CLAUDE.md to plik instrukcji dla Claude Code — opisywaliśmy że Shai-Hulud używał adresu claude@users.noreply.github.com do maskowania swoich commitów.
TrapDoor nie tylko kradnie dane z maszyny. Wstrzykuje instrukcje do plików konfiguracyjnych asystentów AI, żeby manipulować ich zachowaniem podczas aktywnych sesji dewelopera. Deweloper który zainstalował złośliwy pakiet ma teraz asystenta AI który może otrzymywać instrukcje od atakującego — przez pliki konfiguracyjne których zawartości prawdopodobnie nie sprawdza przy każdym uruchomieniu.
Socket opisuje to jako "hidden prompt injection" — ukryte wstrzyknięcie przez pliki konfiguracyjne narzędzi AI. To jest nowa klasa ładunku której nie widzieliśmy w poprzednich kampaniach supply chain.
Nazwy jako sociotechnika
Lista nazw pakietów TrapDoor jest warta chwili uwagi, bo jest precyzyjnie zaprojektowana pod kąt docelowych społeczności:
eth-security-auditor — deweloper Ethereum który szuka narzędzia do audytu bezpieczeństwa. prompt-engineering-toolkit — deweloper AI szukający narzędzi do promptowania. solidity-deploy-guard — deweloper smart contractów szukający walidatora. defi-threat-scanner — deweloper DeFi szukający skanera zagrożeń. wallet-security-checker — każdy kto chce sprawdzić bezpieczeństwo portfela.
Cel każdej nazwy: osoba która wie wystarczająco dużo żeby szukać takich narzędzi — i wystarczająco mało żeby nie weryfikować skąd pochodzi pakiet który instaluje. Deweloper z wiedzą domenową, bez nawyku sprawdzania reputacji maintainera.
Trzy rejestry, jedna tożsamość
Socket połączył kampanię przez analizę infrastruktury. Konto GitHub ddjidd564 utrzymywało payload na ddjidd564.github.io— domenie GitHub Pages używanej przez pakiety PyPI do pobierania zdalnego JavaScript przez node -e. To samo konto publikowało repozytoria z motywem AI i bezpieczeństwa jako wabiki dla deweloperów.
Marker P-2024-001 wbudowany w kod sugeruje wewnętrzny system numerowania kampanii — co z kolei sugeruje że TrapDoor nie jest jedyną aktywną operacją tego aktora. Cyfra "2024" w markerze może wskazywać że kampania była planowana lub testowana już w 2024 roku.
Połączenie między npm, PyPI i Crates.io stało się widoczne dopiero podczas fali Crates.io — gdy pakiety Rust targetujące deweloperów Sui i Move pokazały infrastrukturalny overlap z wcześniejszymi falami. To jest ta sama technika detekcji którą Socket stosował przy Shai-Hulud i kampaniach TeamPCP — cross-registry behavioral analysis.
Inne niż TeamPCP
Jest ważne rozróżnienie które warto powiedzieć wprost: TrapDoor i TeamPCP/Shai-Hulud to osobne kampanie, osobne grupy, osobna infrastruktura.
TeamPCP celował w deweloperów przez zatrute narzędzia DevSecOps (KICS, Bitwarden) i przejęte konta maintainerów (TanStack, node-ipc). Infrastruktura eksfiltracji przez Session messenger i GitHuba. Destrukcyjny geofencing.
TrapDoor celuje w deweloperów krypto i AI przez typosquatting i fałszywe narzędzia. Infrastruktura przez GitHub Pages i Gists. Brak geofencingu — szerokie zbieranie wszystkiego.
Dwie osobne operacje, ten sam ekosystem, te same cele: deweloperzy z kluczami do wartościowych zasobów. Wspólny mianownik z całą serią supply chain z maja to nie jest ta sama grupa — to jest ten sam model: łańcuch dostaw jako powierzchnia ataku, zaufane rejestry jako wektor.
Źródła
Socket — pierwotna analiza z pełną listą pakietów, IoC i łańcuchem eksfiltracji: https://socket.dev/blog/trapdoor-crypto-stealer-npm-pypi-crates
The Hacker News — omówienie z detalami .cursorrules i CLAUDE.md: https://thehackernews.com/2026/05/trapdoor-supply-chain-attack-spreads.html
GBHackers — szczegóły techniczne mechanizmu Crates.io build.rs: https://gbhackers.com/hackers-compromise-34-npm-pypi-and-crates-packages/
CyberPress — pełna lista celowanych danych i hardkodowany klucz XOR: https://cyberpress.org/supply-chain-attack-compromises-34-packages/
CryptoTimes — kontekst społeczności krypto i aktualizacja GitHub od Socket: https://www.cryptotimes.io/2026/05/25/trapdoor-malware-hits-npm-pypi-crates-io-steals-crypto-wallets-ssh-keys/
































































































































Nie nowy atak, tylko naprawiony błąd. Co łatka Gemini CLI mówi o tym, że tryb –yolo w potoku CI/CD to nie jest dobry pomysł