Skip to main content

kin-openapi EUVDEUVD-2026-102156

| CVE-2026-100347 MEDIUM
Improper Input Validation (CWE-20)
2026-10-15 GitHub_M GHSA-fh4f-47mf-f2gj
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Identify service using kin-openapi ValidationHandler
  2. Delivery
    Enumerate exact static paths in API
  3. Exploit
    Send requests with PROPFIND/lowercase methods
  4. Execution
    Trigger panic in GetOperation pre-auth
  5. Impact
    Repeat 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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

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

kin-openapi < 0.145.0

Affected Packages

go github.com/getkin/kin-openapi fix: 0.145.0
euvd kin_openapi fix: 0.145.0

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

Vendor (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 5.3 MEDIUM

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

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N
Red Hat 5.3 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Oct 15, 2026 - 17:17 EUVD

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

EPSS Score
0.5%
Top 57% exploitable
Prevalence
Medium
popular Go OpenAPI validation library, but a dependency, not everywhere
Threat Intel
1
1 sources
Social Media
1
Sightings
Data Quality
5 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub

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 0.5%
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
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

More in Go

View all
CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2016-5386 HIGH
8.1 Jul 19

The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there

CVE-2025-68121 CRITICAL POC
10.0 Feb 05

Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu

CVE-2019-14809 CRITICAL POC
9.8 Aug 13

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

CVE-2026-90942 CRITICAL POC
9.3 Sep 14

Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and

CVE-2026-101090 CRITICAL POC
9.3 Sep 27

Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re

CVE-2026-78428 HIGH POC
8.8 Sep 17

Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a

CVE-2026-92791 HIGH POC
8.7 Sep 16

Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure

CVE-2018-7187 HIGH POC
8.8 Feb 16

The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa

CVE-2026-16651 HIGH POC
8.7 Sep 21

Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash

CVE-2026-82405 HIGH POC
8.7 Sep 23

Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker

CVE-2026-82409 HIGH POC
8.4 Sep 23

Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r

Vendor StatusVendor

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