Skip to main content

kin-openapi EUVDEUVD-2026-102151

| CVE-2026-100348 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-10-15 GitHub_M GHSA-mh7x-f8wq-4jhx
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 endpoint that loads user-supplied OpenAPI docs
  2. Delivery
    Craft spec with self-referential additionalProperties $ref
  3. Exploit
    Submit document to LoadFromData/File/URI
  4. Execution
    Loader dereferences nil SchemaRef.Value in resolveComponent
  5. Impact
    Panic crashes loading process (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 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

The host application must load an attacker-controlled OpenAPI document via kin-openapi's LoadFromData, LoadFromFile, or LoadFromURI, and that document must contain a self-referential additionalProperties JSON Reference - a schema whose $ref points to its own additionalProperties member (e.g. A: {$ref: '#/components/schemas/A/additionalProperties'}). The nil SchemaRef.Value dereference occurs inside resolveComponent BEFORE doc.Validate runs, so input validation does not block it. Limiting factors: exposure exists only in applications that accept and load untrusted/attacker-supplied specs - deployments that load only trusted, static OpenAPI files are not affected; already-resolved additionalProperties schemas and ordinary recursive schemas do not reach the vulnerable path; and only versions prior to 0.145.0 are affected. No authentication is required (PR:N) once such an input path is reachable.

Impact

This is a moderate-severity availability issue, not a top-tier priority. The provided CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, score 5.3) is consistent with the description: a remote, unauthenticated, low-complexity trigger with impact limited strictly to availability (C:N/I:N) via a nil-pointer panic (CWE-476). No EPSS score, no CISA KEV listing, and no SSVC decision data were supplied in the input, so exploitation probability and automatability cannot be quantified from the data given. A public reproducer exists in the fix commit (a 27-line test with a minimal triggering spec), which lowers the skill barrier, but a reproducer is not evidence of active exploitation and must not be conflated with it. The real-world risk is sharply gated by deployment context: this is a Go library, not a standalone service, so impact only materializes in applications that load attacker-controlled OpenAPI documents through LoadFromData/LoadFromFile/LoadFromURI. Where that pattern exists, an attacker can crash the loading goroutine/process with a tiny crafted document and no authentication; where specs are trusted and static, exposure is effectively nil. Net: a legitimate but context-dependent DoS to patch on a normal cycle, not an emergency.

Exploit ScenarioDerived

An application uses kin-openapi (prior to 0.145.0) to load and parse user-submitted OpenAPI specifications - for example an API gateway, spec validator, or SaaS import feature. An attacker uploads a crafted OpenAPI document containing a schema whose $ref points to its own additionalProperties member (e.g. '#/components/schemas/A/additionalProperties'), and the loader dereferences a nil SchemaRef.Value in resolveComponent before validation runs, panicking the process. A public reproducer (minimal spec) is present in the fix commit, making the trigger trivial to construct.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 dereference in kin-openapi versions prior to 0.145.0 lets a crafted OpenAPI document panic the loader, denying service to any host application that parses untrusted specs. Trigerring it requires only a self-referential additionalProperties JSON Reference - a schema whose $ref targets its own additionalProperties member - which is dereferenced inside Loader.resolveComponent before document validation runs, so doc.Validate cannot block it (CVSS 3.1: 5.3, AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, CWE-476). There is no public exploit identified at time of analysis and no confirmed active exploitation (CISA KEV); exposure is limited to services that accept attacker-supplied OpenAPI documents, and patched version 0.145.0 is available.

RemediationAI

Vendor-released patch: 0.145.0 - upgrade the kin-openapi dependency to v0.145.0 (https://github.com/getkin/kin-openapi/releases/tag/v0.145.0), which adds the missing nil check from commit 88aa64c7cbd03ecadbb419c473bdcaa8b0124c6b; the module should be pinned via 'go get github.com/getkin/kin-openapi@v0.145.0' and any vendored forks must receive the same one-line guard manually since the upstream fix is not backported to older tags. Per the vendor advisory (https://github.com/getkin/kin-openapi/security/advisories/GHSA-mh7x-f8wq-4jhx), where immediate upgrade is not possible, the highest-fidelity control is to stop loading attacker-supplied specs entirely - restrict LoadFromData/LoadFromFile/LoadFromURI to repository-controlled or allow-listed documents, which fully removes the attack surface at the cost of any user-facing 'import your OpenAPI spec' feature. If untrusted specs must still be accepted, isolate parsing in a separate process or sandbox with restart supervision so a panic kills only the parser, or wrap the load call in a deferred recover() in Go; the trade-off is that recover() masks unrelated panics and the isolation model adds latency and operational complexity. Pre-scanning incoming documents for $ref values that resolve into their own additionalProperties member would also block the known trigger, but is a signature-level filter that may be bypassed by future variants, so it should be treated as a stopgap rather than a substitute for upgrading. Relying on doc.Validate is not a mitigation, because the dereference occurs in resolveComponent before validation ever executes.

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 Go library for parsing, validating and manipulating OpenAPI 2.0/3.x documents; the affected component is the openapi3.Loader, whose reference-resolution pass runs before validation. When the loader resolves a $ref such as '#/components/schemas/A/additionalProperties', resolveComponent walks the referenced schema's AdditionalProperties field to continue the cursor; in versions before 0.145.0 the code dereferenced c.Value.AdditionalProperties without first checking that the containing SchemaRef's Value was non-nil. Because the referenced component has not been resolved yet at that point, SchemaRef.Value is nil and the dereference panics, terminating the loading goroutine. The root-cause class is CWE-476 (NULL Pointer Dereference), and the upstream fix (commit 88aa64c7cbd03ecadbb419c473bdcaa8b0124c6b) simply guards the access with a nil check on the schema value before reading AdditionalProperties, so the reference instead surfaces as an ordinary 'found unresolved ref' validation error. Notably, the vulnerable path is narrow: only self-referential additionalProperties references reach it, while already-resolved additionalProperties schemas and ordinary recursive schemas (for example a schema referencing itself directly) do not, and the resolver runs ahead of doc.Validate, so input validation cannot intercept the malformed document first. The CPE cpe:2.3:a:getkin:kin-openapi:*:*:*:*:*:*:*:* reflects that the flaw applies across the library's release history up to the fixed 0.145.0 tag, and a regression test (openapi3/ghsa_mh7x_f8wq_4jhx_test.go) was added alongside the patch.

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 attacker-supplied document triggers the panic with no auth or interaction (AV:N/AC:L/PR:N/UI:N); impact is a confined loading-process crash, so availability-only and A:L with C:N/I:N.

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

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, openapi3.Loader can dereference a nil SchemaRef.Value while resolving a self-referential additionalProperties JSON Reference such as a schema that points to its own additionalProperties member. Loading an attacker-controlled OpenAPI document through LoadFromData, LoadFromFile, or LoadFromURI reaches resolveComponent before document validation and can panic the loading process. Resolved additionalProperties schemas and ordinary recursive schemas do not take the vulnerable nil-value path. This issue is fixed in version 0.145.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 70% exploitable
Prevalence
Medium
popular Go OpenAPI library, but embedded dependency not ubiquitous infrastructure
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
5 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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

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.

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