GHSA-xwq5-6cqp-vx96: Path Traversal

Published Oct 28, 2026
·
Updated

Summary

Commit a9ede66a (PR #3006, issue #2599) silently fixed a path traversal vulnerability in the Echo web framework's static file middleware.

Vulnerability

The static middleware double-unescaped URL paths. Go's net/http already decodes Request.URL.Path, but middleware/static.go unconditionally called url.PathUnescape() again:

go // BEFORE (vulnerable) pathUnescape := true

This reassembled path traversal sequences from double-encoded input. An attacker could send GET /%2e%2e%2fsecret.txt or /..%252fsecret.txt and the double-unescape would produce ../secret.txt.

Fix go // AFTER (fixed) pathUnescape := false

The commit's test TestStaticpercentEncodedTraversalIsBlocked explicitly verifies traversal vectors are blocked.

Impact Arbitrary file read from server filesystem via percent-encoded path traversal.

References - Fix: https://github.com/labstack/echo/commit/a9ede66a - Issue: https://github.com/labstack/echo/issues/2599 - PR: https://github.com/labstack/echo/pull/3006

Patches

Fixed in github.com/labstack/echo/v5 v5.2.0 and github.com/labstack/echo/v4 v4.15.3, where the Static middleware stopped unescaping an already decoded path. Maintainer analysis: reading files outside the configured root could not be reproduced; the confirmed impact was that a double-encoded slash (%252F) could reach a file under a guarded route when the Static middleware is registered globally. Upgrade to v5.4.0 / v4.16.0 or later, which also includes related fixes for encoded and dot-segment paths.

Workarounds

Keep files that need protection outside the Static middleware's root directory.

Affected Software

2 affected componentsFixes available
go/github.com/labstack/echo/v4<4.15.3
4.15.3
go/github.com/labstack/echo/v5<5.2.0
5.2.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/labstack/echo/v4 to a version that resolves this vulnerability.

    Fixed in 4.15.3
  2. Upgrade

    Upgrade go/github.com/labstack/echo/v5 to a version that resolves this vulnerability.

    Fixed in 5.2.0
  3. Upgrade

    Upgrade github.com/labstack/echo/v5 to a version that resolves this vulnerability.

    Fixed in 5.4.0
  4. Upgrade

    Upgrade github.com/labstack/echo/v4 to a version that resolves this vulnerability.

    Fixed in 4.16.0
  5. Compensating control

    Keep files that need protection outside the Echo Static middleware's configured root directory.

Event History

Oct 28, 2026
Advisory Published
via GitHub·09:04 PM
Data Sourced
via GitHub·09:04 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

Which deployments are exposed?

Deployments using Echo v4 or v5 Static middleware are affected if they run versions earlier than v4.15.3 or v5.2.0. The issue can expose files readable by the server process through the static-file path.

2

Does exploitation require authentication or user interaction?

No. The reported vector is a network GET request and is rated as requiring no privileges or user interaction, although it has high attack complexity.

3

How can I determine whether the fix is present?

Echo v4.15.3 and v5.2.0 contain the fix, which changes Static middleware so it no longer unescapes an already decoded request path. The added TestStatic_percentEncodedTraversalIsBlocked test covers percent-encoded traversal vectors.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203