{"id":"CVE-2026-118264","state":"PUBLISHED","title":"Echo: Rejected WebSocket upgrades can bypass Echo route-level access controls","description":"Echo is a Go web framework. From 4.0.0 until 4.16.1 and 5.4.1, Echo's Proxy middleware selects a raw tunnel from a client WebSocket upgrade request before verifying that the configured upstream accepted the upgrade. If the upstream rejects the upgrade with an ordinary keep-alive response, later HTTP requests on the connection are sent directly to that upstream without passing through Echo's router or route-specific middleware. This can bypass authentication or authorization enforced only by Echo routes, but requires an accessible proxy route, a cooperating rejected-upgrade response, and a target without independent upstream authorization. This issue is fixed in 4.16.1 and 5.4.1.","publishedAt":"2026-10-28T19:03:01.533Z","updatedAt":"2026-10-30T19:21:07.156Z","severity":{"score":9.1,"label":"Critical","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["labstack echo"],"affected":[{"vendor":"labstack","product":"echo","versions":[{"version":">= 4.0.0, < 4.16.1","status":"affected"},{"version":">= 5.0.0, < 5.4.1","status":"affected"}]}],"references":["https://github.com/labstack/echo/security/advisories/GHSA-cxf3-9h37-7rr8","https://github.com/labstack/echo/commit/1855061e572ae9dab727c811d8382f266bfbaaec","https://github.com/labstack/echo/commit/3fb0ba7e17645bb65611e2a08875d0a2f65c421f","https://github.com/labstack/echo/releases/tag/v4.16.1","https://github.com/labstack/echo/releases/tag/v5.4.1"],"weaknesses":["CWE-444","CWE-863"],"ingestedAt":"2026-10-30T19:48:04.455Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/118xxx/CVE-2026-118264.json","commit":"91beacf46587178cb335e3399e6db92524d41de0","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-118264","state":"PUBLISHED","datePublished":"2026-10-28T19:03:01.533Z","dateUpdated":"2026-10-30T19:21:07.156Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-10-27T20:13:55.314Z"},"containers":{"cna":{"title":"Echo: Rejected WebSocket upgrades can bypass Echo route-level access controls","descriptions":[{"lang":"en","value":"Echo is a Go web framework. From 4.0.0 until 4.16.1 and 5.4.1, Echo's Proxy middleware selects a raw tunnel from a client WebSocket upgrade request before verifying that the configured upstream accepted the upgrade. If the upstream rejects the upgrade with an ordinary keep-alive response, later HTTP requests on the connection are sent directly to that upstream without passing through Echo's router or route-specific middleware. This can bypass authentication or authorization enforced only by Echo routes, but requires an accessible proxy route, a cooperating rejected-upgrade response, and a target without independent upstream authorization. This issue is fixed in 4.16.1 and 5.4.1."}],"affected":[{"vendor":"labstack","product":"echo","versions":[{"version":">= 4.0.0, < 4.16.1","status":"affected"},{"version":">= 5.0.0, < 5.4.1","status":"affected"}]}],"references":[{"url":"https://github.com/labstack/echo/security/advisories/GHSA-cxf3-9h37-7rr8","name":"https://github.com/labstack/echo/security/advisories/GHSA-cxf3-9h37-7rr8","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/labstack/echo/commit/1855061e572ae9dab727c811d8382f266bfbaaec","name":"https://github.com/labstack/echo/commit/1855061e572ae9dab727c811d8382f266bfbaaec","tags":["x_refsource_MISC"]},{"url":"https://github.com/labstack/echo/commit/3fb0ba7e17645bb65611e2a08875d0a2f65c421f","name":"https://github.com/labstack/echo/commit/3fb0ba7e17645bb65611e2a08875d0a2f65c421f","tags":["x_refsource_MISC"]},{"url":"https://github.com/labstack/echo/releases/tag/v4.16.1","name":"https://github.com/labstack/echo/releases/tag/v4.16.1","tags":["x_refsource_MISC"]},{"url":"https://github.com/labstack/echo/releases/tag/v5.4.1","name":"https://github.com/labstack/echo/releases/tag/v5.4.1","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"PRESENT","privilegesRequired":"NONE","userInteraction":"NONE","vulnConfidentialityImpact":"HIGH","vulnIntegrityImpact":"HIGH","vulnAvailabilityImpact":"NONE","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","subAvailabilityImpact":"NONE","baseScore":9.1,"baseSeverity":"CRITICAL","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:N/SC:N/SI:N/SA:N","version":"4.0"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-444","lang":"en","description":"CWE-444: Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling')","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-863","lang":"en","description":"CWE-863: Incorrect Authorization","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-28T19:03:01.533Z"},"source":{"advisory":"GHSA-cxf3-9h37-7rr8","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-30T19:20:57.948930Z","id":"CVE-2026-118264","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-30T19:21:07.156Z"}}]}}}