CVE-2025-65026 esm.sh CDN service has JS Template Literal Injection in CSS-to-JavaScript
Attackers can inject JavaScript via CSS files served by esm.sh, leading to XSS in browsers or RCE in Electron apps.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- A user has to click or open something
- Fix
- Available
What is CVE-2025-65026?
CVE-2025-65026 is a medium-severity code injection vulnerability in esm-dev esm.sh, published on 19 Nov 2025. An attacker can exploit it over the internet without logging in, and only if a user opens a file or follows a link.
Official description
esm.sh is a nobuild content delivery network(CDN) for modern web development. Prior to version 136, The esm.sh CDN service contains a Template Literal Injection vulnerability (CWE-94) in its CSS-to-JavaScript module conversion feature. When a CSS file is requested with the ?module query parameter, esm.sh converts it to a JavaScript module by embedding the CSS content directly into a template literal without proper sanitization. An attacker can inject malicious JavaScript code using ${...} expressions within CSS files, which will execute when the module is imported by victim applications. This enables Cross-Site Scripting (XSS) in browsers and Remote Code Execution (RCE) in Electron applications. This issue has been patched in version 136.
Which versions are affected by CVE-2025-65026?
3 open source packages ship an affected version, including github.com/esm-dev/esm.sh. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
github.com/esm-dev/esm.sh Go | All versions | 0.0.0-20251118065157-87d2f6497574 |
github.com/esm-dev/esm.sh Go | All versions | 0.0.0-20251118065157-87d2f6497574 |
github.com/esm-dev/esm.sh Go | All versions | 0.0.0-20251118065157-87d2f6497574 |
Products include Esm Esm.sh.
How do I fix CVE-2025-65026?
Upgrade github.com/esm-dev/esm.sh to 0.0.0-20251118065157-87d2f6497574 or later.
Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.
Is CVE-2025-65026 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2025-65026 exists.
Other vulnerabilities in esm-dev esm.sh
- CVE-2025-50180 esm.sh is vulnerable to full-response SSRF
- CVE-2026-27730 esm.sh has SSRF localhost/private-network bypass in `/http(s)` module route
- CVE-2025-65025 esm.sh CDN service has arbitrary file write via tarslip
- CVE-2026-23644 esm.sh has path traversal in `extractPackageTarball` that enables file writes from malicious packages
Sources
Also known as GHSA-hcpf-qv9m-vfgp, GO-2025-4139.