# CVE-2026-55086: Etherpad predictable temp file paths enable symlink-based file overwrite

Source: https://junglewise.ai/threats/cve-2026-55086-etherpad-predictable-temp-file-paths-enable-symlink-based-file  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-08-13. Updated: 2026-09-25  
License: CC BY 4.0 with a link back

CVE-2026-55086 · Severity: medium · CVSS 4.2 · Published 2026-08-13

Etherpad's import and export functions generate temporary file paths using JavaScript's Math.random() function, which produces only ~32 bits of entropy and is predictable. An attacker with local access to a shared system (like a multi-tenant server or Kubernetes node) can predict these paths, create a symlink to a sensitive file, and trick Etherpad into overwriting that file. This is particularly dangerous if Etherpad runs with elevated privileges (such as root in a Docker container), potentially allowing the attacker to modify system configuration files or other sensitive data.

Technologies: [ep_etherpad-lite (npm)](https://junglewise.ai/threats/technologies/ep-etherpad-lite). Vendors: [npm](https://junglewise.ai/threats/vendors/npm).

## Quick answers

**Is CVE-2026-55086 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-55086 being exploited in the wild.

**How severe is CVE-2026-55086?** Medium severity, with a CVSS score of 4.2, published 13 August 2026.

**Which products and versions are affected?** ep_etherpad-lite (npm) <= 3.0.0, SEMVER:introduced=0,fixed=3.1.0.

**Is there a fix for CVE-2026-55086?** Yes. ep_etherpad-lite (npm): upgrade to 3.1.0 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-55086 attacked?** It is attacked with local access, in a software library.

**Am I affected by CVE-2026-55086?** Check whether you run ep_etherpad-lite (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- ep_etherpad-lite (npm): upgrade to 3.1.0 or later

  ```sh
  npm install ep_etherpad-lite@3.1.0
  ```


## Technical details

The vulnerability exists in src/node/handler/ImportHandler.ts and src/node/handler/ExportHandler.ts, which compute temporary file paths using Math.floor(Math.random() * 0xFFFFFFFF). Math.random() is cryptographically insecure and yields only ~32 bits of entropy; furthermore, V8 shares PRNG state between consecutive calls, making the sequence predictable to an attacker who observes earlier temp-file names. These paths are written to os.tmpdir() (typically /tmp on Linux), a shared world-writable directory. An unprivileged local attacker can pre-create a symlink at a predicted path pointing to any file the Etherpad process can write. When ExportHandler or ImportHandler write to the temp path, the open syscall follows the symlink and overwrites the linked target. For deployments where Etherpad runs as a privileged user (root in Docker, certain snap configurations, or custom systemd units), this becomes arbitrary file overwrite. The import path is especially impactful because the attacker can partially control the content written via the post-conversion output of an uploaded document. The fix, deployed in commit 8c6104c (v3.1.0+), replaces Math.random() with crypto.randomBytes(16).toString('hex'), providing 128 bits of CSPRNG entropy.

## Affected products

- Etherpad ep_etherpad-lite <= 3.0.0

## Identifiers

- CVE-2026-55086
- GHSA-2jwf-f4xq-f24h

## Timeline

- 2026-08-13: disclosed: GHSA-2jwf-f4xq-f24h published on OSV and GitHub Security Advisory
- 2026-05-17: patched: Fix deployed in commit 8c6104c (PR #7784), included in ep_etherpad-lite v3.1.0+

## References

- [https://github.com/ether/etherpad/security/advisories/GHSA-2jwf-f4xq-f24h](https://github.com/ether/etherpad/security/advisories/GHSA-2jwf-f4xq-f24h)
- [https://github.com/ether/etherpad/pull/7784](https://github.com/ether/etherpad/pull/7784)
- [https://github.com/ether/etherpad/commit/8c6104c5d5daf41f0d454acc04d42dffa0e0d996](https://github.com/ether/etherpad/commit/8c6104c5d5daf41f0d454acc04d42dffa0e0d996)
- [https://github.com/ether/etherpad](https://github.com/ether/etherpad)

## Related threats

- [Etherpad stored XSS in HTML export via unescaped attribute-pool values](https://junglewise.ai/threats/cve-2026-55090-etherpad-stored-xss-in-html-export-via-unescaped-attribute-pool)
- [Etherpad multiple security hardening fixes](https://junglewise.ai/threats/etherpad-multiple-security-hardening-fixes-3a746766)
- [Etherpad replayable token-transfer endpoint with cleartext token exposure](https://junglewise.ai/threats/cve-2026-55088-etherpad-replayable-token-transfer-endpoint-with-cleartext-token)
- [Etherpad Lite cache-poisoning XSS and open redirect via x-proxy-path header](https://junglewise.ai/threats/cve-2026-55087-etherpad-lite-cache-poisoning-xss-and-open-redirect-via-x-proxy)
- [Etherpad Lite access restriction bypass in JSONP handling](https://junglewise.ai/threats/cve-2018-6835-etherpad-lite-access-restriction-bypass-in-jsonp-handling)
