Skip to content
supplychainattack.orgSupply chain attack incident catalog
resolvedcritical

Malicious code in tsihealth-client (npm)

The npm package tsihealth-client contained obfuscated malicious code that establishes a persistent remote control channel to an attacker-controlled server, enabling arbitrary command execution on the host system. The package was designed to masquerade as a legitimate remote control client but actually implements a network-to-shell backdoor.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
Any npm project that installed tsihealth-client as a dependency; runtime execution on host systems running the package.
Ecosystems
Attack vectors
Affected entities
  • tsihealth-clientnpm package containing malicious code

The npm package tsihealth-client contained a self-decoding IIFE (Immediately Invoked Function Expression) in its index.js that XOR-decodes a URI-encoded payload at module load time. The decoder includes anti-tampering logic that aborts with 'the code has been tampered!' if the source is modified, and includes a banner discouraging reverse engineering.\n\nThe package's metadata and TypeScript definitions reveal the malicious intent: package.json advertises it as a 'client (provider) for the tsi-vpsremote control server' that 'stays alive to run commands pushed from the server', with keywords including 'shell', 'ssh', 'remote-control', and 'agent'. The exported TypeScript interface includes a ProviderHandle exposing a ChildProcess named shell.\n\nWhen the exported provider function is called at runtime with a URL parameter, it establishes a persistent connection to a remote server that can drive a local ChildProcess on the host. This creates a full network-to-shell control channel, granting whoever controls the paired server URL arbitrary command execution on any system running the package.\n\nThe decoded payload itself is opaque and cannot be audited without executing the malicious code. This incident was identified by the OpenSSF's malicious-packages project.

Indicators of compromise

Packages
  • tsihealth-client

Remediation

  • Immediately remove tsihealth-client from all npm projects and dependencies
  • Audit npm package.json and lock files for any presence of tsihealth-client
  • Regenerate any credentials or secrets that may have been exposed on systems that ran this package
  • Review system logs and process execution history on any hosts that installed this package for signs of unauthorized command execution
  • Update all dependencies and perform a full security audit of the affected project
  • Consider this a critical supply chain incident and notify all downstream consumers of affected software

Sources

  1. GitHub Advisory GHSA-22gm-pcxq-h54x · GitHub Advisory Database

Cite this entry

"Malicious code in tsihealth-client (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 6, 2026; last updated August 7, 2026. https://supplychainattack.org/incident/malicious-code-in-tsihealth-client-npm-p42foy

Suggest a correction

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

  1. resolvedcritical

    Malicious code in rust-testing-utils (npm)

    The npm package rust-testing-utils contained malicious code that impersonates the pino logger and executes remotely-fetched code with arbitrary privileges. The package spawns a child process that decodes a hardcoded URL, fetches attacker-controlled content, and executes it via Function constructor with full module-loading capability.

    npmCompromised packageMalicious commit
  2. containedcritical

    Malicious code in stillm4ddpocs-demo-sprocket (npm)

    The npm package stillm4ddpocs-demo-sprocket version 999.9.12 contains malicious code that exfiltrates system and project metadata via multiple channels (HTTPS, HTTP, and DNS) to a hardcoded callback host. The package uses a high version number to exploit dependency-confusion attacks against organizations with internal packages of the same name.

    npmCompromised packageDependency confusion
  3. containedcritical

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

    The npm package @syncraft-labs/react contained obfuscated malicious code in its ESM distribution that implements the EtherHiding pattern, fetching and executing arbitrary code from an Ethereum smart contract via RPC endpoints. The tampering occurred post-build in the dist/index.js artifact.

    npmCompromised package
  4. containedcritical

    Malware in hydration-dim-kit

    Malware was discovered in the npm package hydration-dim-kit. Any computer with this package installed or running should be considered fully compromised. All secrets and keys must be rotated immediately from a different computer.

    npmCompromised package