Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Network-accessible default path requires no authentication or interaction; impact is purely availability with no data exposure or integrity change.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
Hub is a Node.js WebSocket server and client with added features. Prior to 0.2.16, every incoming unauthenticated WebSocket connection triggers loadDefaultConnectionEventListeners to call requestClientId, which calls rpc.send for the get-client-id action and pushes a request into RPC.requests. The RPC.waitForReply function starts a setInterval polling loop every 10 milliseconds that is cleared only after a matching reply; if the client remains silent and closes, the timer and pending request stay allocated because the socket close path does not cancel them. Repeated connections therefore cause unbounded timers and heap entries, exhausting CPU and memory and making the server unavailable. This issue is fixed in version 0.2.16.
Articles & Coverage 1
AnalysisAI
Resource exhaustion DoS in @anephenix/hub (npm) before 0.2.16 allows any unauthenticated remote client to exhaust server CPU and memory by opening WebSocket connections and ignoring all server RPC messages. Each connection triggers a 10ms setInterval polling loop and a heap entry in the RPC request queue; because the socket close handler never cancels these allocations, they accumulate without bound until the process becomes unresponsive. No active exploitation is confirmed (not in CISA KEV); vendor-released patch is available in v0.2.16.
Technical ContextAI
@anephenix/hub is an npm package (cpe:2.3:a:anephenix:hub:*:*:*:*:*:*:*:*) providing a Node.js WebSocket server and client with built-in RPC and pub/sub capabilities. The root cause is CWE-400 (Uncontrolled Resource Consumption). On every accepted connection, loadDefaultConnectionEventListeners (src/lib/index.ts:128) invokes requestClientId, which calls rpc.send for the get-client-id action (src/lib/clientId.ts:112). Inside rpc.send, the payload is pushed onto this.requests (src/lib/rpc.ts:282) and waitForReply starts a setInterval polling responses[] every 10ms (src/lib/rpc.ts:250). The interval is cleared only when a matching reply arrives; the existing socket close handler only calls pubsub.unsubscribeClientFromAllChannels and never cancels pending RPC timers or queue entries. The fix in commit 931576d adds an onSocketClose handler passed to waitForReply via a new ws parameter: when the socket closes, it calls clearInterval, removes the request via removeItemFromQueue, and rejects the promise.
RemediationAI
Upgrade @anephenix/hub to version 0.2.16 or later using npm install @anephenix/hub@0.2.16; this is the vendor-confirmed fix documented in GHSA-g5vv-q72c-7j78 and implemented in commits 67260d2 and 931576d (https://github.com/anephenix/hub/commit/931576db3cdbf4f1583bd2c3c8759c4f4e032ab3). If an immediate upgrade is not feasible, apply rate-limiting or connection-count caps at the reverse proxy or load balancer (e.g., nginx limit_conn or HAProxy maxconn) to reduce the accumulation rate - note this slows but does not eliminate the leak, and introduces connection-refusal side effects for legitimate users under load. Blocking unauthenticated WebSocket access at the network boundary would fully prevent exploitation but disables hub's intended functionality for new clients. Full advisory: https://github.com/anephenix/hub/security/advisories/GHSA-g5vv-q72c-7j78.
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
The AES-NI implementation in OpenSSL before 1.0.1t and 1.0.2 before 1.0.2h does not consider memory allocation during a
Same weakness CWE-400 – Uncontrolled Resource Consumption
View allSame technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-58175
GHSA-g5vv-q72c-7j78