Skip to main content

Hono Node Server EUVDEUVD-2026-58180

| CVE-2026-73565 MEDIUM
Memory Leak (CWE-401)
2026-08-13 GitHub_M
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Identify public upgradeWebSocket route
  2. Delivery
    Send HTTP Upgrade with malformed Sec-WebSocket-Key
  3. Exploit
    ws.handleUpgrade rejects handshake without emitting connection event
  4. Install
    IncomingMessage and pending Promise retained in waiterMap
  5. C2
    Repeat flood at high rate
  6. Execute
    Heap memory exhausted
  7. Impact
    Service unavailable

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Resource cleanup, leak prevention
Exploitation Conditions

The vulnerable code path is reached only when all of the following are true: (1) the application uses @hono/node-server version 2.0.0-2.0.9; (2) at least one route is defined with the upgradeWebSocket helper; and (3) that route is reachable without prior authentication middleware rejecting the request. The trigger is an HTTP upgrade request with a missing or malformed Sec-WebSocket-Key header - the malformed variant bypasses proxy-level presence checks. Exploitation is limited by the need to sustain a request flood to achieve meaningful memory pressure; a single request leaks only one entry and one Promise, so isolated requests cause negligible impact. Services that place authentication middleware before the WebSocket route, or that deploy rate-limiting at an upstream proxy performing WebSocket header validation, significantly raise the bar for exploitation.

Impact

The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L scores 5.3 (Medium), reflecting that exploitation is trivially accessible from the network with no authentication and no complexity, but the availability impact is rated Low rather than High - consistent with the attack requiring sustained flooding to exhaust memory rather than causing immediate service failure. No EPSS data was provided in the input. KEV status is absent (not in CISA KEV at time of analysis), and no independent POC exploit code has been published beyond the GHSA advisory and associated test case. The combination of PR:N and AV:N means any instance exposing a WebSocket route publicly is reachable by anyone on the internet, making the effective attack surface broad for affected deployments. However, the absence of active exploitation, the low-to-medium severity rating, and the requirement to sustain a request flood to achieve impact keeps real-world urgency moderate. The A:L rating may understate risk for resource-constrained environments where a modest sustained flood could trigger OOM faster than anticipated.

Exploit ScenarioDerived

An attacker targeting a Node.js service using @hono/node-server 2.0.0-2.0.9 with a public WebSocket endpoint repeatedly sends HTTP upgrade requests containing a syntactically invalid Sec-WebSocket-Key value (e.g., a string that does not base64-decode to 16 bytes). Each request causes the server to retain an IncomingMessage object and a pending Promise in memory with no cleanup; at sufficient request rates, heap memory grows unboundedly until the Node.js process is killed by the OS OOM killer or crashes, denying service to all clients. No authentication is required and no prior reconnaissance beyond identifying the WebSocket route path is needed.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 13, 2026

Unbounded memory growth in @hono/node-server 2.0.0-2.0.9 allows unauthenticated remote attackers to exhaust server memory and cause denial of service by flooding any public WebSocket upgrade route with requests bearing a missing or malformed Sec-WebSocket-Key header. The root cause is a missing cleanup path in src/websocket.ts: when ws.handleUpgrade rejects the handshake, no connection event fires, leaving the IncomingMessage permanently retained in waiterMap and the waitForWebSocket promise perpetually pending. No public exploit or active exploitation (CISA KEV) has been identified at time of analysis; the fix is available in v2.0.10.

RemediationAI

The primary remediation is to upgrade @hono/node-server to version 2.0.10 or later, which introduces a reject path and a socket close listener that reliably clean up waiterMap entries for aborted handshakes (commit 3a21938c). The release is available at https://github.com/honojs/node-server/releases/tag/v2.0.10. If an immediate upgrade is not possible, a compensating control is to place authentication or rate-limiting middleware on all upgradeWebSocket routes so that unauthenticated flood traffic is rejected before reaching the vulnerable upgrade path - note that the GHSA advisory explicitly states that a proxy which only checks for header presence (without validating key format) does NOT mitigate the malformed-key variant, so middleware must perform protocol-level validation or block the route entirely. Rate limiting at the reverse proxy or load balancer layer (e.g., nginx limit_req or an API gateway quota) reduces flooding effectiveness but does not eliminate the per-request leak.

Affected VersionsENISA

node-server 2.0.0, < 2.0.10

Affected Packages

npm @hono/node-server fix: 2.0.10
euvd node_server_2_0_0 fix: 2.0.10

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in npm, euvd

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

Technical ContextAI · show details

The @hono/node-server package (CPE: cpe:2.3:a:honojs:node-server:*:*:*:*:*:*:*:*) is the Node.js runtime adapter for the Hono web framework, distributed via npm. Its WebSocket support wraps the 'ws' library: when a client sends an HTTP upgrade request, setupWebSocket stores the request's IncomingMessage in an internal waiterMap keyed to the request object and returns a Promise that resolves only when a 'connection' event fires on the underlying ws server. CWE-401 (Missing Release of Memory after Effective Lifetime) manifests because the code prior to v2.0.10 tracked only a resolve callback and cleaned up only on successful handshake or route-guard rejection - the third path, handshake abortion by ws due to a bad Sec-WebSocket-Key, emitted no event the adapter listened to, so neither the map entry nor the pending Promise were ever released. The commit diff shows the fix adds a reject callback to the waiter map entry, a rejectWaiter helper, and a socket 'close' event listener to trigger cleanup on abnormal termination.

Know when Node.js 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 (GitHub_M) PRIMARY 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L
vuln.today AI 5.3 MEDIUM

Network-reachable pre-auth route, no complexity or interaction; availability only, limited per-request impact requires sustained flood.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
Low

Lifecycle Timeline

1
Patch available
Aug 13, 2026 - 19:04 EUVD

DescriptionCVE.org

@hono/node-server allows running the Hono application on Node.js. From 2.0.0 until 2.0.10, a WebSocket upgrade request to an upgradeWebSocket route with a missing or malformed Sec-WebSocket-Key header causes src/websocket.ts to retain the request's IncomingMessage in waiterMap and leave waitForWebSocket pending because ws.handleUpgrade emits no connection event. The aborted handshake therefore has no cleanup path, allowing an unauthenticated attacker to flood a public route, cause unbounded memory growth, and eventually make the service unavailable. This issue is fixed in version 2.0.10.

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 7 npm packages depend on @hono/node-server (6 direct, 1 indirect)

Ecosystem-wide dependent count for version 2.0.0.

Threat Intelligence Overview

EPSS Score
0.4%
Top 68% exploitable
Prevalence
Medium
popular lightweight Node.js/edge framework adapter, growing adoption
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment Vendor GitHub VulDB

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

CVE-2025-68613 HIGH POC
8.8 Dec 19

Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation

CVE-2024-41713 CRITICAL POC
9.1 Oct 21

A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could

CVE-2024-55591 CRITICAL POC
9.8 Jan 14

FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote

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-2014-7205 CRITICAL POC
10.0 Oct 08

Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t

CVE-2025-59528 CRITICAL POC
10.0 Sep 22

Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete

CVE-2017-14849 HIGH POC
7.5 Sep 28

Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc

CVE-2017-5941 CRITICAL POC
9.8 Feb 09

An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2014-3744 HIGH POC
7.5 Oct 23

Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi

CVE-2014-9566 HIGH POC
7.5 Mar 10

Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin

CVE-2013-4660 MEDIUM POC
6.8 Jun 28

The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy