Skip to content

Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - #266

Open
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/go-github.com-labstack-echo-v4-vulnerability
Open

Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY]#266
renovate[bot] wants to merge 1 commit into
masterfrom
renovate/go-github.com-labstack-echo-v4-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Change Age Confidence
github.com/labstack/echo/v4 v4.15.1v4.15.3 age confidence

Echo: Encoded slash (%2F) bypasses route-level protection and exposes static files

CVE-2026-55677 / GHSA-vfp3-v2gw-7wfq

More information

Details

Summary

Echo's router and static file handler disagree on URL path decoding. The router matches routes using the raw encoded path (preserving %2F as-is), while StaticDirectoryHandler unescapes %2F to / before resolving filesystem paths. This allows an attacker to bypass route-level access controls and read static files without authorization.

Details

Root cause 1 — router.go lines 798-802:
The router uses req.URL.RawPath for route matching when useEscapedPathForRouting is false (the default). This means /admin%2Fsecret.txt is treated as a single path segment and does NOT match the /admin/* route pattern.

if !r.useEscapedPathForRouting && req.URL.RawPath != "" {
    path = req.URL.RawPath
}

Root cause 2 — echo.go lines 559-568:
StaticDirectoryHandler calls url.PathUnescape() on the path parameter before opening files. This converts %2F back to /, resolving admin/secret.txt on disk.

if !disablePathUnescaping {
    tmpPath, err := url.PathUnescape(p)
    p = tmpPath
}
name := filepath.ToSlash(filepath.Clean(strings.TrimPrefix(p, "/")))
PoC (Screenshot)

Sample:
image

403:
image

Bypass with encoded slash:
image

Impact

Unauthorized static file disclosure. Applications that protect route prefixes with authentication middleware while also serving static files from a broader root are vulnerable. An attacker only needs to encode the slash (/%2F) in the URL to bypass all route-level protection.

Common affected pattern:

adminGroup := e.Group("/admin", authMiddleware)
e.StaticFS("/", os.DirFS("public"))

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

labstack/echo (github.com/labstack/echo/v4)

v4.15.3: - Static encoded-separator route bypass fix (GHSA-vfp3-v2gw-7wfq)

Compare Source

Security

  • fix(static): reject encoded path separators that bypass route-level middleware by @​vishr in #​3011

Fixes GHSA-vfp3-v2gw-7wfq: an encoded path separator (%2F or %5C) in a static file URL could bypass route-level middleware (e.g. authentication on a sibling route) and disclose static files. Both StaticDirectoryHandler (used by Static/StaticFS) and the Static middleware are affected. Backport of the v5 fix (#​3009, released in v5.2.0). Thanks to @​a-tt-om and @​oran-gugu for reporting.

Full Changelog: labstack/echo@v4.15.2...v4.15.3

v4.15.2: - Context.Scheme() header validation

Compare Source

Security

Thanks to @​shblue21 for reporting this issue.

Full Changelog: labstack/echo@v4.15.1...v4.15.2


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added the dependency label Aug 25, 2026
@renovate

renovate Bot commented Aug 25, 2026

Copy link
Copy Markdown
Contributor Author

ℹ️ Artifact update notice

File name: go.mod

In order to perform the update(s) described in the table above, Renovate ran the go get command, which resulted in the following additional change(s):

  • 10 additional dependencies were updated

Details:

Package Change
github.com/labstack/gommon v0.4.2 -> v0.5.0
github.com/mattn/go-isatty v0.0.20 -> v0.0.22
golang.org/x/crypto v0.49.0 -> v0.50.0
golang.org/x/mod v0.33.0 -> v0.34.0
golang.org/x/net v0.52.0 -> v0.53.0
golang.org/x/sys v0.42.0 -> v0.43.0
golang.org/x/term v0.41.0 -> v0.42.0
golang.org/x/text v0.35.0 -> v0.36.0
golang.org/x/time v0.14.0 -> v0.15.0
golang.org/x/tools v0.42.0 -> v0.43.0

@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Aug 30, 2026
@renovate renovate Bot closed this Aug 30, 2026
@renovate
renovate Bot deleted the renovate/go-github.com-labstack-echo-v4-vulnerability branch August 30, 2026 01:50
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Aug 30, 2026
@renovate renovate Bot reopened this Aug 30, 2026
@renovate
renovate Bot force-pushed the renovate/go-github.com-labstack-echo-v4-vulnerability branch 2 times, most recently from 8269690 to 18b9cc8 Compare August 30, 2026 05:07
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Aug 31, 2026
@renovate renovate Bot closed this Aug 31, 2026
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Aug 31, 2026
@renovate renovate Bot reopened this Aug 31, 2026
@renovate
renovate Bot force-pushed the renovate/go-github.com-labstack-echo-v4-vulnerability branch from 18b9cc8 to 5d3efbb Compare August 31, 2026 17:53
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Sep 1, 2026
@renovate renovate Bot closed this Sep 1, 2026
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Sep 1, 2026
@renovate renovate Bot reopened this Sep 1, 2026
@renovate
renovate Bot force-pushed the renovate/go-github.com-labstack-echo-v4-vulnerability branch 2 times, most recently from 5d3efbb to f651ac8 Compare September 1, 2026 18:12
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Sep 2, 2026
@renovate renovate Bot closed this Sep 2, 2026
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Sep 2, 2026
@renovate renovate Bot reopened this Sep 2, 2026
@renovate
renovate Bot force-pushed the renovate/go-github.com-labstack-echo-v4-vulnerability branch 2 times, most recently from f651ac8 to dd18a6e Compare September 2, 2026 23:40
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Sep 3, 2026
@renovate renovate Bot closed this Sep 3, 2026
@renovate renovate Bot changed the title Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] - autoclosed Update module github.com/labstack/echo/v4 to v4.15.3 [SECURITY] Sep 3, 2026
@renovate renovate Bot reopened this Sep 3, 2026
@renovate
renovate Bot force-pushed the renovate/go-github.com-labstack-echo-v4-vulnerability branch 2 times, most recently from dd18a6e to 3bab8ad Compare September 3, 2026 07:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants