Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach endpoint validating deepObject param
-
DeliverySend request with many query keys
-
ExploitForce per-key regex recompilation
-
ExecutionExhaust CPU and memory
-
ImpactDegrade service availability
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
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 the target application to invoke openapi3filter.ValidateRequest and to define at least one query parameter using the deepObject serialization style in its OpenAPI schema; the vulnerable code path (urlValuesDecoder.DecodeObject) only runs for such parameters. The library version must be between 0.145.0 and 0.146.0. No authentication or user interaction is needed (PR:N/UI:N), but effective impact scales with the attacker's ability to send large numbers of query keys and sustain request volume, and is limited by any upstream request-size limits, rate limiting, or WAF query-parameter caps in front of the service. |
| Impact | This is a genuine but modest-severity denial-of-service issue (CWE-400) rather than a high-priority emergency. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L, base 5.3) is internally consistent with the description: an unauthenticated network attacker can trigger CPU/allocation work proportional to the number of attacker-supplied query keys because regexp.MustCompile was called loop-invariantly inside the per-query-key loop of urlValuesDecoder.DecodeObject. Impact is correctly scoped to availability-only (C:N/I:N) and rated Low (A:L) because this is amplified resource consumption, not a full crash or guaranteed outage - the author explicitly notes it is NOT ReDoS. No EPSS score, no CISA KEV entry, and no public exploit were provided, so exploitation signals are weak: no public exploit identified at time of analysis. The vendor advisory (GHSA-h4r5-mxv5-8mjc) and the fixing commit are confirmed, and the fix is a classic hoist-compilation-out-of-loop change, which supports the DoS-only classification. Net: real but low-urgency - patch in normal maintenance cycles, with priority raised only for internet-facing Go services that validate deepObject query parameters at high request volumes. |
| Exploit ScenarioDerived | An attacker identifies an internet-facing Go service that uses kin-openapi's openapi3filter.ValidateRequest and exposes an endpoint whose OpenAPI spec defines a deepObject-style query parameter. They repeatedly send requests packed with hundreds or thousands of unrelated query keys, forcing the server to recompile the same regular expression once per key per deepObject parameter, inflating CPU and memory usage. No public exploit code is available, but the attack is trivial to script given the low complexity and lack of authentication. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 15, 2026
A low-severity denial-of-service condition affects the Go library kin-openapi in versions 0.145.0 through 0.146.0 (exclusive). When an application uses openapi3filter.ValidateRequest and its OpenAPI schema defines at least one query parameter with the deepObject serialization style, an unauthenticated remote client can send a request containing a large number of unrelated query keys, causing the urlValuesDecoder.DecodeObject routine to recompile the same parameter-name regular expression once per key and consume CPU and memory proportional to the attacker-controlled key count. The vulnerability scores CVSS 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L), and no public exploit code was identified at time of analysis; the issue is fixed in release 0.146.0.
RemediationAI
Upgrade kin-openapi to version 0.146.0 or later (vendor-released patch: 0.146.0), as documented in advisory GHSA-h4r5-mxv5-8mjc and release tag v0.146.0; this hoists the regular expression compilation out of the per-key loop and eliminates the amplification. Because the fix is a library dependency change, rebuild and redeploy every service that bundles kin-openapi in the 0.145.0 through 0.146.0 range and verify the module graph (go.mod/go.sum, or SBOM scan) to confirm no transitive copies remain. If an immediate upgrade is not possible, apply an upstream request-shaping control: cap total query string length and maximum query-parameter count at the reverse proxy, API gateway, or WAF, since attacker cost scales with key count - the trade-off is that legitimate clients sending unusually large query strings may be rejected, so thresholds must be tuned to real traffic. Rate limiting or connection throttling on affected endpoints reduces sustained abuse but does not remove the per-request amplification, and removing deepObject-styled query parameters from the schema (or refusing requests whose target parameter uses that style) closes the vulnerable path entirely at the cost of losing that OpenAPI feature. Note that upstream request-size limits or WAF parameter caps already present may bound the practical impact and should be confirmed before treating the service as fully exposed.
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 module for parsing, validating, and filtering OpenAPI documents; the vulnerable component is openapi3filter, which validates incoming HTTP requests against a loaded OpenAPI schema. Root cause is CWE-400 (Uncontrolled Resource Consumption), specifically loop-invariant work hoisted incorrectly: in urlValuesDecoder.DecodeObject, the parameter-name prefix matcher regexp.MustCompile(fmt.Sprintf(^%s\[, regexp.QuoteMeta(param))) was constructed inside the per-query-key loop rather than once per parameter. The regex pattern itself depends only on the parameter name, which is constant across the loop, so compiling it per key turned the attacker-controlled query key count into proportional compilation work. The upstream fix (commit d090e36b2f1c42c898ba2a687a8f6e25f5ca727f) hoists the compiled expression into a paramPrefixRE variable created once before iterating keys. This is explicitly not regular-expression denial of service: the expression is fixed, the input is not interpreted as a pattern (QuoteMeta is applied), and the cost arises purely from repeated recompilation. The affected code path executes only for query parameters declared with the deepObject serialization style, meaning the OpenAPI schema itself determines whether a given deployment is reachable by the flaw.
Know when Kin Openapi 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 unauthenticated requests with no interaction (AV:N/AC:L/PR:N/UI:N); availability-only amplification yields A:L with no confidentiality or integrity impact and unchanged scope.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
kin-openapi is a Go project for handling OpenAPI files. 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 used to decode a deepObject query parameter. An unauthenticated remote client can send an affected endpoint a request containing many unrelated query keys, causing ValidateRequest to perform work and allocations proportional to the attacker-controlled key count for every deepObject parameter. The expression itself is fixed and this is not regular expression denial of service; the resource consumption comes from loop-invariant recompilation. This issue is fixed in version 0.146.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
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
More in Kin Openapi
View allUncontrolled heap allocation in kin-openapi versions 0.124.0 through 0.141.x allows any unauthenticated remote client to
Nil pointer dereference in kin-openapi's openapi3filter.ConvertErrors allows any unauthenticated remote client to crash
Authentication bypass in the kin-openapi Go library (getkin/kin-openapi) before 0.144.0 lets unauthenticated remote atta
Response validation in kin-openapi (openapi3filter.ValidateResponse) panics with a nil pointer dereference when an OpenA
Nil-pointer dereference in kin-openapi 0.136.0 through 0.148.x lets an unauthenticated remote client reliably panic Go a
Denial of service in kin-openapi before 0.149.0 allows unauthenticated remote attackers to terminate the entire Go proce
A nil-pointer panic in kin-openapi's openapi3filter validation path can crash any Go service that embeds versions 0.136.
An unauthenticated remote request can slip past kin-openapi's openapi3filter authentication middleware and reach a handl
Unsupported or non-canonical HTTP methods sent to Go services built on kin-openapi's openapi3filter.ValidationHandler wi
A nil pointer dereference in kin-openapi versions prior to 0.145.0 lets a crafted OpenAPI document panic the loader, den
EUVD-2026-102158
GHSA-h4r5-mxv5-8mjc
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB