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.
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]"
}
]
}