Skip to content
supplychainattack.orgSupply chain attack incident catalog
resolvedcritical

Malicious code in dev-env-check (npm)

The npm package dev-env-check contained malicious code in its postinstall hook that downloads and executes a remote payload on Windows systems. The package masqueraded as a development environment validator while performing unauthorized remote code execution via PowerShell.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
Windows systems installing dev-env-check via npm
Ecosystems
Attack vectors
Affected entities
  • dev-env-checknpm package with malicious postinstall hook

The npm package dev-env-check was found to contain malicious code embedded in lib/platform-compat.js, executed via a postinstall hook. On Windows systems, the code uses PowerShell (Invoke-WebRequest with obfuscated flags) to download a file from https://update.setuponline.click/update and save it as %TEMP%\msedge_update.exe, then executes it detached with windowsHide.

The malicious payload was obfuscated using XOR encryption (key: 'w3dapp') to hide the C2 URL, dropped filename, PowerShell path, and CLI flags. These were disguised with misleading comments labeling them as 'version/checksum' and 'encoded system strings'. The filename msedge_update.exe impersonates a Microsoft Edge update, and update.setuponline.click is not a legitimate Microsoft domain.

The package advertised itself as a development-environment validator for checking Node.js, npm, and git versions, with a README describing only local checks. However, the actual Windows code path performs unauthorized remote fetch-and-execute operations, representing a significant supply chain compromise.

This incident was identified and credited to the OpenSSF malicious-packages project.

Indicators of compromise

Packages
  • dev-env-check
Domains
  • update.setuponline.click

Remediation

  • Immediately uninstall dev-env-check from all systems
  • Audit npm install logs to identify affected installations
  • Scan Windows systems that installed this package for msedge_update.exe and related artifacts
  • Review process execution logs for suspicious PowerShell activity from npm postinstall hooks
  • Update npm to the latest version and audit node_modules for other suspicious packages
  • Consider using npm audit and supply chain security tools to detect similar malicious packages

Sources

  1. GitHub Advisory GHSA-qcp4-p22w-72p3 · GitHub Advisory Database

Cite this entry

"Malicious code in dev-env-check (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-dev-env-check-npm-sgqvp0

Suggest a correction

Found an error or have a newer source? Corrections to factual errors take priority over new entries.

  1. containedcritical

    Malicious code in 3-buildsight-web (npm)

    The npm package 3-buildsight-web contains malicious code that fetches and executes arbitrary JavaScript from a remote Bitbucket URL on module load, granting full page privileges to an unverified third party.

    npmCompromised package
  2. resolvedcritical

    Malicious code in @usaa-grp-personal-profile/personal-profile-common (npm)

    Malicious package @usaa-grp-personal-profile/personal-profile-common version 999.0.0 published to public npm as a dependency-confusion attack targeting an organization's internal registry. The package contains preinstall and postinstall hooks that exfiltrate hostname, username, and working directory to an attacker-controlled OAST endpoint on every install.

    npmDependency confusionCompromised package
  3. resolvedcritical

    Malicious code in create-coin (npm)

    create-coin@20.1.1 on npm contained malicious postinstall code that collected sensitive environment variables, credentials, and host reconnaissance data. The package impersonated an esbuild platform build and exfiltrated data to a hardcoded endpoint.

    npmCompromised packageTyposquatting
  4. resolvedcritical

    Malicious code in @syncraft-labs/vue (npm)

    The npm package @syncraft-labs/vue version 0.4.1 contained malicious obfuscated code in its ESM build that implements a blockchain-hosted C2 dropper (EtherHiding pattern), enabling remote code execution on any consumer importing the package.

    npmCompromised package