CVE-2026-100351
7.4HighPublished 15 Oct 2026 · NVD status: Deferred · AI triage by gemini-3.8-flash
- Attack vector
- Network
- Complexity
- High
- Privileges needed
- None
- User interaction
- None
- Impact
- High impact on confidentiality, integrity
- Weakness
- CWE-289, CWE-436
Impact
Unauthenticated remote attackers can bypass authentication and access protected endpoints that overlap with public routes. They only need network access to send requests with encoded path separators to affected APIs.
Root cause
openapi3filter.ValidationHandler validates routes against decoded URL.Path, while a downstream gorilla/mux router configured with UseEncodedPath routes based on URL.RawPath, causing an authentication validation mismatch.
Affected systems
kin-openapi 0.144.0 through versions prior to 0.147.0
CVSS v3.1 · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Fix & remediation
Upgrade kin-openapi to version 0.147.0. If upgrading immediately is not possible, ensure reverse proxies canonicalize URIs before forwarding or avoid using UseEncodedPath in gorilla/mux.
$ go get github.com/getkin/kin-openapi@v0.147.0 && go mod tidyAI-suggested. Run it in staging first and check it against the vendor advisory. Why?
NVD description
kin-openapi is a Go project for handling OpenAPI files. From 0.144.0 until 0.147.0, openapi3filter.ValidationHandler validates an operation selected from decoded URL.Path while a downstream gorilla/mux router configured with UseEncodedPath can dispatch a different operation selected from URL.RawPath. When a public exact route and a protected parameterized route use the same method and overlap after decoding, an unauthenticated remote request containing an encoded path separator can be validated as public and then dispatched to the protected handler without invoking the configured AuthenticationFunc. The reachable path parameter is constrained to an encoded representation that decodes to the public literal route, and proxies that canonicalize the URI before forwarding prevent this specific mismatch. This issue is fixed in version 0.147.0.