CVE-2026-97394
HighCVSS 7.5Summary
kin-openapi, a Go project for handling OpenAPI files, in versions from 0.136.0 until 0.143.0 accepts OpenAPI 3.1 array schemas without an items keyword and then dereferences the nil Schema.Items value while decoding requests and responses. A remote unauthenticated client can deterministically trigger a nil-pointer panic during ValidateRequest or ValidateResponse.
Risk Assessment
An attacker can remotely crash the application, causing denial of service without authentication.
Recommendation
Update the kin-openapi library to version 0.143.0 or later.
Other vulnerabilities in kin-openapi
See all- CVE-2026-100353High
kin-openapi, a Go project for handling OpenAPI files, in versions from 0.136.0 until 0.149.0 lacks a nil-items guard for legal OpenAPI 3.1 array schemas in three openapi3filter decoder paths. An unauthenticated remote client can trigger a deterministic nil-pointer panic via an array query parameter, a deepObject query parameter, or an application/x-www-form-urlencoded request body.
- CVE-2026-100352High
In kin-openapi prior to 0.148.0, the OpenAPI 3.1 validation path passes YAML NaN and infinity numeric values to santhosh-tekuri/jsonschema v6.0.2 without applying kin-openapi's existing finite-number guards. A remote unauthenticated client can send an application/yaml or application/x-yaml request body containing .nan, .inf, or -.inf to an operation with a numeric constraint, causing the dependency to create and dereference a nil big.Rat during ValidateRequest.
- CVE-2026-100351High
In kin-openapi 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.
- CVE-2026-100348Medium
In kin-openapi prior to 0.145.0, openapi3.Loader can dereference a nil SchemaRef.Value while resolving a self-referential additionalProperties JSON Reference. Loading an attacker-controlled OpenAPI document through LoadFromData, LoadFromFile, or LoadFromURI reaches resolveComponent before document validation and can panic the loading process.
- CVE-2026-100347Medium
In kin-openapi 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.
- CVE-2026-73501Critical
kin-openapi is a Go project for handling OpenAPI files. Prior to 0.144.0, ValidationHandler.Load() silently replaces a nil AuthenticationFunc with NoopAuthenticationFunc, which returns nil without checking credentials. This substitution causes every OpenAPI security requirement to be satisfied for unauthenticated requests when an application relies on ValidationHandler as its enforcement middleware. The no-op callback prevents the fail-closed ErrAuthenticationServiceMissing path from being reached and forwards the request to protected handlers that may require an API key, OAuth token, or another security scheme.
- CVE-2026-100354High
kin-openapi, a Go project for handling OpenAPI files, prior to 0.149.0 lacks cycle detection when an allOf, anyOf, or oneOf chain refers back to an ancestor schema during runtime request and response validation. This causes unbounded recursion and a fatal stack overflow that terminates the entire process and cannot be caught with recover.
- CVE-2026-100350Medium
In kin-openapi from 0.145.0 until 0.146.0, openapi3filter repeatedly calls regexp.MustCompile for the same parameter-name regular expression inside the per-query-key loop in urlValuesDecoder.DecodeObject. An unauthenticated remote client can send a request with many unrelated query keys, causing resource consumption proportional to the attacker-controlled key count. This is not regular expression denial of service; the consumption comes from loop-invariant recompilation.
- CVE-2026-100349High
In kin-openapi prior to 0.146.0, openapi3filter.ValidateResponse passes a nil response header schema to decodeValue when an OpenAPI document declares the header with content instead of schema. The document passes validation, but every response validation for the affected operation dereferences the nil schema and panics even when the response does not contain the declared header.
- CVE-2026-77354High
kin-openapi versions 0.124.0 through 0.142.0 have a DoS vulnerability. The sliceMapToSlice function converts attacker-controlled indexes from a deepObject parameter into a dense slice, which can lead to multi-gigabyte heap allocation and cause OOM kill or restart loop.
Original NVD description (English source)
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.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

