Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify API using kin-openapi validation
-
DeliverySend crafted array/deepObject/urlencoded request
-
ExploitDecoder passes nil items schema
-
ExecutionNil-pointer dereference panics goroutine
-
ImpactRequest handler or process crashes (DoS)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the target application (1) uses kin-openapi version 0.136.0 through 0.148.x with openapi3filter request validation enabled, and (2) serves an OpenAPI 3.1 spec that declares an array schema WITHOUT an items definition in one of three specific locations: an array-typed query parameter, a deepObject query parameter whose object contains an array property, or an application/x-www-form-urlencoded request body whose array property sits inside an allOf, anyOf, or oneOf subschema. If none of the application's routes expose such a nil-items array schema, the vulnerable parseArray/buildResObj paths are never reached and the service is not exploitable. No authentication or user interaction is needed once a qualifying endpoint exists (PR:N/UI:N), but the victim-side spec shape is the key limiting factor that narrows real-world exposure well below what the 7.5 score implies. |
| Impact | This is a genuine but bounded availability-only issue. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) accurately reflects a remotely reachable, unauthenticated, low-complexity denial of service with no confidentiality or integrity impact - the A:H is the sole driver of the HIGH score. Exploitation status is 'no public exploit identified at time of analysis': the commit ships regression tests that demonstrate the panic, but these are maintainer fix-verification tests, not a weaponized public exploit, and must NOT be conflated with a POC or active exploitation. No EPSS score was provided in the input and the CVE is not on CISA KEV, so there is no signal of in-the-wild use; this reads as a classic high-CVSS-but-DoS-only library bug rather than a top-tier emergency. The one important nuance is that reachability is conditional on the victim application's own OpenAPI spec containing a nil-items array schema in specific locations (see exploitation_conditions) - the CVSS AC:L captures attacker effort but understates this victim-side precondition, so real-world exposure is narrower than the 7.5 alone suggests. No conflicting signals in the data, but EPSS and POC status are simply absent rather than confirmed negative. |
| Exploit ScenarioDerived | A service built on kin-openapi uses openapi3filter to validate incoming requests against an OpenAPI 3.1 spec that defines an array (query parameter, deepObject array property, or urlencoded body array inside allOf/anyOf/oneOf) without an items schema. An unauthenticated remote attacker sends a single crafted request hitting that parameter, causing parseArray or buildResObj to dereference a nil items schema and panic, crashing the request handler or process. The panic is deterministic, so repeating it keeps the service down; no authentication or user interaction is required and no POC is publicly published. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
Nil-pointer dereference in kin-openapi 0.136.0 through 0.148.x lets an unauthenticated remote client reliably panic Go applications that run openapi3filter request validation against an OpenAPI 3.1 spec declaring an array schema without an items definition. Three decoder paths are affected: a plain array query parameter, a deepObject query parameter whose object contains an array property, and an application/x-www-form-urlencoded body whose array property appears inside an allOf, anyOf, or oneOf subschema - each passes a nil items schema into urlValuesDecoder.parseArray or buildResObj, which dereferences it. Impact is availability-only (CVSS 7.5, CWE-476), exploitation is conditional on the target application actually exposing such a nil-items array schema on a validated route, and no public exploit code or CISA KEV entry is identified at time of analysis; the vendor fixed the issue in 0.149.0.
RemediationAI
Vendor-released patch: 0.149.0 - upgrade with go get github.com/getkin/kin-openapi@v0.149.0 (or github.com/getkin/kin-openapi@latest) and rebuild; the release adds nil-items guards in urlValuesDecoder.DecodeArray and buildResObj plus regression tests (commit 9814d1f2b212f3508bf52296aa9e248b2122a5a9, advisory https://github.com/getkin/kin-openapi/security/advisories/GHSA-vrcc-3ch7-hppw). If you cannot upgrade immediately, the highest-value compensating control is spec-shape remediation: audit every OpenAPI 3.1 document served by the application and add an explicit items schema to any type: array definition reachable through query parameters, deepObject properties, or urlencoded request bodies, including those nested in allOf/anyOf/oneOf - this is fully effective because the vulnerable code is only reached when items is nil, but it fails if any third-party or dynamically generated spec is outside your control. As a secondary control, disable openapi3filter request validation for the specific routes carrying such schemas, accepting the trade-off that you lose input validation on those endpoints (parameter type/format/enum enforcement, body schema checks), which can reintroduce injection or parsing bugs elsewhere. Third, wrapping the validation call site with a panic-recovery middleware (logging the panic and returning 400/503) or setting up a recover in your HTTP handler limits the blast radius of the panic; note that Go's net/http runtime already recovers handler goroutine panics and aborts the connection rather than terminating the process in typical deployments, so the practical effect is failed requests, log noise, and repeated-request availability degradation rather than a guaranteed full outage - recovery middleware still leaves the underlying defect in place and can mask unrelated bugs, so treat it as a stopgap only. There is no configuration flag that re-enables a nil-items check, so patching or spec correction is required.
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
The affected component is openapi3filter, the request/response validation engine of getkin/kin-openapi, a widely used Go library for parsing, validating, and routing OpenAPI documents. The root cause is CWE-476 (NULL Pointer Dereference): OpenAPI 3.1 permits a schema of type: array with no items keyword (unlike OAS 3.0, where items is effectively required), so such a document is legal and passes doc.Validate(). When a request is validated against that schema, the value decoders dereference schemaRef.Value.Items.Value without a nil check. The query-parameter and composed (allOf/anyOf/oneOf) urlencoded-body paths reach urlValuesDecoder.parseArray, while the deepObject query path reaches buildResObj; both assume a non-nil items schema. This is a follow-on gap to the earlier fix for GHSA-p6wj-qrr4-pgh5, which addressed sibling code paths such as response headers but missed these three request-side decoders. The fix commit 9814d1f2b212f3508bf52296aa9e248b2122a5a9 adds explicit guards (if schema.Value.Items nil || schema.Value.Items.Value nil) in both DecodeArray and buildResObj, returning a clean error / ParseError instead of panicking, and also introduces regression tests covering all three cases. Affected CPE scope is cpe:2.3:a:getkin:kin-openapi:*:*:*:*:*:*:*:*.
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:H
Remote unauthenticated single-request panic yields AV:N/AC:L/PR:N/UI:N; impact is availability-only (A:H) with no confidentiality or integrity effect, scope unchanged.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
kin-openapi is a Go project for handling OpenAPI files. From 0.136.0 until 0.149.0, three openapi3filter decoder paths that were missed by the fix for GHSA-p6wj-qrr4-pgh5 lack a nil-items guard for legal OpenAPI 3.1 array schemas. An unauthenticated remote client can trigger a deterministic nil-pointer panic through an array query parameter, a deepObject query parameter containing an array property, or an application/x-www-form-urlencoded request body whose array property appears inside an allOf, anyOf, or oneOf subschema. The query and composed-body paths reach urlValuesDecoder.parseArray, while the deepObject path reaches buildResObj, and all pass a nil items schema into code that dereferences it. This issue is fixed in version 0.149.0.
Technical POC Analysis
CWE-476 (NULL Pointer Dereference) in the Go module github.com/getkin/kin-openapi, package openapi3filter, file openapi3filter/reqrespdecoder.go.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A nil-pointer defect in the kin-openapi Go library (versions 0.136.0 through 0.148.x) can crash any service that validates inbound API traffic with the openapi3filter component, taking the affected endpoint and its host process offline until restart. Exposure is narrower than the library's overall install base: only applications whose OpenAPI 3.1 specification declares an array schema with no items definition on a validated route can be triggered, and no public exploit code or confirmed active exploitation is identified at this time. Leadership should care because the failure mode is low-effort, repeatable disruption of internet-facing APIs, and the fix is a library upgrade rather than a configuration change.
Apply vendor patch (upgrade to kin-openapi 0.149.0); interim, reject or normalize inbound requests that reach validated array schemas lacking an items definition and add panic/restart-loop monitoring on affected routes.
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
A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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-102163
GHSA-vrcc-3ch7-hppw
NVD
CVE.org
EPSS
Exploit-DB