Repository navigation
fix(deps): update vulnerable dependencies [security] (release-2.5) - #416
Open
crossplane-renovate[bot] wants to merge 1 commit into
Open
crossplane-renovate[bot] wants to merge 1 commit into
crossplane-renovate[bot] wants to merge 1 commit into
Conversation
crossplane-renovate
Bot
requested review from
a team and
tampakrap
as code owners
October 9, 2026 08:16
Contributor
Author
ℹ️ Artifact update noticeFile name: go.modIn order to perform the update(s) described in the table above, Renovate ran the
Details:
|
crossplane-renovate
Bot
requested review from
haarchri
and removed request for
a team
October 9, 2026 08:16
crossplane-renovate
Bot
force-pushed
the
renovate/release-2.5-vulnerable-dependencies
branch
from
October 9, 2026 18:46
f8fb16f to
921623e
Compare
crossplane-renovate
Bot
force-pushed
the
renovate/release-2.5-vulnerable-dependencies
branch
from
October 16, 2026 08:16
921623e to
39d6b1e
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
v0.147.0→v0.149.0v0.58.0→v0.60.0kin-openapi: YAML NaN/Inf Values Bypass Built-in Guards and Panic via OAS 3.1 Validation Path
CVE-2026-100352 / GHSA-rj39-cv6w-8wv7
More information
Details
Summary
kin-openapi guards against
NaNandInfvalues in its built-in schema visitor (visitJSON) by returningErrSchemaInputNaN/ErrSchemaInputInfwhen afloat64input violates those constraints. For OAS 3.1 specs, however,Schema.VisitJSONroutes throughuseJSONSchema2020, which hands the value directly tosanthosh-tekuri/jsonschema/v6v6.0.2 without applying the same guard.Inside
jsonschema/v6v6.0.2,numValidatebuilds a*big.Ratfrom the input viabig.Rat.SetString(fmt.Sprintf("%v", v)). ForNaN/Infthis parse fails silently and returnsnil.numValidatethen dereferences the nil*big.Rat(inmath/big.(*Rat).Cmp), producing a Go runtime panic.An attacker delivers this by sending an HTTP request with
Content-Type: application/yaml(orapplication/x-yaml) and a YAML body containing.nan,.inf, or-.inf. TheYamlBodyDecoderdecodes those tokens intomath.NaN()/math.Inf(±1)(standard YAML 1.2 behavior), and they propagate to the unguardeduseJSONSchema2020path whenever the schema declares a numeric constraint (minimum,maximum,exclusiveMinimum,exclusiveMaximum, ormultipleOf).Details
Root Cause
The built-in visitor
visitJSONatopenapi3/schema.go:1968guards NaN/Inf explicitly:For OAS 3.1 specs,
VisitJSONdispatches touseJSONSchema2020(openapi3/schema_jsonschema_validator.go:204), which contains no such guard:jsonSchemaValidator.validatecallsjsonschema/v6.Schema.Validate(line 146), which reachesnumValidatein v6.0.2. There,big.Rat.SetString(fmt.Sprintf("%v", v))returns(nil, false)forNaN/Inf, and the code dereferences thenil*big.RatinRat.Cmp, causing the panic.Proof of Concept
Environment
v0.144.0, commitf0407d5)Spec
Minimal OAS 3.1 spec (
spec.yaml) declaring a YAML body with a numeric constraint:Trigger
A single
POST /testwithContent-Type: application/yamland body.nan,.inf, or-.inf. All three variants panic:Panic stack trace (confirms exact chain)
net/http behavior (severity nuance)
Behind a standard
net/httpserver, the panic is recovered per-connection. The client sees a dropped connection; the server process continues:This is a recoverable panic, unlike the recursion finding.
recover()catches it (verified by capturing the panic value in adeferin the same goroutine). Non-net/httphosts or validation performed in an application-spawned goroutine are not covered by that recovery and would experience a full-process crash.Fix verification
Upgrading only the transitive dependency to
jsonschema/v6@v6.0.3(viago get github.com/santhosh-tekuri/jsonschema/v6@v6.0.3) eliminates the panic entirely; all three payloads return a clean validation error:This confirms the upstream
jsonschema/v6v6.0.3 release treats the NaN/Inf case as a bug and fixes it at the source. It also confirmsuseJSONSchema2020is the reachable path: patching only the transitive dep removes the panic without touching kin-openapi code.Why This Is a Vulnerability, Not by Design
ErrSchemaInputNaN/ErrSchemaInputInfatschema.go:1968). The stated policy is: these values are not allowed.useJSONSchema2020) simply omits the same guard — a coding gap, not a design decision.jsonschema/v6v6.0.3 fixes the same case as a bug. Two independent code owners agree it should not panic..nan/.infas a numeric field.Impact
net/httprecovery wrapper is present; the whole process crashes on a single request.minimum,maximum,exclusiveMinimum,exclusiveMaximum,multipleOf) are common on any numeric field with a range.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
kin-openapi: Uncontrolled Recursion on Circular allOf/anyOf/oneOf Schemas Causes Fatal Process Crash
CVE-2026-100354 / GHSA-g8cf-rcjf-c8cf
More information
Details
Summary
kin-openapi's spec loader and spec-time validator both handle circular schema references safely: the loader resolves circular
$refs on purpose (to support recursive data structures), andSchema.validate()uses stack-based cycle detection.Validate()therefore accepts a schema whoseallOf/anyOf/oneOfchain refers back to itself, returning no error.The runtime validators do not have that protection. When such a schema is used for request or response validation, the recursion through the combinator chain is unbounded. In Go this produces a fatal stack overflow (
runtime: goroutine stack exceeds ... limit/fatal error: stack overflow), which is not a recoverable panic.recover()cannot catch it, sonet/http's per-connection recovery does not help. The entire process is terminated, including all goroutines serving unrelated clients.Two independent unguarded recursion sites were confirmed:
openapi3/schema.go—visitJSON/visitXOFOperations(reached byVisitJSON, i.e. response validation and direct schema validation).openapi3filter/req_resp_decoder.go—decodeValue(reached first during request parameter decoding). The report also identifies the same gap inurlValuesDecoder.parseValueandbuildResObj/buildFromSchemas.Details
Root Cause
Schema.validate()has cycle detection (openapi3/schema.go:1396):The runtime visitor has none.
visitJSON(line 1951) callsvisitXOFOperations(line 2189), which iterates the combinator slice and callsvisitJSONagain on each sub-schema:The request-decoding path has the same structure in
decodeValue(openapi3filter/req_resp_decoder.go:270):Proof of Concept
Environment
v0.144.0, commitf0407d5)Path A: response / direct schema validation (
VisitJSON)A schema whose
allOfrefers to itself.Validate()is called first to show the schema is accepted, thenVisitJSON():Output:
A
defer recover()placed around the call did not catch the fatal error — the process aborted with a non-zero exit code, confirming it is unrecoverable.Path B: HTTP request validation against a loaded spec (realistic delivery)
A legal OAS 3.0 spec with a circular
allOf$ref, loaded normally, served behind a standardnet/httphandler usingopenapi3filter.ValidateRequest:A single
GET /test?data=xcrashes the whole server process:The line printed after the request ("the process survived") was never reached, and the process exited with a non-zero code — the standard
net/httpper-connectionrecover()did not save it. This is the key distinction from a recoverable panic: a fatal stack overflow takes the entire process down regardless of host.Fix verification
Adding stack-based cycle detection to both sites (matching
validate()'s pattern) eliminated the crash:visitJSONguard:VisitJSON()returned normally instead of crashing.decodeValueguard: the sameGET /test?data=xreturned a clean400:Impact
An unrecoverable, whole-process denial of service. Because the crash is a fatal Go runtime error (not a panic), it cannot be contained by
net/http's per-request recovery, so A:H applies to all host types, unlike a recoverable-panic bug.Attack surface, in order of exposure:
allOf/anyOf/oneOf. Here any client request to the affected endpoint crashes the process. The spec author does not need malicious intent; a degenerate recursive combinator is enough. This is a latent reliability bug that becomes remotely triggerable once present.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
kin-openapi: Incomplete Fix for GHSA-p6wj-qrr4-pgh5: Three Unpatched nil-Items Panic Paths in openapi3filter
CVE-2026-100353 / GHSA-vrcc-3ch7-hppw
More information
Details
Summary
The fix for GHSA-p6wj-qrr4-pgh5 addressed a nil-pointer dereference that occurs when an OpenAPI 3.1 array schema omits the
itemskeyword (which is legal under JSON Schema 2020-12). That fix patched three decoder paths: the standaloneparseArrayfunction, the top-level array check inUrlencodedBodyDecoder, andMultipartBodyDecoder.Three additional crash paths were missed. All of them reach the unguarded
urlValuesDecoder.parseArraymethod (openapi3filter/req_resp_decoder.go:576) or the unguarded array branch inbuildResObj(line 1015):type: arrayand noitems.items.allOf/anyOf/oneOfsub-schema. This path bypasses the guard added by the GHSA-p6wj-qrr4-pgh5 fix, because that guard only inspects top-level properties.Each path is triggerable by an unauthenticated client and produces a deterministic nil-pointer panic during request validation.
Details
Root Cause
The three paths patched for GHSA-p6wj-qrr4-pgh5 each received a nil-
itemsguard:But
urlValuesDecoder.parseArray(line 576), which handles query-parameter and urlencoded-body array decoding, has no such guard:parseValueimmediately dereferences the schema it is handed:For the deepObject path,
buildResObj(line 1015) has the same gap. Its array branch recurses withschema.Value.Items(line 1028), which can be nil, and the recursive call dereferences it at line 1015:For the allOf body path,
UrlencodedBodyDecodervalidates only top-levelschema.Value.Properties(line 1429-1449). ButdecodeSchemaConstructs(line 1474) recursively walksAllOf/AnyOf/OneOfsub-schemas and callsdecodePropertyon their properties, which never pass through the top-level guard and reachurlValuesDecoder.parseArray.Proof of Concept
Environment
v0.144.0, commitf0407d5)doc.Validate()first to prove the spec is legal, then drivesopenapi3filter.ValidateRequestdirectlyPath 1: Query parameter array without items
Spec (query param
idsistype: array, noitems), requestGET /test?ids=1&ids=2:Path 2: deepObject nested array without items
Spec (deepObject param
filterwith array propertytags, noitems), requestGET /test?filter[tags][0]=a:Path 3: URL-encoded body with array inside allOf (bypasses the existing fix)
Spec (urlencoded body,
allOfsub-schema with array propertytags, noitems), requestPOST /submitbodytags=a&tags=b:The
decodePropertyframe confirms the array was reached by walking theallOfsub-schema, bypassing the top-level guard that the GHSA-p6wj-qrr4-pgh5 fix added.Fix verification
Adding a single nil-
itemsguard tourlValuesDecoder.parseArray(plus one to thebuildResObjarray branch) turns all three panics into clean validation errors:This confirms
urlValuesDecoder.parseArrayis the shared root cause for Paths 1 and 3, andbuildResObjfor Path 2.Impact
An unauthenticated client can trigger a deterministic nil-pointer panic in request validation with a single crafted request, against any application that validates OAS 3.1 requests with
openapi3filterwhere a spec declares an array withoutitems.The severity depends on the host:
net/httpserver (validation runs in the handler goroutine)net/httprecovers the panic per-connection; the connection is dropped and the process survivesnet/httphosts (e.g. fasthttp/connect adapters) or validation performed in an application-spawned goroutineThis was verified in both configurations: under a live
net/httpserver the process survived (the panic was logged ashttp: panic serving ...and the process exited 0 at end of test), while the direct-call PoCs above crashed the process withexit status 2.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:HReferences
This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).
HTTP/2 server memory exhaustion due to Trailer headers in net/http
CVE-2026-78659 / GO-2026-6603
More information
Details
When "Trailer" headers are sent by a client, the HTTP server internally uses the header values to populate the Request.Trailer map passed to the server handler. Because Request.Trailer is a map, each entry incurs memory overhead. For HTTP/2 servers, a malicious client can exploit this by sending a "Trailer" header that declares a large number of fields, causing the server to allocate a disproportionate amount of memory while bypassing Server.MaxHeaderValueCount and Server.MaxHeaderBytes limits. This exploit is not applicable for HTTP/1 servers, which do not support multiplexing a large number of requests over one TCP connection, and whose Server.MaxHeaderBytes are calculated differently.
Severity
Unknown
References
This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).
HTTP/2 transport accepts malformed framing-related headers in net/http
CVE-2026-78660 / GO-2026-6610
More information
Details
Historically, we have been rather lax about malformed framing-related headers in our HTTP/2 implementation, as they cannot interfere with HTTP/2 framing. However, this makes it possible for our HTTP/2 implementation to forward responses containing such headers to an HTTP/1 client when acting as a reverse proxy. If the HTTP/1 client also does not behave strictly enough, this can result in response smuggling.
Severity
Unknown
References
This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).
Excessive CPU consumption from repeated initial window changes in net/http
CVE-2026-78669 / GO-2026-6611
More information
Details
A malicious HTTP/2 peer can cause excessive CPU consumption in the client or server by opening a large number of streams and then sending many small SETTINGS frames containing SETTINGS_INITIAL_WINDOW_SIZE values.
Severity
Unknown
References
This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).
Double flow control refund on HTTP/2 server streams in net/http
CVE-2026-78663 / GO-2026-6612
More information
Details
The HTTP/2 server can refund connection-level flow control twice for the same data: Once when a client resets a stream (refunding data for any sent-but-unread portion of the stream), and again when a request handler reads the buffered data. A malicious client can exploit this to bypass the configured connection-level flow control limit (MaxReceiveBufferPerConnection). Total buffered data is still limited by the concurrent stream limit and stream-level flow control.
Severity
Unknown
References
This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).
HTTP/2 server crash due to HPACK encoder race in net/http
CVE-2026-97032 / GO-2026-6617
More information
Details
HTTP/2 servers could end up crashing due to inadvertently modifying its HPACK encoder concurrently. This happens because the server modifies the HPACK encoder from two goroutines without synchronization: one uses the encoder to encode a HEADERS frame as part of a response sent to a client and the other modifies the encoder's table size when handling a SETTINGS frame containing SETTINGS_HEADER_TABLE_SIZE that a client sends. A malicious client can repeatedly send a request while changing the header table size to crash the server.
Severity
Unknown
References
This data is provided by OSV and the Go Vulnerability Database (CC-BY 4.0).
Release Notes
getkin/kin-openapi (github.com/getkin/kin-openapi)
v0.149.0Compare Source
What's Changed
Full Changelog: getkin/kin-openapi@v0.148.0...v0.149.0
v0.148.0Compare Source
What's Changed
New Contributors
Full Changelog: getkin/kin-openapi@v0.147.0...v0.148.0
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Mend Renovate CLI.