← Back to CVE Explorer

CVE-2026-10054

Full vulnerability record from the local CVENow database.

Description

In affected versions of Eclipse Theia (1.8.1 and later), the browser backend exposes privileged terminal RPC over WebSocket (/services/shell-terminal, /services/terminals/:id) without service-level authentication. WebSocket origin validation in @theia/core is fail-open: connections are accepted when the Origin header is missing or when no THEIA_HOSTS allowlist is configured (the default). The Socket.IO integration additionally replaces the real Origin header with a client-supplied fix-origin header that an attacker can control or omit. As a result, a foreign-origin web page visited by a user with a running Theia instance can open the /services WebSocket namespace, invoke terminal creation, attach to the resulting terminal data channel, execute arbitrary OS commands, and read their output. This affects both local developer setups (drive-by attack) and hosted or tunneled deployments without strong external authentication. A fix is in development that enforces same-origin validation by default, removes trust in the fix-origin header, gates HTTP and WebSocket access on a SameSite=Strict; HttpOnly connection-token cookie, and sanitizes shell terminal creation options.

Severity
HIGH
CVSS score
8.8 (v3.1)
Vulnerability status
Deferred
Source identifier
Published
2026-07-03 11:16:26.847000
Last modified
2026-10-25 21:10:00.770000
View original CVE JSON
{
  "id": "CVE-2026-10054",
  "sourceIdentifier": "[email protected]",
  "published": "2026-07-03T11:16:26.847",
  "lastModified": "2026-10-25T21:10:00.770",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In affected versions of Eclipse Theia (1.8.1 and later), the browser backend exposes privileged terminal RPC over WebSocket (/services/shell-terminal, /services/terminals/:id) without service-level authentication.\n\n\n\n\nWebSocket origin validation in @theia/core is fail-open: connections are accepted when the Origin header is missing or when no THEIA_HOSTS allowlist is configured (the default). The Socket.IO integration additionally replaces the real Origin header with a client-supplied fix-origin header that an attacker can control or omit.\n\n\n\n\nAs a result, a foreign-origin web page visited by a user with a running Theia instance can open the /services WebSocket namespace, invoke terminal creation, attach to the resulting terminal data channel, execute arbitrary OS commands, and read their output. This affects both local developer setups (drive-by attack) and hosted or tunneled deployments without strong external authentication.\n\n\n\n\nA fix is in development that enforces same-origin validation by default, removes trust in the fix-origin header, gates HTTP and WebSocket access on a SameSite=Strict; HttpOnly connection-token cookie, and sanitizes shell terminal creation options."
    },
    {
      "lang": "es",
      "value": "En las versiones afectadas de Eclipse Theia (1.8.1 y posteriores), el backend del navegador expone RPC de terminal privilegiado a través de WebSocket (/services/shell-terminal, /services/terminals/:id) sin autenticación a nivel de servicio.\n\nLa validación de origen de WebSocket en @theia/core es de tipo ’fail-open’: se aceptan conexiones cuando falta el encabezado Origin o cuando no hay una lista blanca THEIA_HOSTS configurada (el valor predeterminado). La integración de Socket.IO además reemplaza el encabezado Origin real con un encabezado ’fix-origin’ proporcionado por el cliente que un atacante puede controlar u omitir.\n\nComo resultado, una página web de origen externo visitada por un usuario con una instancia de Theia en ejecución puede abrir el espacio de nombres WebSocket /services, invocar la creación de terminales, adjuntarse al canal de datos del terminal resultante, ejecutar comandos arbitrarios del sistema operativo y leer su salida. Esto afecta tanto a las configuraciones de desarrollador locales (ataque de paso) como a las implementaciones alojadas o tunelizadas sin una autenticación externa fuerte.\n\nSe está desarrollando una solución que aplica la validación de mismo origen por defecto, elimina la confianza en el encabezado ’fix-origin’, restringe el acceso HTTP y WebSocket mediante una cookie de token de conexión SameSite=Strict; HttpOnly, y sanea las opciones de creación de terminales de shell."
    }
  ],
  "affected": [
    {
      "source": "[email protected]",
      "affectedData": [
        {
          "vendor": "Eclipse Foundation",
          "product": "Eclipse Theia",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "1.8.1",
              "lessThan": "1.73.0",
              "versionType": "semver",
              "status": "affected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "[email protected]",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H",
          "baseScore": 8.8,
          "baseSeverity": "HIGH",
          "attackVector": "NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "REQUIRED",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 5.9
      }
    ],
    "ssvcV203": [
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "ssvcData": {
          "timestamp": "2026-07-06T00:00:00+00:00",
          "id": "CVE-2026-10054",
          "options": [
            {
              "exploitation": "none"
            },
            {
              "automatable": "no"
            },
            {
              "technicalImpact": "total"
            }
          ],
          "role": "CISA Coordinator",
          "version": "2.0.3"
        }
      }
    ]
  },
  "weaknesses": [
    {
      "source": "[email protected]",
      "type": "Secondary",
      "description": [
        {
          "lang": "en",
          "value": "CWE-306"
        },
        {
          "lang": "en",
          "value": "CWE-1385"
        }
      ]
    }
  ],
  "references": [
    {
      "url": "https://github.com/eclipse-theia/theia/security/advisories/GHSA-78g8-vm3p-97c6",
      "source": "[email protected]"
    },
    {
      "url": "https://gitlab.eclipse.org/security/vulnerability-reports/-/work_items/376",
      "source": "[email protected]"
    }
  ]
}