# Ethersphere bee-js npm maintainer account compromised, version 13.3.0 backdoored

> On 9 November 2026 a malicious `@ethersphere/bee-js` 13.3.0 was published to npm via a compromised release identity. The version contains a postinstall hook that downloads and executes remote code, stealing Swarm node keys and installing a persistent remote shell.

- Published: 2026-11-09
- Last updated: 2026-11-10
- Severity: critical
- Kind: Compromise - A legitimate, already-used package, maintainer account, CI pipeline, or release tag was hijacked and a malicious version was published under a name people already depend on.
- Ecosystems: npm
- Scope: 1 package, 1 compromised version
- Tags: credential-theft, account-takeover, obfuscation
- Detected by: StepSecurity
- Incident ID: npm-2026-11-09-ethersphere-bee-js-compromise

## Affected packages (1)

Only the exact versions listed were named by the source advisories. Other versions are not implicated.

| Package | Ecosystem | Compromised versions |
|---|---|---|
| [@ethersphere/bee-js](https://dependencywatch.io/package/npm/@ethersphere/bee-js) | npm | 13.3.0 |

## What happened

At 00:09 UTC on 9 November 2026, `@ethersphere/bee-js` version 13.3.0 was published to npm via a compromised developer access key. The malicious version was live for approximately 75 minutes before npm pulled it at 01:25 UTC, but the tarball may have been cached by third-party mirrors such as Huawei Cloud.

The release carried valid SLSA provenance linked to the legitimate repository, meaning automated verification tools would have accepted it. StepSecurity identified it as malicious and attributed the attack to misuse of the bee-worker release identity rather than a registry-side vulnerability.

The payload adds a postinstall hook that downloads and executes remote JavaScript. It steals Swarm Desktop node private keys and encrypted wallet material, and installs a persistent remote-shell agent on Windows, macOS and Linux. Swarm Desktop 0.56.2, which bundled `bee-js`, was also backdoored; the Ethersphere team replaced it with 0.56.3 the same day.

The Ethersphere team acknowledged the incident via GitHub issue #1294. The last legitimate release is 13.2.0. Dependents such as `@ethersphere/swarm-cli` 3.7.0 pin `^13.2.0`, which would resolve to 13.3.0 on a fresh install.

## Impact

- Credential theft: Swarm Desktop node private keys are exfiltrated
- Persistent backdoor: a remote-shell agent is installed on the host
- Downstream risk: dependents using ^13.x ranges may pull in 13.3.0 via lockfile updates; third-party npm mirrors may still serve the cached tarball

## What to do

1. Pin @ethersphere/bee-js to 13.2.0 and delete node_modules, then reinstall
2. If 13.3.0 was installed, treat the host as fully compromised: isolate, image, and rebuild
3. Rotate all Swarm node keys, cloud credentials, and registry tokens accessible from the host
4. Audit npm publish history for unexpected releases under accounts that ran on the compromised host
5. Check lockfiles and CI logs for transitive pulls of 13.3.0

## Check your own dependencies

- Check a package-lock.json against this incident: https://dependencywatch.io/check/package-lock-json

The scan runs entirely in the browser; lockfile contents are never uploaded.

## References

- [GHSA-hh7j-5m3j-23pf: Malware in @ethersphere/bee-js](https://github.com/advisories/GHSA-hh7j-5m3j-23pf) - GitHub
- [ethersphere/bee-js#1294: npm package version 13.3.0 is compromised](https://github.com/ethersphere/bee-js/issues/1294) - GitHub

---

Canonical page: https://dependencywatch.io/incident/npm-2026-11-09-ethersphere-bee-js-compromise
Markdown version: https://dependencywatch.io/incident/npm-2026-11-09-ethersphere-bee-js-compromise.md
Site index for agents: https://dependencywatch.io/llms.txt
DependencyWatch.io is operated by Precursor Security (https://precursorsecurity.com).
