Summary
CVE-2025-12999 is a critical (CVSS 9.1) cache poisoning vulnerability in Eclipse Open VSX, the open-source extension registry used by VS Code-compatible editors. An unauthenticated remote attacker can inject forged X-Forwarded-Host, X-Forwarded-Proto, and X-Forwarded-Prefix headers to poison the registry’s response cache with attacker-controlled URLs, causing every subsequent client to receive malicious extension download, signature, and public-key links.
Technical details
- Root cause:
UrlUtil.getBaseUrlbuilds absolute URLs (download, icon, asset, API, signature, and public-key URLs) from the client-suppliedX-Forwarded-Host,X-Forwarded-Proto, andX-Forwarded-Prefixheaders, without verifying the request came from a trusted proxy. - The
/vscode/gallery/{namespace}/{extension}/latestendpoint and related metadata responses (extension.json, namespace.details.json, sitemap, latest.extension.version.vscode) are cached under keys that do not include the host. - Trigger conditions: exploitable when the Open VSX server is reachable directly by clients, or sits behind a reverse proxy that relays rather than overwrites these forwarding headers, and a cache entry for the targeted extension is cold.
- Attack vector: a single unauthenticated HTTP request carrying a forged header poisons the shared cache entry, which is then served to every client requesting that extension’s metadata for the cache lifetime (default one hour, or cluster-wide when Redis caching is enabled).
- Impact: victims’ editors resolve download, signature, and public-key URLs to attacker infrastructure; because all three derive from the same poisoned base URL, extension signature verification provides no protection, allowing delivery of a malicious VSIX and arbitrary code execution with the privileges of the extension host.
Affected software
- Eclipse Open VSX (eclipse-openvsx/openvsx), versions 0.6.0 through 1.1.2
- Open VSX server container images (GHCR
openvsx-serverand Docker Hubopenvsx-server), versions 0.6.0 through 1.1.2
Severity
CVSS v4.0 Base Score: 9.1 (Critical)
Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:L/SC:H/SI:H/SA:H
Mitigation and recommended actions
- Immediate: upgrade Eclipse Open VSX to version 1.2.0 or later, which fixes the vulnerable URL construction.
- If patching is not immediately possible:
- Configure the reverse proxy in front of Open VSX to set (overwrite), rather than relay, the
X-Forwarded-Host,X-Forwarded-Proto, andX-Forwarded-Prefixheaders on incoming requests. Note that nginx’s$hostvariable reflects the client-supplied Host header and is not a safe substitute. - Ensure the Open VSX server is not reachable except through that trusted, header-overwriting proxy.
- After deploying the fix or mitigation, flush all caches (including Redis, if used), since previously poisoned cache entries persist across configuration changes.
- Configure the reverse proxy in front of Open VSX to set (overwrite), rather than relay, the

