CVE-2026-118655 · GHSA-xwq5-6cqp-vx96
Echo has a Static Middleware Double-Unescape Path Traversal
- Risk score
- 40/100
- CVSS
- 5.9 v3.1
- Published
- 28 Oct 2026
Open in the live forecast Today's forecast
What to know
- What it is
- Echo is a Go web framework. Prior to 4.15.3 and 5.2.0, middleware.Static can decode an already decoded Request.URL.Path a second time. Double-encoded separators can consequently be reconstructed before filesystem resolution. This can reach a file under a guarded route when the static middleware is registered globally.…
- Affected
- github.com/labstack/echo/v5 (go) < 5.2.0; github.com/labstack/echo/v4 (go) < 4.15.3
- Fix
- Upgrade github.com/labstack/echo/v5 to 5.2.0; github.com/labstack/echo/v4 to 4.15.3 or later.
- Exploitation
- No known exploitation
Story map
At a glance
github.com/labstack/echo/v5: Yellow, plan it in. Echo is a Go web framework. Prior to 4.16.0 and 5.4.0, a globally mounted middleware.Static instance can interpret an encoded request path differently from Echo's router because the router matches the still-encoded path while the static handler uses the decoded URL.Path. The advisory demonstrates an encoded slash reso…
The flaws
- CVE-2026-118655: Echo has a Static Middleware Double-Unescape Path Traversal (CVSS 5.9)
- CVE-2026-118650: Echo's middleware.Static: `%2F`-encoded path bypasses route/group middleware guarding a statically-served path (CVSS 7.5)
- CVE-2026-118656: Echo has Open Redirect via Control-Character Prefix Defeating sanitizeURI (CVSS 6.1)
- CVE-2026-118657: Echo: HTTPS Redirect and HSTS Bypass via Unconditional Trust of Forwarded Scheme Headers (CVSS 5.9)
The fix
Upgrade github.com/labstack/echo/v5: 4.15.3 · 5.2.0 · 4.16.0 · 5.4.0 or later on your release line
Who is exposed: github.com/labstack/echo/v5 (go) < 5.4.0; github.com/labstack/echo/v4 (go) < 4.16.0
Where it stands
- Public proof of concept
Connects to
- Same weakness: CWE-174 (CWE-174). 2 other warnings in 30 days
Why it is Yellow
- CVSS 5.9 medium
- On your watchlist: Go
Affected packages
| Package | Ecosystem | Vulnerable | Fixed in |
|---|---|---|---|
| github.com/labstack/echo/v5 | go | < 5.2.0 | 5.2.0 |
| github.com/labstack/echo/v4 | go | < 4.15.3 | 4.15.3 |
References
- https://github.com/advisories/GHSA-xwq5-6cqp-vx96
- https://github.com/labstack/echo/security/advisories/GHSA-xwq5-6cqp-vx96
- https://github.com/labstack/echo/issues/2599
- https://github.com/labstack/echo/pull/3006
- https://github.com/labstack/echo/commit/a9ede66a5a7196411131beb1ee801e75bbaf7ac6
- https://github.com/labstack/echo/commit/c3fa2a27ff92b2b8db360de614f999ef1da24725
- https://github.com/labstack/echo/releases/tag/v4.15.3
- https://github.com/labstack/echo/releases/tag/v5.2.0
- https://github.com/advisories/GHSA-xwq5-6cqp-vx96
Original description
Echo is a Go web framework. Prior to 4.15.3 and 5.2.0, middleware.Static can decode an already decoded Request.URL.Path a second time. Double-encoded separators can consequently be reconstructed before filesystem resolution. This can reach a file under a guarded route when the static middleware is registered globally. This issue is fixed in 4.15.3 and 5.2.0.
Last activity 28 Oct 2026. Patch Forecast updates every hour.