W dniu 2026-05-11 atakujący przy użyciu skompromitowanego tokenu publikacji npm opublikował 18 złośliwych wersji pakietu @beproduct/nestjs-auth (0.1.2–0.1.19). Pakiet zawierał backdoor w skrypcie postinstall, który aktywnie wykradał dane uwierzytelniające z zainfekowanego środowiska.
▸ Pokaż oryginał (EN)
@beproduct/nestjs-auth is a NestJS authentication module for BeProduct IDS (Identity Server) with OpenID Connect support. Between 2026-05-11 20:19 UTC and 22:56 UTC, an attacker used a compromised npm publish token to publish 18 malicious versions of `@beproduct/nestjs-auth` (0.1.2 through 0.1.19). The postinstall payload attempted to harvest npm tokens (from `~/.npmrc`); GitHub personal access tokens, OAuth tokens (`gho_*`), and Actions OIDC tokens; AWS credentials (from environment variables and `~/.aws/credentials`); HashiCorp Vault tokens; and other secrets present in environment variables. Version `0.1.20` is a clean republish from the original `0.1.1` source tree. Anyone who installed any version in the range `>=0.1.2 <=0.1.19` should remove the package and clean the npm cache; install the clean version; rotate every credential present in the install environment, including all npm publish tokens, all GitHub PATs and OAuth tokens, AWS access keys, HashiCorp Vault tokens, and any other secret that was in env vars or config files at install time; scan affected hosts for indicators of compromise and, if any are found, treat the host as compromised and reimage; and check committed repository history for unexpected additions in `.claude/` or `.vscode/` directories. The worm is known to commit `setup.mjs` + hook configs to PR branches via automated agent runtimes.
Atakujący przejął token npm uprawniający do publikacji pakietu i w ciągu ok. 2,5 godziny opublikował 18 wersji zawierających złośliwy payload w skrypcie postinstall (CWE-506 — Embedded Malicious Code). Skrypt uruchamiał się automatycznie podczas instalacji pakietu i próbował zebrać tokeny npm z pliku ~/.npmrc, tokeny GitHub PAT oraz OAuth (gho_*), tokeny OIDC GitHub Actions, dane uwierzytelniające AWS ze zmiennych środowiskowych i pliku ~/.aws/credentials, tokeny HashiCorp Vault oraz inne sekrety obecne w zmiennych środowiskowych. Dodatkowo złośliwy komponent znany jest z automatycznego commitowania pliku setup.mjs oraz konfiguracji hooków do gałęzi PR w katalogach .claude/ i .vscode/, działając przez zautomatyzowane środowiska agentów.
Atakujący mógł uzyskać pełen dostęp do tokenów npm, kluczy AWS, tokenów GitHub, tokenów Vault i innych sekretów obecnych w środowisku podczas instalacji, co umożliwia dalsze kompromitowanie infrastruktury, repozytoriów kodu oraz kont w usługach chmurowych.
Należy niezwłocznie odinstalować pakiet w wersjach >=0.1.2 <=0.1.19 i wyczyścić cache npm, a następnie zainstalować czystą wersję 0.1.20. Konieczna jest rotacja wszystkich sekretów obecnych w środowisku podczas instalacji: tokenów npm, tokenów GitHub PAT i OAuth, kluczy dostępowych AWS, tokenów HashiCorp Vault oraz wszelkich innych sekretów ze zmiennych środowiskowych i plików konfiguracyjnych. Należy przeprowadzić skanowanie zainfekowanych hostów pod kątem wskaźników kompromitacji — w przypadku ich wykrycia host powinien zostać potraktowany jako skompromitowany i przeinstalowany od zera. Należy również przejrzeć historię repozytoriów git pod kątem nieoczekiwanych plików w katalogach .claude/ i .vscode/.
Pakiet npm @beproduct/nestjs-auth w wersjach od 0.1.2 do 0.1.19 włącznie. Wersja 0.1.20 jest czystą repubikacją z oryginalnego źródła 0.1.1.
Atak miał miejsce w wąskim oknie czasowym: 2026-05-11 między 20:19 UTC a 22:56 UTC. Złośliwy komponent wykazuje cechy samo-propagującego się robaka — automatycznie commituje pliki do gałęzi PR w środowiskach CI/CD. Referencje producenta wskazują na powiązanie z podobnymi atakami na inne pakiety npm (kampania określana jako 'mini-shai-hulud'). Administratorzy powinni zweryfikować historię instalacji pakietów w systemach CI/CD w tym przedziale czasowym.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H