Skip to main content

kin-openapi EUVDEUVD-2026-102143

| CVE-2026-97394 HIGH
Uncaught Exception (CWE-248)
2026-10-15 GitHub_M GHSA-p6wj-qrr4-pgh5
7.5
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Identify operation with 3.1 array-no-items schema
  2. Delivery
    Send nonempty form/multipart request
  3. Exploit
    Decoder dereferences nil Schema.Items
  4. Execution
    nil-pointer panic in ValidateRequest
  5. Impact
    Service crash / denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
Exploitation Conditions

Exploitation requires the target to run kin-openapi 0.136.0 through 0.142.x AND to serve an OpenAPI 3.1 document that declares a type: array schema without an items keyword on an affected surface: an application/x-www-form-urlencoded or multipart/form-data request body, a response header, or other array parameter. The attacker then needs only a single nonempty request (or, for ValidateResponse, a matching response) reaching that operation - no authentication (PR:N) and no user interaction (UI:N). Limiting factors: OpenAPI 3.0 documents are explicitly unaffected because document validation rejects arrays without items; JSON request bodies use a different decoder and are not affected; and the vulnerable schema shape must actually be present in the deployed spec, so services using only well-formed 3.1 schemas or 3.0 specs are not exposed.

Impact

This is a genuine but bounded availability risk. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) describes a remote, unauthenticated, low-complexity denial of service with no confidentiality or integrity impact - consistent with CWE-248 (uncaught exception) and the described nil-pointer panic. No EPSS score, KEV listing, or public exploit was provided in the input, so there is no public exploit identified at time of analysis; the GitHub commit contains only the vendor's regression test, which is NOT a weaponized proof-of-concept. The key limiting factor is a deployment precondition not captured by the base CVSS: the vulnerability only triggers when the target server serves an OpenAPI 3.1 document containing a type: array schema with no items keyword on an affected surface, and validation (ValidateRequest/ValidateResponse) runs against it. The supplied 'Information Disclosure' tag conflicts with the CVSS vector (C:N/I:N, A:H) - this is an availability/DoS issue, not information disclosure, and the tag appears mislabeled. Net: treat as a real but conditional DoS priority for Go services embedding affected kin-openapi versions with 3.1 specs; lower urgency where only OpenAPI 3.0 docs or JSON-only bodies are used, since those code paths are explicitly stated as unaffected.

Exploit ScenarioDerived

A Go backend uses kin-openapi (0.136.0-0.142.x) with an OpenAPI 3.1 spec that declares an array schema without items on a form/multipart request body or array parameter. A remote unauthenticated attacker sends a single nonempty request to that operation; during ValidateRequest the decoder dereferences the nil Schema.Items, panicking and crashing the handler/service. No public weaponized exploit is identified at time of analysis, though the trigger is deterministic and trivial to reproduce from the public description.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 15, 2026

A nil-pointer panic in kin-openapi's openapi3filter validation path can crash any Go service that embeds versions 0.136.0 through 0.142.x and serves an OpenAPI 3.1 document with an array schema that omits the items keyword. Unauthenticated remote clients (CVSS vector PR:N/UI:N) only need to send a single nonempty application/x-www-form-urlencoded or multipart/form-data request to an affected operation - or trigger a matching response on a surface such as a response header - to deterministically panic ValidateRequest or ValidateResponse, producing denial of service with no confidentiality or integrity impact (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, CVSS 7.5). The risk is real but bounded: only OpenAPI 3.1 specs containing the specific malformed-but-spec-legal array shape are exposed, JSON request bodies use a different decoder, and OpenAPI 3.0 documents are rejected at validation time. No public exploit code has been identified at time of analysis, and there is no confirmed active exploitation.

RemediationAI

Vendor-released patch: upgrade kin-openapi to 0.143.0, which adds nil checks to the vulnerable decoders and returns a clean validation error rather than panicking; the fix is carried in commit 30e292371a89ca6d1f91a9553e0aa518b49f838d and released as tag v0.143.0 (https://github.com/getkin/kin-openapi/releases/tag/v0.143.0), with the advisory at https://github.com/getkin/kin-openapi/security/advisories/GHSA-p6wj-qrr4-pgh5. If an immediate dependency bump is not possible, the most effective compensating control is to repair the deployed specification rather than the code: add an explicit items keyword to every array schema in any OpenAPI 3.1 document served or loaded by the application, which removes the nil pointer entirely and costs nothing functionally since 3.1 array schemas on the affected surfaces are already being treated as untyped by the failing decoder. A secondary mitigation is to pin the module to the last unaffected line (0.135.x) if no 3.1 array-without-items schemas are needed. Two narrower alternatives carry trade-offs: rejecting or downgrading loaded documents to OpenAPI 3.0 removes the vulnerable 3.1 code path but forfeits 3.1-only features and may break otherwise valid specs, while wrapping HTTP handlers in panic-recovery middleware (or a recover around ValidateRequest/ValidateResponse) keeps the process alive but only converts a crash into a per-request 500 error - it masks other latent panics and does not fix the root cause, so it should be treated as a stopgap only. Because only unauthenticated remote requests are needed, also consider rate limiting and upstream request filtering as damage limitation until 0.143.0 is deployed.

Affected VersionsENISA

kin-openapi 0.136.0, < 0.143.0

Affected Packages

go github.com/getkin/kin-openapi fix: 0.143.0
euvd kin_openapi fix: 0.143.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

The issue is an improper nil pointer dereference (CWE-248) inside openapi3filter, the request/response validation component of the getkin/kin-openapi Go library (CPE cpe:2.3:a:getkin:kin-openapi). OpenAPI 3.1 aligns its Schema Object with JSON Schema 2020-12, under which type: array without an items keyword is legal, so doc.Validate() accepts such a document and leaves Schema.Items as nil. The library's decoders for application/x-www-form-urlencoded and multipart/form-data request bodies, for response headers, and for other array parameter surfaces then dereference Schema.Items without a nil guard, panicking as soon as a nonempty value reaches the affected schema. Two structural factors narrow exposure: OpenAPI 3.0 documents are unaffected because their stricter validation rejects arrays that omit items, and JSON request bodies are decoded through a separate code path that does not touch the vulnerable code. The accompanying upstream test suite (array_items_nil_panic_test.go) confirms the intended fixed behavior - returning a clean error containing "array items required" instead of panicking - and demonstrates the 3.1 no-items schema is still spec-legal and accepted by Validate. Note that intelligence tags label this entry "Information Disclosure", which is inconsistent with the assessed availability-only impact; no disclosure primitive is described in the advisory, commit, or assessment.

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 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Remote unauthenticated client deterministically triggers a panic with a single request, so AV:N/AC:L/PR:N/UI:N; only a crash results, so C:N/I:N/A:H.

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

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
High

Lifecycle Timeline

2
Patch available
Oct 15, 2026 - 17:17 EUVD
CVE Published
Oct 15, 2026 - 15:29 cve.org
HIGH 7.5

DescriptionCVE.org

kin-openapi is a Go project for handling OpenAPI files. From 0.136.0 until 0.143.0, openapi3filter accepts OpenAPI 3.1 array schemas without an items keyword and then dereferences the nil Schema.Items value while decoding application/x-www-form-urlencoded or multipart/form-data request bodies, response headers, and other array parameter surfaces. A remote unauthenticated client can reach an affected operation with a nonempty request or matching response and deterministically trigger a nil-pointer panic during ValidateRequest or ValidateResponse. OpenAPI 3.0 documents are not affected because document validation rejects arrays without items, and JSON request bodies use a different decoder path. This issue is fixed in version 0.143.0.

Technical POC Analysis

PoC status: a full, verified PoC is present in the advisory (spec, end-to-end main.go, and a regression test suite), so everything below is grounded in observed behaviour, not inference.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Go-based services that embed the kin-openapi library, versions 0.136.0 through 0.142.x, can be knocked offline by a single unauthenticated form-encoded request whenever they serve an OpenAPI 3.1 document containing an array schema that omits the items keyword. No vendor patch is available, so exposure is limited to 3.1-spec services with that specific schema shape, but any affected endpoint can be crashed repeatedly by an unauthenticated remote client, producing a denial-of-service condition that affects availability only. Leadership should care because remediation depends on our own specification and dependency changes rather than a vendor fix, and internet-facing APIs built on this framework may be unavailable until those changes are made.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: correct the OpenAPI 3.1 documents by adding an explicit items keyword to any array schema missing it; restrict or disable affected operations and fall back to OpenAPI 3.0 validation where possible; add panic-recovery middleware and process supervision with automatic restart; apply edge rate limiting and request-size limits; and monitor upstream kin-openapi releases for a fixed version to deploy.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
Medium
popular Go OpenAPI validation library, widely used but not ubiquitous infrastructure
Threat Intel
1
1 source
Data Quality
4 sources
Confidence: Medium

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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Yes
Human Impact
High

Priority Score

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

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

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

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