A Bun-runtime npm supply-chain worm by threat actor TeamPCP seeded SAP-ecosystem credential theft into 1,117 GitHub dropbox repositories across 22 compromised accounts in a single 7-hour propagation window.
@cap-js/sqlite @cap-js/postgres
@cap-js/db-service mbt @bitwarden/cli
ship encrypted credential bundles to audit.checkmarx.cx
hosted at 94.154.172.43 (AS209101 IP Vendetta Inc., Seychelles).
Same actor as the April 22 Checkmarx KICS Docker / VS Code attack.
368 dropboxes in the 10:00 hour, fading to single-digit by 17:00 UTC as victims rotate stolen PATs. Every dropbox traces back to a stolen GitHub Personal Access Token harvested from the trojaned npm install.
Vajra cross-field invariants over the 22-victim cohort cluster cleanly by burst rate and span. Same worm, very different victim hosts.
Median 5-second drift from dropbox creation to credential upload. One unbroken automated chain on the victim machine — no batching, no delay.
Solid blue: software flow. Solid red: actor / exfil flow. Animated dashes indicate live data movement.
TeamPCP runs a sustained campaign cadence. Mini Shai-Hulud is the fourth observable operation; same C2 infrastructure spans the Checkmarx KICS attack one week prior.
Filter by kind. All indicators are sourced — see the source column. Full JSONL: data/iocs.jsonl.
Updated 2026-04-23 — six days before the worm.
Registrar: CentralNic Ltd (UK)
NS: ns{1,2,3}.dnsowl.com (NameSilo)
AS209101 IP Vendetta Inc.
Seychelles (Victoria)
Known offshore bulletproof hosting
Subdomain only resolves during exfil window — currently NXDOMAIN at rest. Operational tradecraft.
The dragnet uses a custom op-recon toolchain combining GitHub Code Search, identity-graph spider (kraken), per-account anomaly scoring (hunter), and structural triage (vajra).
"A Mini Shai-Hulud has Appeared" in:description; bypass the 1k-result cap by hour-bucketed pagination.repo_count ↔ repos_per_min strength 0.896 (compromise scales with automation).flagged: false, cohort: OTHER. Confirms PAT theft, not synthetic-from-inception.results-{ts}-N.json filenames; compute drift vs repo creation time. Median 5s, p99 299s, 0 negative drifts.Full methodology & dossier in the repo: DOSSIER.md