Description
Klever-Go is the Go implementation of the Klever blockchain protocol. Prior to 1.7.20, the default-open GET /subscribe endpoint in network/api/websocket/routes.go accepts unauthenticated WebSocket clients with permissive origin handling, does not call SetReadLimit to bound message size, and has no live-connection cap. SocketHub.HandleClientInsertion also accepts an unbounded address list that grows addressSubscription, and client.loopIn continues reading without a size limit, allowing one client to grow subscription maps or many clients to retain goroutines, buffered channels, and descriptors. The global HTTP request throttler does not count upgraded live WebSocket connections. Because the REST and WebSocket API runs in the node process, memory or scheduler exhaustion can crash the node and interrupt P2P and consensus participation. This issue is fixed in version 1.7.20.
Published: 2026-09-23
Score: 7.5 High
EPSS: n/a
KEV: No
Impact: Denial of Service via memory and goroutine exhaustion
Action: Immediate Patch
AI Analysis

Impact

Klever-Go's default /subscribe WebSocket endpoint allows unauthenticated clients, permits any origin, and does not set a read-size limit or limit concurrent connections. This design lets an attacker open many connections or send oversized messages, causing the server to allocate unbounded goroutines, channels, and memory, eventually exhausting scheduler or memory and crashing the node. The issue specifically enables an attacker to disrupt the blockchain node's availability; it does not involve data confidentiality or integrity damage.

Affected Systems

Vulnerable versions of Klever-Go are those earlier than 1.7.20. The affected code resides in network/api/websocket/routes.go and SocketHub.HandleClientInsertion, where unbounded subscription maps and lack of connection throttling lead to potential DoS. The vulnerability is present in the klever-io:klever-go product and all deployments that expose the GET /subscribe endpoint without sector-specific authentication.

Risk and Exploitability

With a CVSS base score of 7.5, the vulnerability is considered high severity. No EPSS score is provided, and it is not listed in the CISA KEV catalog. Because the attack path is simply establishing WebSocket connections to the open /subscribe endpoint, there are no special privileges required. An unauthenticated attacker can repeatedly spawn client connections or send large payloads to drain node resources, causing the node to crash or become unresponsive. Prompt patching mitigates the risk; before a fix is applied, exposure to DoS remains elevated.

Generated by OpenCVE AI on September 23, 2026 at 21:06 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the Klever-Go 1.7.20 release or any later version to all operational nodes.
  • Restart the node to load the updated binary suite.
  • If immediate upgrading is not feasible, place the node behind a reverse proxy or firewall that caps concurrent WebSocket connections and enforces a maximum message size, and monitor the node's memory and goroutine counts for anomalous spikes.

Generated by OpenCVE AI on September 23, 2026 at 21:06 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-4fwh-wrm6-97xm Klever-Go: Unauthenticated WebSocket /subscribe: no read-size limit, no connection cap, permissive origin -> remote node memory/goroutine exhaustion (DoS)
History

Wed, 23 Sep 2026 22:00:00 +0000

Type Values Removed Values Added
First Time appeared Klever-io
Klever-io klever-go
Vendors & Products Klever-io
Klever-io klever-go

Wed, 23 Sep 2026 19:30:00 +0000

Type Values Removed Values Added
Description Klever-Go is the Go implementation of the Klever blockchain protocol. Prior to 1.7.20, the default-open GET /subscribe endpoint in network/api/websocket/routes.go accepts unauthenticated WebSocket clients with permissive origin handling, does not call SetReadLimit to bound message size, and has no live-connection cap. SocketHub.HandleClientInsertion also accepts an unbounded address list that grows addressSubscription, and client.loopIn continues reading without a size limit, allowing one client to grow subscription maps or many clients to retain goroutines, buffered channels, and descriptors. The global HTTP request throttler does not count upgraded live WebSocket connections. Because the REST and WebSocket API runs in the node process, memory or scheduler exhaustion can crash the node and interrupt P2P and consensus participation. This issue is fixed in version 1.7.20.
Title Klever-Go: Unauthenticated WebSocket /subscribe: no read-size limit, no connection cap, permissive origin -> remote node memory/goroutine exhaustion (DoS)
Weaknesses CWE-770
References
Metrics cvssV3_1

{'score': 7.5, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H'}


Subscriptions

Klever-io Klever-go
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-23T19:15:24.271Z

Reserved: 2026-09-04T19:34:03.099Z

Link: CVE-2026-86065

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-09-23T20:17:20.160

Modified: 2026-09-23T20:17:20.293

Link: CVE-2026-86065

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-23T21:45:02Z

Weaknesses
  • CWE-770

    Allocation of Resources Without Limits or Throttling