Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify endpoint that loads user-supplied OpenAPI docs
-
DeliveryCraft spec with self-referential additionalProperties $ref
-
ExploitSubmit document to LoadFromData/File/URI
-
ExecutionLoader dereferences nil SchemaRef.Value in resolveComponent
-
ImpactPanic 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
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.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.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
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-102151
GHSA-mh7x-f8wq-4jhx
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB