Public mode

No access to your tenant or devices. Every item links to its source. What this means

Some sources or documents need attention: 275/275 feeds/APIs · 469/469 docs · 9/9 advisories · checked 02:09 UTC Customize Public modeDiscuss ChangeIntel on Discord

Socket.IO: Engine.IO Polling Transport Connection Exhaustion

Exact source revision recorded 24 Oct 2026 13:17:17 UTC. It does not establish the source's current position. Latest evidence.

osv · GHSA-r635-g3xr-vw7x

Published

### Impact An unauthenticated remote attacker can cause a denial of service in affected versions of **engine.io** by opening Engine.IO polling sessions and sending an invalid binary `POST` request with: ``` Content-Type: application/octet-stream ``` against an Engine.IO protocol v4 polling transport. In the vulnerable code path, the server reports a transport error but does not properly close the HTTP response associated with the malformed request. As a result, the underlying HTTP connection may remain open, consuming one server-side socket/resource per crafted request. An attacker can repeat this with many sessions to exhaust available HTTP connections, sockets, file descriptors, or related server resources, potentially preventing legitimate clients from connecting. ### Patches The issue was fixed in: - **engine.io `6.6.7`** The fix ensures that invalid binary polling `POST` requests are explicitly rejected with an HTTP response and closed properly. Users should upgrade to: ```sh npm install engine.io@^6.6.7 ``` or a later fixed version. If using Socket.IO through the monorepo/packages, update to a Socket.IO release that depends on a fixed `engine.io` version. ### Workarounds If upgrading immediately is not possible, possible mitigations include: - Block or reject polling `POST` requests with `Content-Type: application/octet-stream` for Engine.IO protocol v4 at a reverse proxy, load balancer, WAF, or application middleware. - Disable HTTP long-polling if your deployment can use WebSocket-only transport. - Enforce strict request/connection timeouts at the HTTP server, reverse proxy, or load balancer. - Apply per-IP rate limits and connection limits for Engine.IO endpoints. - Restrict access to the Socket.IO/Engine.IO endpoint where feasible. Example Socket.IO configuration to disable polling, if compatible with your clients: ```js const io = new Server(httpServer, { transports: ["websocket"], }); ``` ## References - Fix commit: https://github.com/socketio/socket.io/commit/fc11285e14964c2132d122164bf130c355f60671 - engine.io changelog entry for `6.6.7`: https://github.com/socketio/socket.io/blob/main/packages/engine.io/CHANGELOG.md#667-2026-04-27 - socket.io repository: https://github.com/socketio/socket.io - engine.io package: https://www.npmjs.com/package/engine.io

Source published
20 Jul 2026 21:49:54 UTC
Source modified
10 Sep 2026 03:51:11 UTC
Observed here
24 Oct 2026 13:17:17 UTC
Source terms
GitHub Advisory Database · CC-BY-4.0

Original source record · Cite this exact observation · Complete original publisher JSON

This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · GitHub Advisory Database · CC-BY-4.0. Source text is retained; field grouping and change labels are provided by ChangeIntel.

CVSS_V3 · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Publisher rating · HIGH

ChangeIntel

An IT change radar: releases, security, known issues, retirements, documentation changes, and service status from public sources. Every item links to supporting evidence; dates and statuses can change after they are read.

Sources read 8 Nov 02:09 UTC · 275 of 275 readable · 273 fully read · documentation 469/469 current