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.
- 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
- 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.
Related incidents
- 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 - 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 - 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 - 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