Vulnerabilities

Security fix · GHSA-9969-6676-49h5

Echo: WebSocket proxy can retain connections and handlers after client disconnect

Published Oct 23, 2026 · catalog updated Oct 23, 2026 · Echo: WebSocket proxy can

Last checked Oct 27, 2026, 12 days ago.

Open the advisory

Exploitation likelihood is not on this record for GHSA-9969-6676-49h5. A missing EPSS score is not a low risk. Compare Echo: WebSocket proxy can with the linked advisory before you change production.

Gaps on this record

  • The stored product name is a package slug. The name on this page is taken from the title (Echo: WebSocket proxy can).
  • No vendor fix or required action is stored. Compare the linked advisory before you change production.
  • EPSS is missing. A missing score is not a low risk.
Severity
High—
Known exploitation
Not in CISA/VulnCheck KEV
EPSS
Awaiting synchronization with FIRST
Remediation
Advisory link
Affected products
Go github.com/labstack/echo/v4 · Go github.com/labstack/echo/v5

## Impact Echo's Proxy middleware could retain a handler, copy goroutines and network connections after a WebSocket client disconnected if the upstream kept its connection open. The raw proxy waited for both copy directions to finish without reliably closing the other connection when one direction ended. Rejected upgrade responses with HTTP keep-alive were one way to trigger this behavior. Repeated connections can accumulate resources and cause denial of service. The impact depends on the proxy route's accessibility, upstream behavior and configured connection deadlines. This is a medium-severity resource-retention issue; no confidentiality or integrity impact is claimed. ## Affected versions and patch Affected versions are v4.15.0 through v4.16.0 and v5.0.0 through v5.4.0. The regression was introduced by commit e2133320c7, merged in #2852. Upgrade to [v4.16.1](https://github.com/labstack/echo/releases/tag/v4.16.1) or [v5.4.1](https://github.com/labstack/echo/releases/tag/v5.4.1). The patch uses Go's HTTP reverse proxy, preserves ordinary HTTP handling for rejected upgrades, and closes both sides of a WebSocket tunnel when either direction ends. It also covers an upstream that receives client EOF but deliberately keeps its side open. Fix commits: [v4](https://github.com/labstack/echo/commit/3fb0ba7e17645bb65611e2a08875d0a2f65c421f), [v5](https://github.com/labstack/echo/commit/1855061e572ae9dab727c811d8382f266bfbaaec). ## Workarounds Disable WebSocket proxy routes until upgrading, or apply bounded connection lifetimes and resource limits at the frontend and upstream. Server idle timeouts alone may not cover hijacked WebSocket connections. ## Credits Reported by @irisitymichaelgrundberg.

Are you affected?

Enter the version you run. The result uses only the ranges stored on this record.

The check returns affected, not affected, or incomplete. It does not guess a version that is missing from the record.

  • Go github.com/labstack/echo/v44.15.0 → 4.16.1
  • Go github.com/labstack/echo/v55.0.0 → 5.4.1

How to fix GHSA-9969-6676-49h5

What to do

Three questions, each answered from this record only. Confirm the vendor advisory before you patch.

Should you patch?

Exploitation likelihood is not on this record for GHSA-9969-6676-49h5. A missing EPSS score is not a low risk. Compare Echo: WebSocket proxy can with the linked advisory before you change production.

Which versions are affected?

Compare what you have installed with 4.15.0 → 4.16.1, 5.0.0 → 5.4.1. Compare the installed version with the linked vendor advisory before you change production.

What should an analyst verify?

CWE-772: Missing Release of Resource after Effective Lifetime. EPSS is not on this record yet. There is no CISA KEV listing. No Exploit-DB or Metasploit reference is linked. Use the source links for the original advisory.

Code

The project this record applies to. Exploit listings stay in References.

Timeline

Detection, updates, and resolution for this record.

  1. Oct 23, 2026 · GitHub Advisory Database

    Detected

    ## Impact Echo's Proxy middleware could retain a handler, copy goroutines and network connections after a WebSocket client disconnected if the upstream kept its connection open. The raw proxy waited for both copy directions to finish without reliably closing the other connection when one direction ended. Rejected upgrade responses with HTTP keep-alive were one way to trigger this behavior. Repeate

  2. Oct 23, 2026 · GitHub Advisory Database

    Fix available

    github.com/labstack/echo/v4 fixed in 4.16.1; github.com/labstack/echo/v5 fixed in 5.4.1

  3. Oct 23, 2026 · GitHub Advisory Database

    Fix available

    github.com/labstack/echo/v4 fixed in 4.16.1

  4. Oct 23, 2026 · GitHub Advisory Database

    Fix available

    github.com/labstack/echo/v5 fixed in 5.4.1

  5. Oct 23, 2026 · GitHub Advisory Database

    Updated

    ## Impact Echo's Proxy middleware could retain a handler, copy goroutines and network connections after a WebSocket client disconnected if the upstream kept its connection open. The raw proxy waited for both copy directions to finish without reliably closing the other connection when one direction ended. Rejected upgrade responses with HTTP keep-alive were one way to trigger this behavior. Repeate

Sources

References

Freshness

Last verified in this catalog Oct 23, 2026. Significant claims (KEV, EPSS, CVSS, affected ranges) come from the source rows above — open the original publisher for the authoritative advisory.

  • Go Vulnerability DatabaseOct 27, 2026
  • GitHub Advisory DatabaseOct 24, 2026
  • OpenSSF OSV / OSV ScannerOct 24, 2026