Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify mounted auth route sharing a suffix with an outer public route
-
DeliverySend unauthenticated GET /{tenant}/data/{id}
-
ExploitSupressNotFound preflight Match mutates live routing context
-
ExecutionDispatch falls through to outer public handler retaining mount parameter
-
ImpactHandler returns tenant-scoped data, mounted auth middleware skipped
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Alternate path authentication
|
| Exploitation Conditions | Exploitation requires all of the following application-specific prerequisites, not merely use of chi: (1) middleware.SupressNotFound must be enabled on the outer router; (2) a mounted subrouter (e.g. via Router.Route("/{tenant}", ...)) protected by authentication middleware whose child path suffix collides with (3) an explicit outer public route of the same suffix (e.g. GET /data/{id}); and (4) that outer public handler must reuse a tenant-aware handler that trusts the retained mount parameter read via Request.PathValue / chi.URLParam. When these align, an unauthenticated (PR:N) remote request to the mounted path has its routing context mutated by the preflight Match so the public handler runs with the retained tenant parameter, skipping the mounted auth middleware. LIMITING FACTORS: the attack requirement (AT:P) is substantial - an outer route that independently enforces authorization, or an absence of a colliding public suffix handler, eliminates the impact (the advisory's mounted-only control returns 404, not a bypass); impact is confined to disclosure of tenant-scoped read data. Runtime confirmation exists only for v5.4.0. |
| Impact | Signals are mixed and point to a conditional, medium-severity authentication bypass rather than a broad emergency. The supplied CVSS 4.0 base score is 6.3 (medium) with vector AV:N/AC:L/AT:P/PR:N/UI:N and only limited confidentiality impact (VC:L, VI:N, VA:N, no subsequent-system impact), which aligns with the mechanism: an unauthenticated network request can reach an outer public handler and read tenant-scoped data, but cannot modify or deny it. The SSVC-style decision label supplied is 'this_month' (not act_now/emergency), consistent with a real but non-urgent priority. No EPSS probability was provided in the input, so widespread-exploitation likelihood cannot be quantified from this data. The CVE is NOT listed in CISA KEV and there is no claim of active exploitation; however, a working proof-of-concept reproduction (an httptest harness with observed output) is published in the go-chi GHSA advisory for v5.4.0, so exploit knowledge is public. The AT:P metric (attack requirements present) is the key honest caveat: exploitation is not against arbitrary chi deployments - it requires a specific routing collision plus an outer public handler that reuses a tenant-aware handler trusting the retained mount parameter. The advisory itself states that an outer route independently enforcing authorization would not be impacted. Net: a genuine authentication-bypass bug in a very widely used Go router, but real-world risk is gated by application-specific configuration, so this is a medium priority to patch promptly rather than a high-CVSS, mass-exploitable crisis. |
| Exploit ScenarioDerived | A multi-tenant Go service built on chi mounts an authenticated subrouter at /{tenant}/data/{id} and also exposes a public /data/{id} route backed by the same tenant-aware handler, with middleware.SupressNotFound enabled on the outer router. An unauthenticated attacker requests /acme/data/42; the SupressNotFound preflight Match mutates the live routing context so the outer public handler runs while retaining tenant=acme, returning acme's tenant-scoped resource without any token. A published working reproduction in the GHSA advisory demonstrates exactly this (401 becomes 200 once SupressNotFound is enabled), verified against chi v5.4.0. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Authentication bypass in go-chi chi through 5.4.0 lets an unauthenticated remote request reach an outer public route instead of an authenticated mounted subrouter when middleware.SupressNotFound is enabled, the mounted path suffix collides with an explicit outer public route, and that outer handler trusts the retained tenant mount parameter. The issue is CWE-288 and the fixed release is 5.5.0. The upstream advisory includes a reproduction harness against v5.4.0; no CISA KEV confirmation is provided, and the assessed CVSS 3.1 vector is AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:N/A:N, reflecting the substantial application-specific prerequisites.
RemediationAI
Upgrade to go-chi chi v5.5.0, the fixed release identified in the package data; the GHSA (https://github.com/go-chi/chi/security/advisories/GHSA-rqrp-8cg2-5958) and VulnCheck advisory (https://www.vulncheck.com/advisories/go-chi-chi-before-5.5.0-authentication-bypass-via-supressnotfound-middleware) are the supplied references. The supplied data does not list a separate vendor workaround. If upgrade is not immediate, review whether the application meets the documented prerequisites: middleware.SupressNotFound enabled on the outer router, an authenticated mounted subrouter path suffix that collides with an explicit outer public route, and an outer public handler that trusts the retained mount parameter via Request.PathValue or chi.URLParam. The advisory states an outer route that independently enforces authorization would not have the demonstrated impact; disabling SupressNotFound removes the preflight Match behavior but changes the middleware's 404-suppression semantics; removing the suffix collision or adding independent authorization to the outer handler addresses the demonstrated path but may alter public endpoint behavior. These are configuration-specific compensating measures, not a substitute for the 5.5.0 upgrade.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
go-chi chi is a lightweight Go HTTP router. middleware.SupressNotFound is intended to suppress 404 responses; in the affected versions it retrieves the live chi.RouteContext and calls Match, which is documented to mutate that context. When the preflight match descends into a mounted subrouter, the mount parameter remains in URLParams and the child suffix is placed in RoutePath; the subsequent dispatch uses the changed path against the outer router. If an outer public route has the same suffix, its handler runs and the mounted child's authentication middleware is skipped, and the retained tenant parameter can be read via Request.PathValue or chi.URLParam. This is CWE-288, an alternate path/channel authentication bypass. Runtime confirmation is for v5.4.0; the same SupressNotFound implementation was found by source comparison in v5.0.12, v5.1.0, v5.2.0, and v5.3.0, though those older versions were not run. The assessed impact is limited to disclosure of tenant-scoped read data; an outer handler that independently enforces authorization, or the absence of a colliding public suffix route, eliminates the demonstrated impact.
Know when Go gets its next vulnerability
- 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
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
Unauthenticated network request (PR:N/AV:N/UI:N) but requires a specific routing collision and shared tenant-aware public handler (AC:H); only tenant-scoped read disclosure, so C:L and I:N/A:N.
Primary rating from Vendor (vulncheck).
CVSS VectorVendor: vulncheck
Lifecycle Timeline
2DescriptionCVE.org
go-chi chi before 5.5.0 contains an authentication bypass in middleware.SupressNotFound, which calls Match with the live routing context and leaves a mounted router's parameter and child suffix in place for dispatch against the outer router. Unauthenticated attackers can request a mounted path whose suffix matches an outer public route, skipping the mounted authentication middleware and retrieving tenant-scoped data when that outer handler trusts the retained mount parameter.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there
Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu
net/url in Go before 1.11.13 and 1.12.x before 1.12.8 mishandles malformed hosts in URLs, leading to an authorization by
Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and
Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re
Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a
Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure
The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa
Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash
Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker
Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r
EUVD-2026-112387
GHSA-r83h-4mhv-9p8m
NVD
CVE.org
Exploit-DB