{"id":"CVE-2026-55883","title":"Tilt: Cross-site WebSocket hijacking of the Tilt HUD stream","summary":"Tilt: Cross-site WebSocket hijacking of the Tilt HUD stream","severity":"high","cwe":["CWE-345"],"vendor":"tilt-dev","product":"github.com/tilt-dev/tilt","affected":["github.com/tilt-dev/tilt >= 0.24.0, <= 0.37.3"],"patched":["github.com/tilt-dev/tilt 0.37.4"],"published":"2026-06-19","updated":"2026-06-19","source":"GHSA","sourceUrl":"https://github.com/advisories/GHSA-6m68-r693-78qx","references":[{"url":"https://github.com/tilt-dev/tilt/security/advisories/GHSA-6m68-r693-78qx"},{"url":"https://github.com/tilt-dev/tilt/pull/6776"},{"url":"https://github.com/tilt-dev/tilt/releases/tag/v0.37.4"},{"url":"https://github.com/advisories/GHSA-6m68-r693-78qx"}],"tags":["ghsa","go"],"ingestedAt":"2026-06-22T15:59:08.205Z","ecosystem":"go","epss":0.00262,"epssPercentile":0.18339,"slug":"CVE-2026-55883","body":"## Overview\n\n## Summary\nThe Tilt HUD WebSocket (`/ws/view`) is gated by a CSRF token, but the token is served by an unauthenticated endpoint and the upgrader accepts any client that omits an `Origin` header. When the HUD is network-exposed, an attacker can open the HUD stream and read the developer's session state.\n\n## Details\nThe upgrader accepts a connection when the `csrf` query parameter matches a process-wide token (`websocketCSRFToken`). That token is served as `text/plain` by an unauthenticated handler (`WebsocketToken`, mounted at `/api/websocket_token`), so any reachable caller can fetch it and connect to `/ws/view?csrf=<token>`. When the parameter does not match, the upgrader falls back to a same-origin check that returns true when the `Origin` header is absent, so a non-browser client that omits `Origin` is accepted anyway. The token has no per-session binding.\n\n## Impact\nAn attacker who can reach the HUD listener can open the HUD WebSocket and receive the full view stream — session state, Tiltfile contents, resource statuses, and continued updates — defeating the intended anti-CSWSH protection.\n\n### Conditions for exploitation\n- Affected version in `>= 0.24.0, <= 0.37.3`.\n- HUD bound to a non-loopback address (`tilt up --host 0.0.0.0`, or `TILT_HOST` set).\n- Network reachability to the listener (default port `10350`).\n\n### Not affected\n- The default loopback-only bind is not reachable from the network.\n\n## Workarounds\nUse the default loopback bind (omit `--host`, unset `TILT_HOST`). No complete workaround short of upgrading for non-loopback deployments.\n\n## Affected packages\n\n- `github.com/tilt-dev/tilt >= 0.24.0, <= 0.37.3`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `github.com/tilt-dev/tilt 0.37.4`","depth":"twilight","depthScore":41,"depthScoreParts":{"impact":41.3,"likelihood":0.1,"exploitation":0,"ransomware":0},"changes":[]}