{"id":"CVE-2026-118262","state":"PUBLISHED","title":"Echo: WebSocket proxy can retain connections and handlers after client disconnect","description":"Echo is a Go web framework. From 4.15.0 until 4.16.1 and 5.4.1, Echo's Proxy middleware can retain a handler, copy goroutines, and network connections after a WebSocket client disconnects when the upstream keeps its connection open. The raw proxy waits for both copy directions without reliably closing the peer connection when one direction ends, including when a rejected upgrade response uses HTTP keep-alive. Repeated connections can accumulate resources and cause denial of service, depending on proxy-route accessibility, upstream behavior, and connection deadlines. This issue is fixed in 4.16.1 and 5.4.1.","publishedAt":"2026-10-28T19:00:12.315Z","updatedAt":"2026-10-28T19:00:12.315Z","severity":{"score":8.2,"label":"High","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["labstack echo"],"affected":[{"vendor":"labstack","product":"echo","versions":[{"version":">= 4.15.0, < 4.16.1","status":"affected"},{"version":">= 5.0.0, < 5.4.1","status":"affected"}]}],"references":["https://github.com/labstack/echo/security/advisories/GHSA-9969-6676-49h5","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-772"],"ingestedAt":"2026-10-29T20:10:52.580Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/118xxx/CVE-2026-118262.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-118262","state":"PUBLISHED","datePublished":"2026-10-28T19:00:12.315Z","dateUpdated":"2026-10-28T19:00:12.315Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-10-27T20:13:55.314Z"},"containers":{"cna":{"title":"Echo: WebSocket proxy can retain connections and handlers after client disconnect","descriptions":[{"lang":"en","value":"Echo is a Go web framework. From 4.15.0 until 4.16.1 and 5.4.1, Echo's Proxy middleware can retain a handler, copy goroutines, and network connections after a WebSocket client disconnects when the upstream keeps its connection open. The raw proxy waits for both copy directions without reliably closing the peer connection when one direction ends, including when a rejected upgrade response uses HTTP keep-alive. Repeated connections can accumulate resources and cause denial of service, depending on proxy-route accessibility, upstream behavior, and connection deadlines. This issue is fixed in 4.16.1 and 5.4.1."}],"affected":[{"vendor":"labstack","product":"echo","versions":[{"version":">= 4.15.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-9969-6676-49h5","name":"https://github.com/labstack/echo/security/advisories/GHSA-9969-6676-49h5","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":"NONE","vulnIntegrityImpact":"NONE","vulnAvailabilityImpact":"HIGH","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","subAvailabilityImpact":"NONE","baseScore":8.2,"baseSeverity":"HIGH","vectorString":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","version":"4.0"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-772","lang":"en","description":"CWE-772: Missing Release of Resource after Effective Lifetime","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-28T19:00:12.315Z"},"source":{"advisory":"GHSA-9969-6676-49h5","discovery":"UNKNOWN"}}}}}