I now have comprehensive data on all four aspects of this attack. Let me compare this to my prior position on Namastex worm propagation.
Look, this Bitwarden compromise is a genuine evolutionary step for TeamPCP, and my prior analysis of the Namastex worm needs this as a critical extension — not a contradiction, but a serious upgrade to the blast radius calculation.
1. The Self-Propagation Mechanism: This Changes Everything
When I analyzed Namastex, I established the fundamental distinction between autonomous worm propagation versus social-engineering-dependent attacks. Namastex was the real deal — self-propagating without user clicks. This Bitwarden variant takes that same DNA and weaponizes it more aggressively.
Here's what's new: the malware doesn't just steal npm tokens — it immediately enumerates every package the victim has publish rights to and injects malicious preinstall hooks into ALL of them. The harvested tokens enable automatic republishing with bumped versions. This is like giving a thief your house key and they copy it for every neighbor who trusts you.
The blast radius calculation changes from "linear downstream" to geometric cascade. A single developer with publish access to 20 packages — common for maintainers — becomes 20 new infection vectors within minutes. My prior Namastex assessment focused on the cross-ecosystem jump from npm to PyPI. This variant does that PLUS the multi-package lateral movement within npm itself.
During the 93-minute window before detection, we're not talking simple credential theft — we're talking about worm propagation with exponential scaling potential.
2. Claude/MCP Configuration Harvesting: Signal of Target Priority Shift
This is the first TeamPCP wave to explicitly target AI agent configs as first-class exfiltration targets alongside cloud secrets. The payload hunts for ~/.claude.json, ~/.claude/mcp.json, and ~/.kiro/settings/mcp.json.
MCP (Model Context Protocol) configs contain server definitions, API endpoints, and often embedded authentication tokens for AI tool integrations. This tells us TeamPCP has evolved past "steal cloud creds, pivot to infrastructure." They're now targeting the AI development toolchain itself.
Why? Because Claude Code, Cursor, Kiro — these tools have broad file system access and can execute commands. If you compromise an AI agent's configuration, you're not just stealing tokens; you're potentially weaponizing the developer's own AI assistant for downstream compromise. It's supply chain meets AI agent abuse. That's a target priority shift worth noting — they want to live inside the AI-assisted development workflow.
3. The Russian Locale Kill Switch: Classic False Flag Material
The malware checks Intl.DateTimeFormat, LC_ALL, LC_MESSAGES, LANGUAGE, and LANG — and exits silently if any start with "ru". This is laughably obvious attribution theater.
Here's my take: a genuine Russian state operator doesn't need a kill switch for their own territory. They've got infrastructure isolation, operational security, and zero reason to telegraph their origin in code that'll be reverse-engineered within hours. This is either:
- False flag: Spray "Russian" breadcrumbs to misdirect attribution
- Criminal pragmatism: Avoid hitting domestic targets to reduce law enforcement heat
I've been skeptical of nation-state attribution in these supply chain campaigns, and this doesn't change my view. This kill switch is too blunt, too discoverable, too convenient for open-source intelligence gathering. Real APT tradecraft doesn't leave country-code breadcrumbs in plaintext malware.
4. The Dune GitHub Exfiltration Pattern: Operationally Clever, Eventually Detectable
The exfiltration repos use Dune-themed naming: {word}-{word}-{3digits} like fremen-sandworm-441, harkonnen-melange-7. The description is hardcoded as "Shai-Hulud: The Third Coming."
Is it detectable? Yes, trivially. GitHub search for that description pattern surfaces compromised accounts. Is that sloppy? Not necessarily — it's time-bounded operational security. They don't care if you detect it after 72 hours; they care that the exfiltration channel stays alive during the critical compromise window.
The clever part: public GitHub repos as dead-drop C2. They use RSA-signed command delivery via commit messages with the marker LongLiveTheResistanceAgainstMachines. Even if the primary C2 (audit.checkmarx.cx) gets sinkholed, the GitHub fallback survives. It's resilient because GitHub is infrastructure defenders can't block.
There's also the theatrical element — "Shai-Hulud" references frame this as ideological, almost hacktivist. But combined with the TruffleHog secret scanning and the wholesale credential harvesting, this is criminal monetization dressed in sci-fi cosplay.
What's New Versus Prior TeamPCP:
| Prior (Trivy/LiteLLM/Axios) |
Bitwarden CLI (Current) |
| Single package compromise |
Multi-package worm propagation |
| Stole creds, waited for manual pivot |
Immediate automatic republishing |
| Standard cloud/GitHub targets |
AI assistant configs added as first-class targets |
| No locale checks |
Russian kill switch (false flag) |
| Generic repository naming |
Dune-themed theatrical exfiltration |
My prior kill-chain analysis for Namastex focused on ecosystem boundary crossing. This variant confirms TeamPCP is now optimizing for maintainer-centric compromise — target packages with high downstream dependency counts, infect all publishable packages, and watch the cascade. That's not just propagation; it's supply chain weaponization at scale.