Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

theta-sdk-jsnpm

Malicious code in theta-sdk-js (npm) Remove it immediately and rotate any exposed credentials.

MAL-2026-10135
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall theta-sdk-js

What this malware does

[email protected] ships src/decrypt.js and src/providers/BaseProvider.js which together implement a hidden execution channel. On module load, decrypt.js reads two encrypted blobs (rsa.db, des.db) from node_modules/tchain-api/apps/docs/app/, DES-decrypts them using the hardcoded password 'hydra' via crypto-js, and returns the plaintext. Top-level IIFEs in src/providers/BaseProvider.js spawn detached node child processes (spawn('node', [], { detached: true, stdio: ['pipe','ignore','ignore'] })), pipe the decrypted plaintext into stdin for execution, and call unref() so the child outlives the parent. The runtime dependency tchain-api@^1.2.5 — declared in package.json — supplies the encrypted payload files, so npm install theta-sdk-js automatically stages the payload host. The distributed dist/thetajs.cjs.js (declared as main) is clean and does not contain this code; the dropper lives only in the src/ tree that is also shipped in the tarball, so consumers that import subpaths or use bundlers/tree-shakers that resolve src/index.js trigger the execution. Encrypting the payload in a sibling package with a hardcoded key, splitting the malicious code away from the declared entrypoint, and executing decoded plaintext in a detached child process are hallmarks of deliberate evasion, not legitimate SDK behavior.

Malicious versions

3 flagged
1.2.141.2.151.2.16

Indicators of compromise (SHA-256)

48d9dc8bff360e02b99abc0444b2ec316b266c7356e605aea830557a088cab98
6967c021e95228b33b18be4489fea5d404720cbd21beb53dac8bf7ea4f4d54d1
a34b7ee47f055b1a354af0ab7cac7bd711227f8c2ac6961db57bb86079ff18b8

Detection & response playbook

Malicious package
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for theta-sdk-js (3 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging theta-sdk-js across your stack and pipelines.

  2. If you installed it — respond

    Remove theta-sdk-js from your project and lockfile, then assume any secrets accessible to the build or runtime were exposed: rotate API keys, tokens, and credentials, and audit for unexpected outbound activity or persistence.

  3. Did it already run?

    If theta-sdk-js was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks theta-sdk-js before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. theta-sdk-js on npm has been identified as a malicious package (versions 1.2.14, 1.2.15, 1.2.16 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-009636IN-MAL-2026-009638IN-MAL-2026-009637

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks theta-sdk-js-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the malicious outbound activity and severs the channel.