StepSecurity Analyzes Malicious jscrambler npm Releases Hiding Cross-Platform Payloads

· Original article ↗

Summary

StepSecurity reports that five jscrambler npm releases contained native payloads that could run during installation or package import. Analysis found browser credential and wallet-storage capabilities; investigation of the full payload remains ongoing.

Key points

  • StepSecurity identified jscrambler versions 8.14.0, 8.16.0, 8.17.0, 8.18.0 and 8.20.0 as compromised; releases in the affected range are interleaved with clean versions.
  • The releases concealed three platform-specific native binaries in a 7.8 MB file named dist/intro.js. Earlier releases launched the payload through a preinstall hook; later ones ran it when the package was imported.
  • StepSecurity’s static analysis found browser credential-store, Chromium storage and BIP39 wordlist components, indicating potential credential and crypto-wallet theft. Full payload analysis is ongoing.
  • Harden-Runner monitoring observed outbound calls to archive[.]torproject.org and check[.]torproject.org, and connections to two IP addresses; StepSecurity says it added the endpoints to its block list.
  • StepSecurity advises users of affected versions to treat the host as compromised, install a verified clean release, rotate exposed credentials and secrets, and check for the dropped process and file.

Article Details

Attack Vectors
  • Compromised jscrambler npm releases (8.14.0, 8.16.0, and 8.17.0) execute a preinstall hook that extracts and launches a platform-matched native binary; releases 8.18.0 and 8.20.0 instead run the loader when the package is imported.
  • The loader extracts a gzip-compressed ELF, PE32+, or Mach-O payload from dist/intro.js to a randomly named file in the system temporary directory and launches it detached from the install process.
  • Static analysis found browser credential-store and Chromium Local Storage/IndexedDB capabilities, including components associated with extension wallet storage; the article assesses the payload as a credential and crypto-wallet stealer, while full payload analysis remains ongoing.
  • The Linux binary imports libbpf functions for loading an embedded eBPF program; what that program does remains under investigation.
  • The Windows and macOS binaries contain debugger-checking imports, and the Windows binary can enumerate active TCP connections and owning process IDs.
Defensive Notes
  • Treat hosts that installed any listed compromised version as compromised; pin to 8.22.0 or another verified clean version rather than using a version range.
  • Rotate browser-accessible credentials and secrets exposed to affected CI/CD jobs, including npm tokens, cloud credentials, SSO sessions, and signing keys.
  • Move assets from wallets whose extension storage may have been accessible to a new wallet with a freshly generated seed phrase on a clean device.
  • Hunt OS temporary directories for randomly named dotfiles matching the described pattern and check for orphaned processes spawned around installation or package-import time.
  • Review Harden-Runner network telemetry and block the reported outbound IPs; the article says StepSecurity added the listed endpoints to its global block list.

Indicators of compromise

TypeIndicatorContext
IPV437[.]27[.]122[.]124Direct outbound connection observed from the dropped malicious binary and added to StepSecurity's global block list.
IPV457[.]128[.]246[.]79Direct outbound connection observed from the dropped malicious binary and added to StepSecurity's global block list.
SHA256b7ca95d1b23c8e67416a25cedf741de0917c2096bbc9d24649eea7853d054903SHA-256 of the extracted Windows PE32+ payload from dist/intro.js.
SHA256c8fd47d36bdf7c825378593ab82ed8c24d1dc52e26b507812393e24e1d5201fdSHA-256 of the extracted macOS Mach-O arm64 payload from dist/intro.js.
SHA256fbbcf4d8f98168f78f5c0c47a9ae56d59ec8ac84a7c9ca6b797fedfb8d62d2bdSHA-256 of the extracted Linux ELF payload from dist/intro.js.

MITRE ATT&CK

Vendors

Products

Tools

Related Articles