CVE-2026-44593: esm.sh path traversal in legacy router leads to arbitrary file write

CVE-2026-44593 · Severity: high · CVSS 4 · Published 2026-05-28

esm.sh is a content delivery network (CDN) for JavaScript modules. A vulnerability in its legacy routing component allows an attacker to write files to any location on the server's filesystem. This could be used to overwrite critical system files or scripts, potentially allowing an attacker to take full control of the server or disrupt its operations.

Technologies: github.com/esm-dev/esm.sh (Go). Vendors: Go.

Quick answers

Is CVE-2026-44593 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-44593 being exploited in the wild.
How severe is CVE-2026-44593?
High severity, with a CVSS score of 4, published 28 May 2026.
Which products and versions are affected?
Esm-Dev Esm.Sh < 0.0.0-20260508100112-1960055e1d53, <= 137; github.com/esm-dev/esm.sh (Go) < 0.0.0-20260508100112-1960055e1d53, SEMVER:introduced=0,fixed=0.0.0-20260508100112-1960055e1d53.
Is there a fix for CVE-2026-44593?
Yes. github.com/esm-dev/esm.sh (Go): upgrade to 0.0.0-20260508100112-1960055e1d53 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-44593 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-44593?
Check whether you run Esm-Dev Esm.Sh or github.com/esm-dev/esm.sh (Go) 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

  • github.com/esm-dev/esm.sh (Go): upgrade to 0.0.0-20260508100112-1960055e1d53 or later
    go get github.com/esm-dev/esm.sh@v0.0.0-20260508100112-1960055e1d53

Technical details

A path traversal vulnerability exists in the legacy router of esm.sh due to insufficient sanitization of request paths before they are used as storage keys. The `legacy_router.go` component concatenates path components from incoming URLs and passes them to `buildStorage.Put`. An attacker can craft a URL containing URL-encoded path traversal sequences (e.g., %2f..%2f) that, when normalized by the underlying filesystem, resolve to arbitrary locations. By fetching a malicious file from a remote repository and triggering this traversal, an attacker can overwrite arbitrary binaries or scripts on the server, leading to Remote Code Execution (RCE). The vulnerability is fixed in version 0.0.0-20260508100112-1960055e1d53.

Affected products

  • esm-dev esm.sh < 0.0.0-20260508100112-1960055e1d53

Identifiers

  • CVE-2026-44593
  • GHSA-3636-h3vx-6465
  • GO-2026-5071

Timeline

  • 2026-05-08: patched: Fix version 0.0.0-20260508100112-1960055e1d53 released.
  • 2026-05-12: advisory: GitHub Advisory GHSA-3636-h3vx-6465 published.
  • 2026-05-28: disclosed: NVD publication date.

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.