Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify service using kin-openapi ValidationHandler
-
DeliveryEnumerate exact static paths in API
-
ExploitSend requests with PROPFIND/lowercase methods
-
ExecutionTrigger panic in GetOperation pre-auth
-
ImpactRepeat to abort connections and grow stack-trace logs
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | The target service must use kin-openapi's openapi3filter.ValidationHandler backed by the routers/legacy router, and its OpenAPI spec must contain at least one exact static path (a path matched only by a templated/parameterized route does NOT reach the vulnerable sink). The attacker then sends an unsupported or non-canonical HTTP method (e.g. PROPFIND, or lowercase 'get') to that static path; the panic fires in PathItem.GetOperation before authentication, so no credentials are required (PR:N). Limiting factors: impact is bounded to per-connection aborts and stack-trace log growth rather than a full process crash (Go recovers per-request panics by default), affected versions are prior to 0.145.0, and services not using the legacy-router ValidationHandler path or lacking static paths are not exposed. |
| Impact | This is a genuinely low-to-moderate priority issue despite the unauthenticated remote attack surface. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, base 5.3) is internally consistent with the description: a remote, unauthenticated client can trigger the condition with low complexity, and the only impact is a limited availability hit (C:N/I:N, A:L). There is no EPSS score, no CISA KEV listing, and no public exploit code referenced in the provided data - exploitation status is therefore 'no public exploit identified at time of analysis.' Crucially, the real-world impact is constrained: a Go net/http server recovers per-request panics by default, so this aborts the individual connection and inflates stack-trace logs rather than crashing the whole service, which matches A:L rather than A:H. The practical risk is disk/log exhaustion and noise under sustained abuse, not a service-wide outage, and it only applies to deployments that use openapi3filter.ValidationHandler backed by the legacy router with at least one exact static path. No key signals conflict here; the main unknown is how many downstream services actually wire up the vulnerable handler/router combination. |
| Exploit ScenarioDerived | An unauthenticated attacker repeatedly sends HTTP requests using unsupported or non-canonical methods (e.g. PROPFIND, or lowercase 'get') against an exact static path that exists in the OpenAPI spec of a service using kin-openapi's openapi3filter.ValidationHandler with the legacy router. Each request triggers a panic in PathItem.GetOperation before authentication runs, aborting the connection and writing a full stack trace to logs; sustained requests grow logs and add CPU/IO noise. No public proof-of-concept is referenced in the provided data. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Unsupported or non-canonical HTTP methods sent to Go services built on kin-openapi's openapi3filter.ValidationHandler with the legacy router reach a panic in PathItem.GetOperation before authentication runs, letting an unauthenticated remote client repeatedly abort connections and inflate stack-trace logs in all versions prior to 0.145.0. The access vector is network-only with no privileges or user interaction required (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L), but the effect is bounded: Go recovers per-request panics by default, so the worst case is per-connection denial of service and log growth rather than a full process crash, and the panic requires an exactly-matched static path (a path served only by a templated route does not reach the same sink). No public exploit code was identified at time of analysis, and CISA KEV does not list this issue as confirmed actively exploited.
RemediationAI
Upgrade to the vendor-released patch: kin-openapi 0.145.0 (tag https://github.com/getkin/kin-openapi/releases/tag/v0.145.0, commit https://github.com/getkin/kin-openapi/commit/f1a5b523b82868d2d9be2e116b4e942892be72c3), which replaces the panic in PathItem.GetOperation with a nil return and has the gorillamux router surface routers.ErrMethodNotAllowed; ecosystem consumers should bump the module and rebuild, then confirm the advisory GHSA-fh4f-47mf-f2gj is resolved in go.sum/vendor metadata. Where upgrading is not immediately possible, the most direct compensating control is to normalize and restrict the HTTP method before it reaches the handler: put a reverse proxy or middleware rule in front of the service that rejects any method outside the canonical set defined in the OpenAPI document (blocking PROPFIND, lowercase variants, and other extended verbs). The trade-off is that legitimate WebDAV or custom-method traffic sharing the same listener will also be blocked or must be allow-listed per route, so scope the rule to the affected static paths. Operators can additionally rate-limit and cap request logging on those paths to blunt the connection-abort and stack-trace log-growth effects, and should note that Go's default per-request panic recovery already contains the failure to the individual request rather than the whole process. Migrating ValidationHandler off the routers/legacy router to a maintained router implementation reduces the exposed sink but is not a substitute for the 0.145.0 upgrade. Monitor application logs for repeated "unsupported HTTP method" stack traces as an exploitation indicator.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 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
kin-openapi is a widely embedded Go library for parsing, validating, and routing OpenAPI 2.0/3.x documents. When applications wire ValidationHandler through the routers/legacy router, an incoming request is matched to a PathItem and then dispatched via PathItem.GetOperation(method). In versions before 0.145.0, GetOperation handled only a fixed set of canonical method strings and its default branch executed panic(fmt.Errorf("unsupported HTTP method %q", method)) in both openapi3/path_item.go and openapi2/path_item.go. Because the router passes the raw, non-canonicalized method through, a request such as PROPFIND or lowercase 'get' to an existing static path lands in that default branch and panics. This is a classic CWE-20 improper input validation defect: externally supplied input (the HTTP method token) is not normalized or constrained before being used as a dispatch key. The upstream fix (commit f1a5b523b82868d2d9be2e116b4e942892be72c3, released in v0.145.0) changes the default branch to return nil and updates routers/gorillamux/router.go to translate a nil operation into routers.ErrMethodNotAllowed, so unsupported methods now yield a clean error instead of a panic. Note the two compounding conditions: the vulnerable sink is only reached through the legacy-router ValidationHandler path, and only for a path that the spec declares exactly (templated/parameterized matches do not resolve to the same static PathItem).
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
Remote unauthenticated requests with trivial crafted methods (AV:N/AC:L/PR:N/UI:N); no data exposure (C:N/I:N) and only limited availability impact from connection aborts and log growth (A:L).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
kin-openapi is a Go project for handling OpenAPI files. Prior to 0.145.0, openapi3filter.ValidationHandler uses the routers/legacy router, which passes an unsupported or non-canonical HTTP method for an existing static path to openapi3.PathItem.GetOperation. The default branch of GetOperation panics before authentication runs, so an unauthenticated remote client can repeatedly send methods such as PROPFIND or lowercase get to abort connections and generate stack-trace log growth. The specific panic requires an exact static path; a concrete path matched only by a templated route does not reach the same sink. This issue is fixed in version 0.145.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
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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-102156
GHSA-fh4f-47mf-f2gj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB