{"description":"Trending threats, MITRE ATT\u0026CK coverage, and detection metadata. Fed continuously.","favicon":"https://feed.craftedsignal.io/favicon-32x32.png","feed_url":"https://feed.craftedsignal.io/products/echo-v4--4.16.1/feed.json","home_page_url":"https://feed.craftedsignal.io/","icon":"https://feed.craftedsignal.io/apple-touch-icon.png","items":[{"_cs_actors":[],"_cs_cpes":[],"_cs_cves":[],"_cs_exploited":false,"_cs_has_poc":false,"_cs_poc_references":[],"_cs_products":["Echo (v4 \u003c 4.16.1)","Echo (v5 \u003c 5.4.1)"],"_cs_severities":["critical"],"_cs_tags":[],"_cs_type":"advisory","_cs_vendors":["Labstack"],"content_html":"\u003cp\u003eThe Proxy middleware in Labstack Echo (v4 and v5) fails to validate if an upstream server successfully upgrades to a WebSocket connection. When an upstream server rejects a WebSocket upgrade request but keeps the underlying TCP connection open, Echo incorrectly maintains a raw tunnel. This state causes subsequent HTTP requests on that same connection to be forwarded directly to the upstream service, bypassing any Echo-level router logic or middleware (e.g., authentication, authorization).\u003c/p\u003e\n\u003ch2 id=\"attack-chain\"\u003eAttack Chain\u003c/h2\u003e\n\u003col\u003e\n\u003cli\u003eAttacker identifies a proxy route in an Echo-based application.\u003c/li\u003e\n\u003cli\u003eAttacker sends a WebSocket upgrade request (HTTP GET with Connection: Upgrade, Upgrade: websocket) to the proxy route.\u003c/li\u003e\n\u003cli\u003eThe target upstream service receives the request, determines it cannot upgrade, and returns a standard HTTP response (e.g., 400 or 403) while keeping the connection alive.\u003c/li\u003e\n\u003cli\u003eEcho's Proxy middleware erroneously promotes the connection to a raw tunnel upon receiving the upgrade initiation, failing to confirm the upstream's non-101 response status.\u003c/li\u003e\n\u003cli\u003eAttacker sends subsequent unauthorized HTTP requests over the existing, now-tunneling connection.\u003c/li\u003e\n\u003cli\u003eThe proxy forwards these requests directly to the upstream, bypassing route-level controls implemented in the Echo layer.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ch2 id=\"impact\"\u003eImpact\u003c/h2\u003e\n\u003cp\u003eUnauthorized access to upstream resources that rely on Echo-level authentication or authorization. The bypass does not provide arbitrary-host proxying and relies on existing upstream reachability.\u003c/p\u003e\n\u003ch2 id=\"recommendation\"\u003eRecommendation\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUpgrade Echo to v4.16.1 or v5.4.1 immediately to implement upstream response validation.\u003c/li\u003e\n\u003cli\u003eIf immediate patching is not possible, enforce independent authentication and authorization checks at the upstream resource level.\u003c/li\u003e\n\u003cli\u003eImplement request filtering at the perimeter or load balancer to block WebSocket upgrade requests if they are not explicitly required for specific routes.\u003c/li\u003e\n\u003c/ul\u003e\n","date_modified":"2026-10-23T21:44:59Z","date_published":"2026-10-23T21:44:59Z","id":"https://feed.craftedsignal.io/briefs/2026-10-echo-websocket-bypass/","summary":"The Labstack Echo web framework Proxy middleware incorrectly establishes a raw tunnel for WebSocket upgrades before validating upstream responses, allowing subsequent HTTP requests to bypass route-level authentication and authorization.","title":"Labstack Echo: Proxy middleware WebSocket upgrade bypass","url":"https://feed.craftedsignal.io/briefs/2026-10-echo-websocket-bypass/"}],"language":"en","title":"CraftedSignal Threat Feed - Echo (V4 \u003c 4.16.1)","version":"https://jsonfeed.org/version/1.1"}