Description
Echo is a Go web framework. Prior to 4.16.0 and 5.4.0, Context.Scheme unconditionally trusts forwarded scheme headers from any client. A client that reaches Echo directly over plaintext HTTP can claim an HTTPS scheme and bypass HTTPSRedirect because the request is treated as already secure. Separately, behind a TLS-terminating proxy that passes an attacker-controlled header, a claimed HTTP scheme can suppress the Strict-Transport-Security header even though the browser receives the response over HTTPS. The practical risk is reduced when a trusted proxy overwrites the headers and direct backend access is prevented, but the framework previously had no trusted-source configuration for this decision. This issue is fixed in 4.16.0 and 5.4.0.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
labstack echo
>= 5.0.0, < 5.4.0affected< 4.16.0affected
References
- https://github.com/labstack/echo/security/advisories/GHSA-2ffq-g2xg-c22p ↗
- https://github.com/labstack/echo/commit/b838391e2eade87ae7e5a09d7bb5087bec271ec1 ↗
- https://github.com/labstack/echo/commit/fc410094b2f3415cf2bf5204082137b205bfd5af ↗
- https://github.com/labstack/echo/releases/tag/v4.16.0 ↗
- https://github.com/labstack/echo/releases/tag/v5.4.0 ↗