CVE-2026-86065: Klever-Go: Unauthenticated WebSocket /subscribe: no read-size limit, no connection cap, permissive origin -> remote node memory/goroutine exhaustion (DoS)
The unauthenticated WebSocket endpoint GET /subscribe is registered open: true by default
(config/node/api.yaml) and lets a remote, unauthenticated client exhaust the node’s memory and
goroutines. Because the REST API runs IN-PROCESS with the node — network/api/api.go Start(...)
ends with ws.Run(kleverFacade.RestAPIInterface()) — exhausting/killing the API process takes down
the entire node, including its P2P and consensus participation. No API key, account, stake, or funds
are required.
Three compounding, independently-exploitable gaps stack on this one endpoint:
- Permissive origin —
upgrader.CheckOriginalways returnstrue(network/api/websocket/routes.go), so any web origin can complete the handshake. - No read-size limit — the connection never calls
conn.SetReadLimit(...). gorilla’s default is UNLIMITED, so a singleconn.ReadJSON(processSubscription) orconn.ReadMessage(client.loopIn) can be forced to allocate an arbitrarily large buffer from ONE frame. - No connection / fan-out cap — the gin global throttler (
simultaneousRequests: 100) releases its slot as soon ashandleSubscribereturns, which it does immediately aftergo processSubscription(conn, hub). Live WebSocket connections are therefore NOT counted by it. There is no per-IP / per-connection / hub-level cap. Each accepted connection spawns 2 goroutines plus a 500-entry buffered channel, andreq.Addresseshas no length cap, so the hub’saddressSubscriptionmap grows 1:1 with attacker-supplied strings.
References
- github.com/advisories/GHSA-4fwh-wrm6-97xm
- github.com/klever-io/klever-go/commit/b8af922e749ec1fa7451b2c6e7c9f634d8603be2
- github.com/klever-io/klever-go/pull/76
- github.com/klever-io/klever-go/releases/tag/v1.7.20
- github.com/klever-io/klever-go/security/advisories/GHSA-4fwh-wrm6-97xm
- nvd.nist.gov/vuln/detail/CVE-2026-86065
Code Behaviors & Features
Detect and mitigate CVE-2026-86065 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →