CVE-2026-118650: Echo's middleware.Static: `%2F`-encoded path bypasses route/group middleware guarding a statically-served path
When middleware.Static is mounted globally (e.Use(middleware.Static(...))) and an application relies on a route- or group-level middleware guard to restrict a path that also falls under the served static root, a %2F-encoded request bypasses that guard while the file is still served. This is the same encoding/decoding mismatch fixed for StaticFS/StaticDirectoryHandler in CVE-2026-55677 / GHSA-vfp3-v2gw-7wfq, but the fix did not cover the middleware.Static path. In addition, the StaticConfig.EnablePathUnescaping docstring states the default configuration prevents exactly this bypass, which is inaccurate for the global-mount case.
This is not path traversal: no file outside the static root is accessed. The served file lives inside the static root; the issue is that access-control expectations set by a route guard are inconsistent between the literal and %2F-encoded forms of the same path.
References
- github.com/advisories/GHSA-375p-5qhx-8wq4
- github.com/labstack/echo/commit/b838391e2eade87ae7e5a09d7bb5087bec271ec1
- github.com/labstack/echo/commit/fc410094b2f3415cf2bf5204082137b205bfd5af
- github.com/labstack/echo/releases/tag/v4.16.0
- github.com/labstack/echo/releases/tag/v5.4.0
- github.com/labstack/echo/security/advisories/GHSA-375p-5qhx-8wq4
- nvd.nist.gov/vuln/detail/CVE-2026-118650
Code Behaviors & Features
Detect and mitigate CVE-2026-118650 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →