{"id":"CVE-2026-126343","kind":"vulnerability","aliases":["CVE-2026-126343","GHSA-qv5m-9pm6-hqp3"],"related":[],"title":"@hono/node-server: Unhandled `ECONNRESET` on the socket during an asynchronous WebSocket upgrade crashes the process","description":"### Summary\n\nWhile `@hono/node-server` waits for the Hono application to handle a WebSocket upgrade request, the socket has no error listener. If the client resets the TCP connection during that time, the resulting `ECONNRESET` is emitted as an unhandled `'error'` event and the process terminates.\n\n### Details\n\nThe upgrade handler awaits the application before attaching any listener to the socket. When middleware on the upgrade path does asynchronous work, such as an authentication lookup, a connection reset in that window has no handler. If a global `uncaughtException` handler swallows the error, the pending upgrade is never released and its entry is retained for the lifetime of the process.\n\nThe fix attaches error and close listeners to the socket before calling the application, releases the pending upgrade when the socket closes, and skips the handshake on a destroyed socket.\n\n### Impact\n\nAn unauthenticated client can terminate the server process with a single connection by sending a WebSocket upgrade request and resetting the connection before the application has responded. Where the crash is suppressed, repeated requests grow the heap.\n\nThis affects applications that enable WebSocket support in `@hono/node-server` and run asynchronous middleware or handlers on the upgrade path.","summary":"When a WebSocket upgrade request is waiting on async Hono middleware, a client resetting the TCP connection raises an unhandled ECONNRESET error. The Node process terminates, and if the crash is suppressed, memory grows with repeated requests.","severity":"medium","cvss":5.3,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"@hono/node-server","fixed":["2.1.6"],"affected":">= 2.0.0, < 2.1.6","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["cwe-248","hono","node","package","self-hosted","websocket"],"not_affected_if":["no-async-upgrade-middleware","no-websocket-support"],"how_to_check":"- Check the installed version with `npm ls @hono/node-server`\n- Look for WebSocket support enabled in `@hono/node-server` and async middleware or handlers on the upgrade path\n- Confirm whether a global `uncaughtException` handler is registered in the app","fix":"- `@hono/node-server` `2.1.6` or later (fixed in `2.1.6` for affected `>= 2.0.0, < 2.1.6`)","status":"open","published_at":"2026-11-12T21:32:48+00:00","first_seen_at":"2026-11-12T21:34:55+00:00","triaged_at":"2026-11-12T21:36:04+00:00","updated_at":"2026-11-12T21:36:04+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-11-12T21:36:04Z","model":"claude-haiku-5-5","output":{"fix":"- `@hono/node-server` `2.1.6` or later (fixed in `2.1.6` for affected `>= 2.0.0, < 2.1.6`)","reach":"internet","title":"Hono node-server: client TCP reset during WebSocket upgrade crashes the process","impact":"medium","summary":"When a WebSocket upgrade request is waiting on async Hono middleware, a client resetting the TCP connection raises an unhandled ECONNRESET error. The Node process terminates, and if the crash is suppressed, memory grows with repeated requests.","audience":"developers","category":"package","nicknames":[],"who_cares":["hono","node","websocket","self-hosted"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"unauthenticated client crashes the server process with one connection","analyst_note":"","how_to_check":"- Check the installed version with `npm ls @hono/node-server`\n- Look for WebSocket support enabled in `@hono/node-server` and async middleware or handlers on the upgrade path\n- Confirm whether a global `uncaughtException` handler is registered in the app","plain_action":"","product_name":"","needs_analyst":false,"not_affected_if":["no-websocket-support","no-async-upgrade-middleware"],"who_is_affected":"Applications that enable WebSocket support in @hono/node-server and run asynchronous middleware or handlers on the upgrade path are exposed. The sources say a single unauthenticated connection reset can crash the server, so internet-facing WebSocket endpoints are the main concern. Applications without WebSocket support enabled, or with no async work on the upgrade path, are not described as affected.","user_interaction":"no","product_ecosystem":"","needs_special_setup":"yes","severity_if_unknown":"unknown"},"cost_usd":0.000803,"input_tokens":4983,"output_tokens":609,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-126343':17A,25A '-2026':16A,24A '-248':28B '9pm6':21A 'affect':248C 'applic':80C,123C,192C,234C,249C 'async':44B 'asynchron':9A,138C,258C 'attach':125C,181C 'authent':143C 'await':121C 'call':190C 'client':48B,95C,212C 'close':184C,200C 'connect':52B,99C,146C,221C,231C 'crash':12A,65B,239C 'cve':15A,23A 'cwe':27B 'destroy':207C 'detail':117C 'econnreset':3A,56B,105C 'emit':107C 'enabl':251C 'entri':170C 'error':57B,91C,111C,161C,182C 'event':112C 'fix':180C 'ghsa':19A 'ghsa-qv5m-9pm6-hqp3':18A 'global':156C 'grow':69B,244C 'handl':82C 'handler':120C,153C,158C,261C 'handshak':204C 'heap':246C 'hono':29B,45B,79C 'hono/node-server':1A,26A,75C,255C 'host':34B 'hqp3':22A 'impact':209C 'lifetim':175C 'listen':92C,127C,185C 'lookup':144C 'memori':68B 'middlewar':46B,132C,259C 'never':166C 'node':30B,59B 'packag':31B 'path':136C,265C 'pend':163C,195C 'process':14A,60B,115C,178C,217C 'qv5m':20A 'rais':53B 'releas':167C,193C 'repeat':71B,242C 'request':40B,72B,86C,227C,243C 'reset':49B,96C,147C,229C 'respond':236C 'result':104C 'retain':172C 'run':257C 'self':33B 'self-host':32B 'send':223C 'server':216C 'singl':220C 'skip':202C 'socket':6A,88C,130C,188C,199C,208C 'summari':73C 'support':253C 'suppress':67B,241C 'swallow':159C 'tcp':51B,98C 'termin':61B,116C,214C 'time':102C 'unauthent':211C 'uncaughtexcept':157C 'unhandl':2A,55B,110C 'upgrad':11A,39B,85C,119C,135C,164C,196C,226C,264C 'wait':42B,76C 'websocket':10A,35B,38B,84C,225C,252C 'window':150C 'work':139C","nicknames":[],"mitigations":[],"who_affected":"Applications that enable WebSocket support in @hono/node-server and run asynchronous middleware or handlers on the upgrade path are exposed. The sources say a single unauthenticated connection reset can crash the server, so internet-facing WebSocket endpoints are the main concern. Applications without WebSocket support enabled, or with no async work on the upgrade path, are not described as affected.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":["nodeserver"],"ptokens":["hono","node","server"],"labels":["cwe248","hono","medium","node","npm","package","selfhosted","websocket"],"campaign_type":null,"search_a":"'-126343':17A,25A '-2026':16A,24A '9pm6':21A 'asynchron':9A 'crash':12A 'cve':15A,23A 'econnreset':3A 'ghsa':19A 'ghsa-qv5m-9pm6-hqp3':18A 'hono/node-server':1A,26A 'hqp3':22A 'process':14A 'qv5m':20A 'socket':6A 'unhandl':2A 'upgrad':11A 'websocket':10A","search_b":"'-248':28B 'async':44B 'client':48B 'connect':52B 'crash':65B 'cwe':27B 'econnreset':56B 'error':57B 'grow':69B 'hono':29B,45B 'host':34B 'memori':68B 'middlewar':46B 'node':30B,59B 'packag':31B 'process':60B 'rais':53B 'repeat':71B 'request':40B,72B 'reset':49B 'self':33B 'self-host':32B 'suppress':67B 'tcp':51B 'termin':61B 'unhandl':55B 'upgrad':39B 'wait':42B 'websocket':35B,38B","search_c":"'affect':248C 'applic':80C,123C,192C,234C,249C 'asynchron':138C,258C 'attach':125C,181C 'authent':143C 'await':121C 'call':190C 'client':95C,212C 'close':184C,200C 'connect':99C,146C,221C,231C 'crash':239C 'destroy':207C 'detail':117C 'econnreset':105C 'emit':107C 'enabl':251C 'entri':170C 'error':91C,111C,161C,182C 'event':112C 'fix':180C 'global':156C 'grow':244C 'handl':82C 'handler':120C,153C,158C,261C 'handshak':204C 'heap':246C 'hono':79C 'hono/node-server':75C,255C 'impact':209C 'lifetim':175C 'listen':92C,127C,185C 'lookup':144C 'middlewar':132C,259C 'never':166C 'path':136C,265C 'pend':163C,195C 'process':115C,178C,217C 'releas':167C,193C 'repeat':242C 'request':86C,227C,243C 'reset':96C,147C,229C 'respond':236C 'result':104C 'retain':172C 'run':257C 'send':223C 'server':216C 'singl':220C 'skip':202C 'socket':88C,130C,188C,199C,208C 'summari':73C 'support':253C 'suppress':241C 'swallow':159C 'tcp':98C 'termin':116C,214C 'time':102C 'unauthent':211C 'uncaughtexcept':157C 'unhandl':110C 'upgrad':85C,119C,135C,164C,196C,226C,264C 'wait':76C 'websocket':84C,225C,252C 'window':150C 'work':139C","cause_entry":null,"cause_path":null,"disclosures_checked_at":null,"first_public_at":"2026-11-02T10:20:10+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:L","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-qv5m-9pm6-hqp3","url":"https://github.com/advisories/GHSA-qv5m-9pm6-hqp3","severity":"medium","published_at":"2026-11-12T21:32:48+00:00","modified_at":"2026-11-12T21:32:49+00:00","first_seen_at":"2026-11-12T21:34:55+00:00","fetched_at":"2026-11-12T21:45:12+00:00","note":null},{"source":"nvd","external_id":"CVE-2026-126343","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-126343","severity":null,"published_at":"2026-11-12T22:19:19+00:00","modified_at":"2026-11-12T22:19:19+00:00","first_seen_at":"2026-11-12T22:40:37+00:00","fetched_at":"2026-11-12T22:40:38+00:00","note":null}],"documents":[{"id":139216,"url":"https://api.github.com/repos/honojs/node-server/security-advisories/GHSA-qv5m-9pm6-hqp3","title":"Maintainer's advisory: api.github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Maintainer's advisory: api.github.com"},{"id":139217,"url":"https://github.com/honojs/node-server/security/advisories/GHSA-qv5m-9pm6-hqp3","title":"Maintainer's advisory: github.com","kind":"vendor","source":"ghsa","publisher":"vendor","text":null,"published_at":"2026-11-02T10:20:10+00:00","relation":"advisory","confidence":null,"note":"Maintainer's advisory: github.com"},{"id":139218,"url":"https://github.com/honojs/node-server/commit/61cc0267e613e684401f17c27538ba3bf97339a4","title":"Patch: github.com","kind":"other","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Patch: github.com"},{"id":139199,"url":"https://github.com/honojs/node-server/releases/tag/v2.1.6","title":"Release: github.com","kind":"release","source":"ghsa","publisher":"vendor","text":null,"published_at":null,"relation":"fix","confidence":null,"note":"Release: github.com"}],"disclosures":[],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}