← All briefs
critical June 21, 2026

Mastra npm Supply Chain Compromise: easy-day-js Typosquat Dropper

Source report →

On June 17th, 2026, Sapphire Sleet, a North Korean state-sponsored threat actor, compromised the @mastra npm organization, the publishing scope behind a widely used open-source TypeScript framework for building AI agents and retrieval pipelines, and republished more than 140 packages with a single hidden malicious dependency. The foothold was a stale maintainer account whose scope access had never been revoked, not a flaw in Mastra's own code, which the maintainers later confirmed was untouched. Because Mastra packages are routinely installed in environments that hold LLM API keys, cloud credentials, and CI/CD tokens, and because the affected packages carry tens of millions of downloads a month, the compromise put some of the most sensitive secrets in modern development pipelines at risk.

The malicious dependency, easy-day-js, is a typosquat of the popular dayjs date library. The attacker first published a clean, near-identical lookalike to pass casual review, then added it across the Mastra scope under a caret version range so that a later malicious patch release would resolve automatically on the next install. Execution runs entirely from the package install lifecycle: a postinstall hook launches an obfuscated dropper using the Node.js runtime already on the host, so no external tooling is needed. The dropper disables TLS certificate validation, writes install beacon markers to map infected hosts, fetches a second-stage payload from an attacker server addressed by raw IP, launches it as a detached background process, and then deletes itself to remove the primary forensic artifact.

The second stage is a cross-platform cryptocurrency wallet stealer paired with a remote access trojan. It enumerates browser profiles for wallet extensions, collects host and environment data including credentials and tokens, and beacons to a separate command and control address while establishing persistence disguised as Node tooling through a LaunchAgent on macOS, a systemd user service on Linux, or a staging directory on Windows. Any developer workstation, CI runner, or build agent that resolved a malicious version during the exposure window should be treated as a credential and wallet exposure event, with endpoint and network telemetry around the install, rather than package scanning alone, being the most reliable place to catch it.

SHA256 FILE HASH 7
b122a9873bedf145ae2a7fd024b5f309007dbb025149f4dc4ac3f7e4f32a36a4
221c45a790dec2a296af57969e1165a16f8f49733aeab64c0bbd768d9943badf
ae70dd4f6bc0d1c8c2848e4e6b51934626c4818dcb5af99d080ddbd7dc337185
4a8860240e4231c3a74c81949be655a28e096a7d72f38fbe84e5b37636b98417
b73de25c053c3225a077738a1fcbd9ca6966d7b3cd6f5494a30f0aa0eae55c7e
50eae63d3e24be9ca8803f4b5a0408aef97ee3fab7af018d8c2dde7c359edd65
1d1bf5e8c1539d2f05b1429235b8f4990f87036774be95157b315a7803dd5526
FILE NAME 4
.pkg_history
.pkg_logs
system.bat
protocal.cjs
IP ADDRESS 2
23.254.164.92
23.254.164.123
DOMAIN 2
teams.onweblive.org
maskasd.com
URL 3
https://23.254.164.92:8000/update/49890878
https://teams.onweblive.org/api/update/8555575039/4
https://maskasd.com/8555575039
EMAIL 2

Detections (9)

Enable detections →

Connect your environment for suggestions and queries personalized to your security telemetry.

  • Node Supply Chain Payload Persistence via LaunchAgent systemd or ProgramData
  • Node Install Script Self-Deletion After Spawn
  • npm postinstall Hook Spawning node on a Bundled .cjs Dropper
  • node Process Disabling TLS Verification Before an Outbound Fetch
  • Install-Time Process Beaconing to a Raw IPv4 Literal on a Non-Standard Port
  • Resolution of the easy-day-js dayjs Typosquat at Install Time
  • Outbound Connection to Mastra Campaign C2 Infrastructure
  • Stage-Two Credential Collection: node Copying Browser History or Reading Wallet-Extension Profiles