StegaBin Uses 26 Typosquatted npm Packages to Target Developer Secrets

· Original article ↗

Summary

Socket analyzed 26 typosquatted npm packages that use Pastebin steganography and Vercel routing to install a RAT and nine data-stealing modules targeting developer secrets. The activity is consistent with FAMOUS CHOLLIMA, but attribution is not confirmed.

Key points

  • The 26 packages, published February 25–26, 2026, typosquatted popular npm libraries and shared a malicious loader at vendor/scrypt-js/version.js.
  • An npm install hook launches the loader, which decodes C2 domains hidden by character-level steganography in Pastebin essays and retrieves platform-specific shell payloads.
  • The researchers decoded 31 Vercel-hosted C2 domains; only one was returning live payloads at the time of analysis.
  • A simulated client connection let Socket capture the C2-delivered toolkit, whose nine modules target browser and wallet credentials, clipboard data, SSH keys, Git credentials, and developer secrets.
  • A module writes a VSCode tasks.json configured to run hidden commands when a folder opens, enabling recurring execution across VSCode sessions.
  • Socket says the TTPs, infrastructure patterns, and overlap with prior campaigns are consistent with FAMOUS CHOLLIMA / Contagious Interview; this is an attribution assessment, not confirmation.

Article Details

Attack Vectors
  • Typosquatted npm packages execute an install hook that loads a shared, obfuscated JavaScript payload.
  • The loader decodes C2 domains concealed in Pastebin essays using character-level steganography, then retrieves platform-specific shell payloads from Vercel-hosted infrastructure.
  • A token-gated bootstrapper downloads and runs a RAT that automatically deploys nine information-stealing modules.
  • A malicious VSCode tasks.json uses hidden commands configured to run whenever a folder is opened, enabling reinfection during VSCode sessions.
  • The modules collect developer secrets, browser and cryptocurrency-wallet data, clipboard and keystroke input, Git credentials, SSH files, and other local files, then send data to C2 or operator-supplied FTP infrastructure.
Defensive Notes
  • The article advises developers to review dependencies carefully and avoid blindly installing untrusted packages.
  • Review VSCode User tasks.json files for concealed commands configured to run on folderOpen.
  • Socket reports that its threat detection flagged the packages for obfuscated code and abnormal install-script behavior.

Indicators of compromise

TypeIndicatorContext
DOMAINatlasnode-app204[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINatlasnode-ext957[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINbrightlaunch-app615[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINbrightlaunch-ext742[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINcleverstack-app998[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINcleverstack-ext301[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINcloudharbor-app239[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINcloudharbor-ext664[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINext-checkdin[.]vercel[.]appCampaign C2 domain used to serve platform-specific payloads; it was the only one of the listed Vercel domains returning a live response during analysis.
DOMAINlogicfield-app681[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINlogicfield-ext432[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINprimevector-app920[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINprimevector-ext483[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINsparkforge-app790[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINsparkforge-ext518[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINzenithflow-app877[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
DOMAINzenithflow-ext156[.]vercel[.]appListed among the campaign's Vercel-hosted C2 domains decoded from Pastebin dead drops.
IPV4103[.]106[.]67[.]63Campaign C2 IP used by the RAT and for data uploads; the article identifies ports 1244 and 1247 for the RAT and WebSocket control channels.
SHA2561b15f73054350c6ab42f6e1d2ce4d84d7c56821db699e4ec484541263dfcb636SHA-256 of the campaign's obfuscated stealer module.
SHA2564e6a7bf3964fc0e3a655f062330c76b4876dcfac47d213e4c1f0ec3fe6ef9e12SHA-256 of the TruffleHog secret-scanning module delivered by the campaign.
SHA256714f890308d2cfebb2ed3ae873697408372639260bb682ea4cfbfffec98b8addSHA-256 of the campaign's Python browser-stealer module.
SHA25678c8b9044f6029280d28a1f62a4414a22e870fc27e3cc4894bd077d17f2ad8b4SHA-256 of the campaign's FTP-exfiltration RAT module.
SHA256978e8f161da04e00117a695aa59452dce89b5247db93ab7cedcaea3c1f26b8c8SHA-256 of the campaign's Git repository and SSH theft module.
SHA256ba3e520b9727e893cf07b0c1a6e6ce1a62e8e9bf28b5c771af4fdf01f9bd9ed4SHA-256 of the campaign's crypto and exfiltration module.
SHA256ce80100a383730822221f3ce769ea5ccda0c583654cc7c119ecc50bfbb4203b9SHA-256 of the campaign's keylogger and clipboard-stealing module.
SHA256da1775d0fbe99fbc35b6f0b4a3a3cb84da3ca1b2c1bbac0842317f6f804e30a4SHA-256 of the malicious loader found in the npm packages and redeployed as a persistence module.
SHA256ddbb527be0f40cd13eab08e3e418e36e86e4f1f1458cf84cfee29490beacf3a6SHA-256 of the campaign's VSCode persistence module.
URLhxxps[:]//pastebin[.]com/0ec7i68MPastebin dead-drop URL containing text used to conceal campaign C2 domains.
URLhxxps[:]//pastebin[.]com/CJ5PrtNkPastebin dead-drop URL containing text used to conceal campaign C2 domains.
URLhxxps[:]//pastebin[.]com/DjDCxcsTPastebin dead-drop URL containing text used to conceal campaign C2 domains.

MITRE ATT&CK

T1005 · Data from Local SystemModules search local filesystems for developer secrets, credentials, SSH files, Git data, and other sensitive files for collection.T1027.003 · SteganographyThe loader extracts C2 domains from Pastebin essays using evenly spaced character positions and character substitutions.T1036.005 · Match Legitimate Resource Name or LocationTyposquat package names and the loader path vendor/scrypt-js/version.js were chosen to resemble legitimate packages or files.T1041 · Exfiltration Over C2 ChannelCollected clipboard data and files are uploaded to C2 endpoints, including /clipup and /uploads.T1056.001 · KeyloggingThe keylogger captures keyboard input using Windows low-level hooks, Linux X input events, and macOS CGEventTap.T1059 · Command and Scripting InterpreterThe npm install hook runs a Node.js script, and downloaded platform payloads execute shell commands or Windows commands.T1071.001 · Web ProtocolsThe RAT and modules communicate with C2 and upload data over HTTP; an interactive module also uses a WebSocket control channel.T1083 · File and Directory DiscoveryModules recursively scan directories and drives to locate Git repositories, SSH files, and files matching secret and credential patterns.T1105 · Ingress Tool TransferThe loader retrieves platform-specific shell payloads and the bootstrapper downloads parser.js and additional modules from campaign infrastructure.T1115 · Clipboard DataA module polls clipboard contents and uploads captured clipboard data to the campaign's C2.T1195.001 · Compromise Software Dependencies and Development ToolsThe campaign distributed malicious typosquat npm packages that ran an install hook and declared the legitimate package they impersonated as a dependency.T1547 · Boot or Logon Autostart ExecutionThe malware writes a VSCode tasks.json configured to run concealed commands whenever a folder is opened, causing reinfection during VSCode sessions.T1555.003 · Credentials from Web BrowsersThe stealer targets browser-stored credentials, cookies, and browser extension data, including cryptocurrency wallet extension stores.T1562.001 · Disable or Modify ToolsThe interactive RAT includes a command to kill security-related processes on the compromised machine.

People

Threat Actors

Vendors

Products

Tools

Industries

Related Articles