Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-14574

CVE-2026-14574: Eclipse Theia Prototype Pollution Vulnerability

CVE-2026-14574 is a prototype pollution flaw in Eclipse Theia versions 0.7.0 to 1.73.1 that allows attackers to pollute Object.prototype via crafted workspace settings. This article covers technical details, affected versions, impact, and mitigation strategies.

Updated:

CVE-2026-14574 Overview

CVE-2026-14574 is a prototype pollution vulnerability [CWE-1321] in Eclipse Theia, an open-source cloud and desktop IDE framework. The flaw resides in the PreferenceUtils.merge function within @theia/core, which recursively merges preference values without filtering dangerous keys such as __proto__, constructor, and prototype. Because PreferenceServiceImpl.doResolve invokes this merge for every preference resolution across default, user, workspace, and folder scopes, a crafted .theia/settings.json or .vscode/settings.json file can pollute Object.prototype when a user opens the workspace. The vulnerability affects Eclipse Theia versions 0.7.0 through 1.73.1.

Critical Impact

Opening an attacker-supplied workspace triggers prototype pollution across the entire Theia process, altering application logic and integrity.

Affected Products

  • Eclipse Theia @theia/core versions 0.7.0 through 1.73.1
  • Applications built on the Eclipse Theia framework
  • Downstream IDE distributions embedding vulnerable Theia versions

Discovery Timeline

  • 2026-08-05 - CVE-2026-14574 published to NVD
  • 2026-08-05 - Last updated in NVD database

Technical Details for CVE-2026-14574

Vulnerability Analysis

Eclipse Theia manages user configuration through layered preference scopes: default, user, workspace, and folder. The PreferenceServiceImpl.doResolve method combines these scopes by delegating to PreferenceUtils.merge, which performs a recursive deep merge on preference objects. The merge routine copies properties from a source object into a target without validating property names against JavaScript's prototype chain identifiers.

When the parser encounters a key such as __proto__, the assignment writes onto Object.prototype rather than a local property. Any object created afterward inherits the polluted value. Because preferences are resolved throughout the Theia process lifetime, the pollution persists for the session and can cascade into security-sensitive code paths, including access control checks, plugin loading, and command dispatch logic.

Root Cause

The root cause is missing key validation during recursive object merging [CWE-1321]. The PreferenceUtils.merge implementation does not reject or sanitize properties named __proto__, constructor, or prototype before copying source values into the target object.

Attack Vector

Exploitation requires local access and user interaction. An attacker crafts a workspace containing a malicious .theia/settings.json or .vscode/settings.json file with a preference key that references __proto__. When a victim opens the workspace in a vulnerable Theia-based IDE, the preference service resolves the file and pollutes Object.prototype. The polluted properties then influence downstream logic that reads object attributes without hasOwnProperty checks. See the Eclipse Theia Security Advisory GHSA-f3w9-qfw3-xr32 for technical details.

Detection Methods for CVE-2026-14574

Indicators of Compromise

  • Workspace files at .theia/settings.json or .vscode/settings.json containing JSON keys named __proto__, constructor, or prototype
  • Unexpected properties appearing on JavaScript objects during Theia runtime that were not explicitly set
  • Abnormal behavior in Theia extensions or commands immediately after opening a new workspace

Detection Strategies

  • Scan repositories and shared workspaces for settings files containing prototype-related keys before opening them in Theia
  • Enable Node.js runtime instrumentation to log writes to Object.prototype during IDE sessions
  • Review Theia application logs for preference resolution errors or unexpected inherited property access

Monitoring Recommendations

  • Monitor endpoint file activity for the creation of .theia/settings.json or .vscode/settings.json files from untrusted sources such as cloned repositories or shared drives
  • Track child process creation and file writes originating from Theia-based IDE processes after workspace open events
  • Correlate developer workstation telemetry with source control clone events to identify high-risk workspace openings

How to Mitigate CVE-2026-14574

Immediate Actions Required

  • Upgrade @theia/core to a fixed version released after 1.73.1 as published in the Eclipse Theia Security Advisory
  • Instruct developers to avoid opening untrusted workspaces or repositories in Theia-based IDEs until patched
  • Audit existing workspace settings files across the organization for prototype-related keys

Patch Information

Eclipse Theia maintainers published a fix through the Eclipse Theia Security Advisory GHSA-f3w9-qfw3-xr32. The fix modifies PreferenceUtils.merge to reject prototype-related keys during recursive merging. Additional coordination details are available in the Eclipse GitLab CVE assignment and the vulnerability report issue.

Workarounds

  • Before opening any repository, manually inspect .theia/settings.json and .vscode/settings.json for keys matching __proto__, constructor, or prototype
  • Configure endpoint controls to block Theia from loading workspace-scoped settings files from untrusted directories
  • Restrict developer accounts from opening workspaces cloned from external, unvetted sources until upgrades are deployed

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.