Skip to main content

go-openapi swag EUVDEUVD-2026-82602

| CVE-2026-93450 HIGH
Uncontrolled Recursion (CWE-674)
2026-09-18 disclosure@vulncheck.com GHSA-j354-7hcm-wg69
8.7
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Identify service parsing OpenAPI/ordered JSON
  2. Delivery
    Craft deeply nested JSON payload
  3. Exploit
    Submit to unauthenticated endpoint
  4. Execution
    Trigger unbounded recursion in ordered marshal/unmarshal
  5. Persist
    Fatal stack overflow crashes process
  6. Impact
    All in-flight requests dropped (DoS)

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Recursion depth limits
Exploitation Conditions

Exploitable against any Go service that uses go-openapi/swag jsonutils (before 0.27.1) to parse or serialize ordered JSON from untrusted input - specifically endpoints accepting OpenAPI specification documents or otherwise routing attacker-controlled JSON through the ordered marshal/unmarshal path. No authentication, no user interaction, and no non-default configuration are required (PR:N/UI:N), since the vulnerable code had no depth limit at all prior to the fix. The practical LIMIT is exposure: the flaw only bites where an externally reachable endpoint feeds attacker-supplied JSON into this library; internal-only or spec-validated-elsewhere deployments are not reachable. Impact is confined to process availability (crash of the service and loss of in-flight requests); no data exposure or modification occurs.

Impact

This is a genuine but bounded denial-of-service issue, not a code-execution threat. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VA:H, base 8.7) is internally consistent with the description: remote, unauthenticated, low-complexity, availability-only impact (VC:N/VI:N/VA:H). CWE-674 (uncontrolled recursion) is the correct root cause; the description's phrase 'stack overflow' means recursion-driven stack exhaustion, not a memory-corruption buffer overflow, so the RCE/corruption path that a high 8.7 might imply does NOT exist here - confidentiality and integrity are untouched. There is no EPSS score, no CISA KEV listing, and no public exploit code referenced, so exploitation status is 'no public exploit identified at time of analysis.' However, the patch commit and the added depth_test.go provide a precise, trivially reproducible recipe (a JSON document of N nested objects/arrays), so weaponization effort is near-zero even without a published PoC. Net: real priority for any Go service that parses attacker-supplied OpenAPI/ordered-JSON with go-openapi/swag, but the ceiling is process crash / request termination, not compromise. Treat as a patch-promptly availability bug rather than an emergency.

Exploit ScenarioDerived

An attacker sends a single deeply nested JSON document (e.g. thousands of nested objects or arrays) to an HTTP endpoint of a Go service that parses or serializes it via go-openapi/swag jsonutils ordered marshal/unmarshal. The unbounded recursion exhausts the goroutine stack, triggering a fatal Go runtime stack overflow that kills the entire process and drops all in-flight requests. No authentication or user interaction is needed; the patch's depth_test.go effectively documents the crafting recipe though no standalone PoC is published.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.7% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 18, 2026

Stack exhaustion in go-openapi/swag's jsonutils package before 0.27.1 allows unauthenticated remote attackers to crash any Go service that parses or serializes ordered JSON from untrusted input - most notably endpoints that accept OpenAPI specification documents or otherwise route attacker-controlled JSON through the ordered marshal/unmarshal path - by submitting a deeply nested document that recurses without any depth limit. The result is a fatal Go stack overflow that terminates the process and drops all in-flight requests; there is no data exposure or modification, so impact is confined to availability (CVSS 8.7, CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VA:H). No public exploit code has been identified at time of analysis and the flaw is not listed in CISA KEV, but exploitation requires only a single crafted request, so exposure should be treated as high for internet-facing services built on this library. The underlying defect is CWE-674 (uncontrolled recursion).

RemediationAI

Vendor-released patch: upgrade go-openapi/swag to 0.27.1 or later, which introduces the ErrMaxNestingDepth sentinel, a default nesting budget, and the WithMaxNestingDepth adapter option so over-deep documents return an error instead of exhausting the goroutine stack. The fix is delivered by upstream commit 0c24346ced59a25811e8694a915e7131d25ccb0e and documented in GHSA-xh24-9qpg-8w28; after upgrading, run go mod tidy and confirm no indirect dependency pins an older swag version, since the vulnerable code may be pulled in transitively by go-openapi/go-swagger tooling. Where upgrading cannot happen immediately, construct adapters with an explicit WithMaxNestingDepth value once on a patched build, or for unpatched builds enforce a compensating control in front of the service: reject JSON bodies whose maximum nesting depth exceeds a sane bound (OpenAPI documents rarely exceed a few dozen levels) and cap request body size at the reverse proxy or API gateway - noting that API-gateway depth/size filtering adds latency and may reject legitimately large or deeply nested specifications, so thresholds must be tuned against real spec corpora. Additionally, do not expose spec-parsing endpoints to unauthenticated clients if they do not need to be public, and, where practical, run the parsing service as a separate process or replica so a fatal stack overflow does not take down unrelated traffic; note that this is containment only, since the crash still kills all in-flight requests on the affected instance. No public exploit code was identified at time of analysis, but the trigger is trivial to construct and patching should be prioritized for any externally reachable service using the library.

Affected VersionsENISA

swag 0 <0.27.1

Affected Packages

euvd swag fix: 0.27.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

go-openapi/swag is a support library used across the go-openapi ecosystem (and by downstream tooling such as go-swagger) to handle OpenAPI documents, including an "ordered JSON" representation (MapSlice) that preserves key ordering for spec round-tripping. The vulnerability is CWE-674, uncontrolled recursion: both the stdlib-backed adapter (jsonutils/adapters/stdlib/json/adapter.go and ordered_map.go) and the easyjson-backed adapter implemented OrderedMarshal / OrderedUnmarshalJSON as straight recursive descent over nested objects and arrays with no depth budget. Because Go grows goroutine stacks dynamically and a stack overflow is a fatal, unrecoverable runtime error (panic/recover cannot catch runtime: goroutine stack exceeds limit), a single adversarially nested document - e.g. repeated {"a": ... } objects or nested arrays - drives the parser past the runtime stack limit and kills the whole process rather than returning an error. The upstream fix (commit 0c24346) introduces an ErrMaxNestingDepth error, a default depth budget, and a WithMaxNestingDepth adapter option, routing nested ordered values through a depth-decremented path so that over-deep input returns an error instead of crashing. The vulnerability class is therefore a design gap in recursive JSON deserialization rather than a memory-safety bug, despite the 'Buffer Overflow' tag applied by the reporting feed.

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 (vulncheck) PRIMARY 8.7 HIGH
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Remote unauthenticated deeply-nested JSON crashes the process with no interaction (AV:N/AC:L/PR:N/UI:N); availability-only impact (A:H), no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 18, 2026 - 02:01 EUVD
CVE Published
Sep 18, 2026 - 00:17 cve.org
HIGH 8.7

DescriptionCVE.org

go-openapi/swag jsonutils before 0.27.1 contains a stack overflow vulnerability in ordered JSON parsing and serialization due to unbounded recursion with no depth limit. Remote unauthenticated attackers can submit deeply nested JSON documents to services accepting OpenAPI specifications, causing fatal stack overflow that terminates the process and all in-flight requests.

Technical POC Analysis

Advisory GHSA-xh24-9qpg-8w28 itself lists "No known CVE"; the CVE-2026-93450 mapping and CVSS 8.7 come from the record above, not the advisory text.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

A high-severity availability flaw in the go-openapi/swag library's jsonutils package can let an unauthenticated remote attacker terminate any Go service that processes attacker-supplied JSON through the ordered marshal/unmarshal path, which includes common endpoints that accept OpenAPI specification documents. There is no data exposure or modification, but a single crafted request crashes the process and drops all in-flight work, so internet-facing and internal API services built on this library can be taken offline repeatedly with minimal attacker effort. Leadership should care because no vendor-released patch is identified at time of analysis, meaning near-term risk must be absorbed through edge controls and dependency governance until a fix is confirmed and deployed.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include strict request body size limits and JSON nesting-depth rejection at the WAF/reverse proxy, pre-parse JSON schema validation, rate limiting, disabling or authenticating OpenAPI specification upload and validation endpoints, removing the affected ordered marshal/unmarshal path from untrusted-input handling where possible, and running affected services with process supervision, health checks, alerts on crash loops, and horizontal redundancy to limit outage duration.

Threat Intelligence Overview

EPSS Score
0.7%
Top 50% exploitable
Prevalence
High
go-openapi/swag is a widely used transitive dependency across the Go OpenAPI ecosystem
Data Quality
6 sources
Confidence: High

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 HIGH
CISA KEV No
Public POC No
EPSS 0.7%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

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