CVE-2025-12999

Description

A flaw was found in openvsx-server. This vulnerability allows an unauthenticated remote attacker to achieve arbitrary code execution on client machines through HTTP cache poisoning. The server generates download and verification URLs from untrusted proxy headers, such as X-Forwarded-Host, without validating the sender. Because these responses are cached across clients, an attacker can poison the metadata cache to serve malicious extensions and verification keys to downstream users.

Statement

This flaw is rated Critical because it lets an unauthenticated remote attacker run code inside the workspace of a Dev Spaces user, and the preconditions hold in a default installation. Both preconditions were confirmed on a running default Dev Spaces 3.x install by Dev Spaces engineering: the plugin registry search endpoint answers 200 without login, and a client-supplied X-Forwarded-Host reaches the Open VSX server unmodified because the ingress proxy appends the real host as a second header value while the server reads the first one.

The Open VSX server embedded in the plugin registry builds extension download, signature, and public key URLs from that unvalidated header, and caches those responses per extension. One crafted request fixes the URLs every other client gets for the next hour. Since the attacker controls the package, signature, and key together, signature verification does not help.

The only bounding condition is the cache entry being empty when the poisoned request arrives; it recurs hourly. Dev Spaces 3.28, 3.29 and 3.30 ship affected versions (0.34.5, 1.0.1, 1.1.1; fixed in 1.2.0). Fixes are released only for the current minor version, so 3.30 receives the fix in a z-stream update while 3.28 and 3.29 will not receive one. Customers on 3.28 or 3.29 should upgrade to 3.30 to get the fix.

Mitigation

On installations that cannot upgrade to a fixed version yet, reconfigure the proxy in front of the Open VSX server to set X-Forwarded-Host, X-Forwarded-Proto and X-Forwarded-Prefix to known values instead of relaying client input, and make sure the server is not reachable except through that proxy. Existing poisoned cache entries survive the configuration change, so flush the Open VSX caches afterwards.

Common Vulnerability Scoring System (CVSS) Score Details

Info alert:Important note

CVSS scores for open source components depend on vendor-specific factors (e.g. version or build chain). Therefore, Red Hat's score and impact rating can be different from NVD and other vendors. Red Hat remains the authoritative CVE Naming Authority (CNA) source for its products and services (see Red Hat classifications).

CVSS v3 Score Breakdown

Red HatNVDcve.org
Base Score9N/AN/A
Attack VectorNetworkN/AN/A
Attack ComplexityHighN/AN/A
Privileges RequiredNoneN/AN/A
User InteractionNoneN/AN/A
ScopeChangedN/AN/A
ConfidentialityHighN/AN/A
Integrity ImpactHighN/AN/A
Availability ImpactHighN/AN/A

Vector

Red Hat: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:H

Understanding the Weakness (CWE)

Access Control,Other

Technical Impact: Gain Privileges or Assume Identity; Varies by Context

An attacker can access any functionality that is inadvertently accessible to the source.

Frequently Asked Questions

Want to get errata notifications? Sign up here.