Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify static mount overlapping guarded route
-
ExploitSend request with encoded dot-dot (%2E%2E) to public static path
-
ExecutionPath normalized after route matching bypasses middleware
-
ImpactRead protected file as unauthenticated attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK
2 techniques across 2 tactics: Discovery, Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an application that mounts a static filesystem (via Echo.Static, Echo.StaticFS, Group.Static, Group.StaticFS or the Static middleware / StaticDirectoryHandler) over a path that overlaps files otherwise protected ONLY by route-level middleware, where those protected files are reachable through the static mount after path normalization. The high-severity vector needs no special settings - it works against the DEFAULT router configuration using encoded dot-dot segments such as /public/%2E%2E/admin/secret.txt. A second, lower-severity vector additionally requires the non-default router setting UseEscapedPathForMatching=true. Limiting factors: exploitation is confined to apps that both serve a static mount AND rely on route-level middleware (rather than filesystem separation) to protect the overlapping files; no authentication or user interaction is needed. Mitigation per the advisory is upgrading to v4.16.0 or v5.4.0; interim workarounds are a front reverse proxy that normalizes paths (removing dot segments, merging slashes) or keeping protected files outside the served directory. |
| Impact | Signals point to a real but conditional issue rather than a blanket critical. The CVSS 3.1 base score is 5.9 (medium) with vector AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N: network-reachable and unauthenticated (PR:N), but AC:H reflects that exploitation depends on a specific, non-universal deployment shape - a static filesystem mount that overlaps paths otherwise guarded only by route-level middleware. Impact is confidentiality-only (C:H, I:N, A:N): the flaw discloses protected files, it does not alter them or affect availability. The vuln.today decision label is 'this_month', i.e. a prioritized-but-not-emergency remediation, consistent with the medium CVSS and the conditional trigger. This is NOT a confirmed-exploited emergency: it is not in CISA KEV. EPSS is not provided in the input, so exploitation probability cannot be quantified here - do not treat its absence as 'low'. A public PoC reference exists in the GHSA-3pmx-cf9f-34xr advisory (reproduction requests and focused Go tests), but the input does not mark it as confirmed working exploit code. The genuine aggravating factor is that the high-severity variant works against the default router configuration and needs only encoded dot-dot segments, so any Echo app matching the vulnerable pattern is exposed to unauthenticated attackers. |
| Exploit ScenarioDerived | An Echo application protects /admin/* with route-level middleware (returning 403) but also mounts a static filesystem at / via Echo.StaticFS. An unauthenticated attacker requests /public/%2E%2E/admin/secret.txt; the encoded dot-dot passes the separator guard, is unescaped to public/../admin/secret.txt, and path.Clean resolves it to admin/secret.txt, so the static handler serves the protected file (200 OK) while the direct /admin/secret.txt route returns 403. A public PoC reference with reproduction steps and Go tests is included in the GHSA advisory; AC:H applies because the app must have this overlapping static-mount-plus-middleware configuration. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Encoded dot-dot path segments let unauthenticated remote attackers read files that Echo applications intended to protect with route-level middleware, because the static file handlers normalize the path after route matching and serve the file through a public static mount - for example /public/%2E%2E/admin/secret.txt returns a file under a guarded /admin/* route. The flaw is an incomplete fix for CVE-2026-55677 and affects Echo v4 before 4.16.0 and v5 before 5.4.0, but only applications that mount a static filesystem overlapping files guarded solely by middleware are exposed; the primary vector works against the default router configuration while a second, lower-severity vector requires UseEscapedPathForMatching=true. No CISA KEV entry or EPSS score was supplied with the intelligence, and the upstream advisory publishes reproduction tests, so a public PoC reference exists; it is not verified as working exploit code.
RemediationAI
Vendor-released patches are Echo v4.16.0 and v5.4.0 (module paths github.com/labstack/echo/v4 and github.com/labstack/echo/v5); upgrading is the complete fix, because the static handlers no longer serve paths containing a dot, double-dot or empty segment even after unescaping, closing both the default-configuration vector and the UseEscapedPathForMatching=true vector. Before upgrading, check the documented behavior changes: static requests with a double slash or dot segment now return 404 (HTML5 mode still serves the index); the Static middleware registered with Echo#Use runs before route and group middleware, so route guards do not protect the files it serves; and with StaticConfig.EnablePathUnescaping or Echo#EnablePathUnescapingStaticFiles encoded dots no longer traverse but encoded slashes are still decoded, so those options should not be combined with route-based access control. Interim workarounds stated in the advisory are to place a reverse proxy in front of the application that normalizes request paths (removing dot segments and merging slashes) - which adds a component whose normalization rules must be kept consistent with Echo's - or to keep protected files outside the served directory, which removes the overlap entirely. Fix commits referenced by the advisory are https://github.com/labstack/echo/commit/b838391e2eade87ae7e5a09d7bb5087bec271ec1 and https://github.com/labstack/echo/commit/fc410094b2f3415cf2bf5204082137b205bfd5af.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in go, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
This is a CWE-22 path traversal issue in the Go web framework github.com/labstack/echo. The Static middleware and StaticDirectoryHandler (used by Echo.Static, Echo.StaticFS, Group.Static and Group.StaticFS) unescape the matched route wildcard and pass it through path.Clean after the router has already selected a public static route. The earlier fix for GHSA-vfp3-v2gw-7wfq (CVE-2026-55677) was a denylist that rejected encoded path separators %2F and %5C before unescaping, but it did not reject encoded dot segments, so public/%2E%2E/admin/secret.txt unescapes to public/../admin/secret.txt and cleans to admin/secret.txt, which is then served from the public mount instead of being handled by the protected /admin/* route and its middleware. A second variant arises with the non-default router setting UseEscapedPathForMatching=true, where the router decodes the path before the static handler inspects the wildcard, so the encoded-separator guard never runs on the original request path. The assessed vector is AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N - remote exploitation with no authentication or user interaction, a high-complexity condition tied to the required application layout, and impact limited to confidentiality; the trigger described in the sources is the static-mount-overlaps-protected-files configuration, not a generic router flaw. The vendor fix in v4.16.0 and v5.4.0 stops serving any path containing a dot, double-dot or empty segment, including after path unescaping.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
Remote unauthenticated file disclosure limited to apps whose static mount overlaps middleware-protected paths, so AC:H; confidentiality-only impact, hence C:H with I:N and A:N.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
Echo is a Go web framework. Prior to 4.16.0 and 5.4.0, Echo's static file handlers can normalize dot segments after route matching and serve a file through a public static route even though the corresponding direct path is protected by route-level middleware. An unauthenticated attacker can read files that an application intended to protect with route-level middleware, when those files are also reachable through a static filesystem mount after path normalization. This vulnerability is the result of an incomplete fix for CVE-2026-55677. This issue is fixed in 4.16.0 and 5.4.0.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.
EUVD-2026-112459
GHSA-3pmx-cf9f-34xr
NVD
CVE.org
Exploit-DB