Skip to main content

Echo EUVDEUVD-2026-112459

| CVE-2026-118654 MEDIUM
Path Traversal (CWE-22)
2026-10-28 security-advisories@github.com GHSA-3pmx-cf9f-34xr
5.9
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify static mount overlapping guarded route
  2. Exploit
    Send request with encoded dot-dot (%2E%2E) to public static path
  3. Execution
    Path normalized after route matching bypasses middleware
  4. Impact
    Read 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Echo < 4.16.0
Echo 5.0.0, < 5.4.0

Affected Packages

go github.com/labstack/echo/v4 fix: 4.16.0
go github.com/labstack/echo/v5 fix: 5.4.0
euvd echo fix: 4.16.0, 5.4.0

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

Vendor (github) PRIMARY 5.9 MEDIUM
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
vuln.today AI 5.9 MEDIUM

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.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
High
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

1
Patch available
Oct 28, 2026 - 21:19 EUVD

DescriptionCVE.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

Prevalence
Medium
popular Go web framework, moderate real-world production footprint
Threat Intel
1
1 source
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

30
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +30
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy