Skip to content
supplychainattack.orgSupply chain attack incident catalog
containedcritical

Malicious code in sigchain-js (npm)

Malicious code was injected into the published npm package sigchain-js, executing arbitrary code on installation via DES-decrypted payloads from companion packages thedata and tchain-api. The attack also involved typosquatting axios to version 1.18.1, which does not exist in legitimate release history.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
Any developer or system that installed sigchain-js from npm; arbitrary code execution on installation.
Ecosystems
Attack vectors
Affected entities
  • sigchain-jsPublished dist bundles contain malicious code not present in source
  • thedataCompanion package supplying encrypted payload for ESM build
  • tchain-apiLook-alike package supplying rsa.db file for CJS/UMD builds
  • axiosPinned to non-existent version 1.18.1, redirecting to typosquatted package

The npm package sigchain-js contained malicious code in its published distribution bundles (dist/sigchain-js.cjs.js, dist/sigchain-js.esm.js, dist/sigchain-js.umd.js) that was not present in the source tree. The code reads encrypted payloads from companion packages, decrypts them using a hardcoded password ("hydra"), and executes the decrypted content via a spawned Node.js subprocess.

The attack was distributed across multiple cooperating packages: the thedata package (a direct dependency) supplied the encrypted payload for the ESM build, while tchain-api (a look-alike of Theta's official API SDK, pulled in transitively) supplied an rsa.db file for the CJS/UMD builds. The malicious code included top-level imports of child_process, node:fs, node:path, and (for ESM) desKey from thedata that do not exist in the published source.

Additionally, sigchain-js pinned axios to version 1.18.1, a version that does not exist in the legitimate axios release history, redirecting installers to a typosquatted package. Requiring or importing sigchain-js resulted in arbitrary code execution on the installer's host, with the executed content controlled by whoever published updates to the companion packages.

Indicators of compromise

Packages
  • sigchain-js
  • thedata
  • tchain-api
  • axios@1.18.1
Hashes
  • 034ba6bdd11139e40b062606dfa180a60727249035899eded96d34797b63a026

Remediation

  • Remove sigchain-js from all projects and dependencies immediately
  • Audit npm install logs and package-lock.json files to identify when sigchain-js was installed
  • Review and revoke any credentials, tokens, or secrets that may have been exposed on affected systems
  • Scan affected systems for signs of compromise or persistence mechanisms
  • Update axios to a legitimate version from the official npm registry
  • Review all transitive dependencies for unexpected or suspicious packages (e.g., tchain-api)
  • Implement package pinning and integrity verification (e.g., npm audit, lock files) in CI/CD pipelines

Sources

  1. GitHub Advisory GHSA-j78w-wm55-982q · GitHub Advisory Database

Cite this entry

"Malicious code in sigchain-js (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed July 28, 2026; last updated July 28, 2026. https://supplychainattack.org/incident/malicious-code-in-sigchain-js-npm-1d2gdi

Suggest a correction

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

  1. resolvedhigh

    Malicious code in affinequant (PyPI)

    The affinequant package on PyPI contained malicious code that exfiltrated basic system information (hostname, path, username) to the package author upon installation or import. The package was part of a broader campaign of malicious packages on PyPI and communicated with a domain associated with malicious activity.

    PyPICompromised packageTyposquattingDependency confusion
  2. resolvedhigh

    Malicious code in adandu (PyPI)

    The PyPI package 'adandu' was identified as malicious, containing code to exfiltrate basic system information (hostname, path, username) upon installation or import. The package was part of a broader campaign of pentest-themed malicious packages and communicated with domains associated with malicious activity.

    PyPICompromised packageTyposquattingDependency confusion
  3. resolvedhigh

    Malicious code in adandv (PyPI)

    The adandv package on PyPI contained malicious code designed to exfiltrate basic system information (hostname, path, username) to the package author. The package was part of a broader campaign of malicious pentest-themed packages flooding PyPI.

    PyPICompromised packageTyposquattingDependency confusion
  4. resolvedhigh

    Malicious code in adanbu (PyPI)

    The PyPI package 'adanbu' version 92.6 contained malicious code that exfiltrated basic system information (hostname, path, username) to the package author upon installation or import. The package was part of a broader campaign of pentest-themed malicious packages on PyPI.

    PyPICompromised packageTyposquattingDependency confusion