Engine.IO is the implementation of transport-based cross-browser/cross-device bi-directional communication layer for Socket.IO. A specially…
GitHub_M·CWE-248·Published 2022-11-21
Engine.IO is the implementation of transport-based cross-browser/cross-device bi-directional communication layer for Socket.IO. A specially crafted HTTP request can trigger an uncaught exception on the Engine.IO server, thus killing the Node.js process. This impacts all the users of the engine.io package, including those who uses depending packages like socket.io. There is no known workaround except upgrading to a safe version. There are patches for this issue released in versions 3.6.1 and 6.2.1.
Engine.IO is the implementation of transport-based cross-browser/cross-device bi-directional communication layer for Socket.IO. A specially crafted HTTP request can trigger an uncaught exception on the Engine.IO server, thus killing the Node.js process. This impacts all the users of the engine.io package, including those who uses depending packages like socket.io. There is no known workaround except upgrading to a safe version. There are patches for this issue released in versions 3.6.1 and 6.2.1.
### Impact A specially crafted HTTP request can trigger an uncaught exception on the Engine.IO server, thus killing the Node.js process. ``` events.js:292 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET at TCP.onStreamRead (internal/stream_base_commons.js:209:20) Emitted 'error' event on Socket instance at: at emitErrorNT (internal/streams/destroy.js:106:8) at emitErrorCloseNT (internal/streams/destroy.js:74:3) at processTicksAndRejections (internal/process/task_queues.js:80:21) { errno: -104, code: 'ECONNRESET', syscall: 'read' } ``` This impacts all the users of the [`engine.io`](https://www.npmjs.com/package/engine.io) package, including those who uses depending packages like [`socket.io`](https://www.npmjs.com/package/socket.io). ### Patches A fix has been released today (2022/11/20): | Version range | Fixed version | |-------------------|---------------| | `engine.io@3.x.y` | `3.6.1` | | `engine.io@6.x.y` | `6.2.1` | For `socket.io` users: | Version range | `engine.io` version | Needs minor update? | |-----------------------------|---------------------|--------------------------------------------------------------------------------------------------------| | `socket.io@4.5.x` | `~6.2.0` | `npm audit fix` should be sufficient | | `socket.io@4.4.x` | `~6.1.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.3.x` | `~6.0.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.2.x` | `~5.2.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.1.x` | `~5.1.1` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.0.x` | `~5.0.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@3.1.x` | `~4.1.0` | Please upgrade to `socket.io@4.5.x` (see [here](https://socket.io/docs/v4/migrating-from-3-x-to-4-0/)) | | `socket.io@3.0.x` | `~4.0.0` | Please upgrade to `socket.io@4.5.x` (see [here](https://socket.io/docs/v4/migrating-from-3-x-to-4-0/)) | | `socket.io@2.5.0` | `~3.6.0` | `npm audit fix` should be sufficient | | `socket.io@2.4.x` and below | `~3.5.0` | Please upgrade to `socket.io@2.5.0` | ### Workarounds There is no known workaround except upgrading to a safe version. ### For more information If you have any questions or comments about this advisory: * Open an issue in [`engine.io`](https://github.com/socketio/engine.io) Thanks to [Jonathan Neve](https://github.com/jonathanneve) for the responsible disclosure.
### Impact A specially crafted HTTP request can trigger an uncaught exception on the Engine.IO server, thus killing the Node.js process. ``` events.js:292 throw er; // Unhandled 'error' event ^ Error: read ECONNRESET at TCP.onStreamRead (internal/stream_base_commons.js:209:20) Emitted 'error' event on Socket instance at: at emitErrorNT (internal/streams/destroy.js:106:8) at emitErrorCloseNT (internal/streams/destroy.js:74:3) at processTicksAndRejections (internal/process/task_queues.js:80:21) { errno: -104, code: 'ECONNRESET', syscall: 'read' } ``` This impacts all the users of the [`engine.io`](https://www.npmjs.com/package/engine.io) package, including those who uses depending packages like [`socket.io`](https://www.npmjs.com/package/socket.io). ### Patches A fix has been released today (2022/11/20): | Version range | Fixed version | |-------------------|---------------| | `engine.io@3.x.y` | `3.6.1` | | `engine.io@6.x.y` | `6.2.1` | For `socket.io` users: | Version range | `engine.io` version | Needs minor update? | |-----------------------------|---------------------|--------------------------------------------------------------------------------------------------------| | `socket.io@4.5.x` | `~6.2.0` | `npm audit fix` should be sufficient | | `socket.io@4.4.x` | `~6.1.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.3.x` | `~6.0.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.2.x` | `~5.2.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.1.x` | `~5.1.1` | Please upgrade to `socket.io@4.5.x` | | `socket.io@4.0.x` | `~5.0.0` | Please upgrade to `socket.io@4.5.x` | | `socket.io@3.1.x` | `~4.1.0` | Please upgrade to `socket.io@4.5.x` (see [here](https://socket.io/docs/v4/migrating-from-3-x-to-4-0/)) | | `socket.io@3.0.x` | `~4.0.0` | Please upgrade to `socket.io@4.5.x` (see [here](https://socket.io/docs/v4/migrating-from-3-x-to-4-0/)) | | `socket.io@2.5.0` | `~3.6.0` | `npm audit fix` should be sufficient | | `socket.io@2.4.x` and below | `~3.5.0` | Please upgrade to `socket.io@2.5.0` | ### Workarounds There is no known workaround except upgrading to a safe version. ### For more information If you have any questions or comments about this advisory: * Open an issue in [`engine.io`](https://github.com/socketio/engine.io) Thanks to [Jonathan Neve](https://github.com/jonathanneve) for the responsible disclosure.
Engine.IO es la implementación de una capa de comunicación bidireccional entre navegadores y dispositivos basada en transporte para Socket.IO. Una solicitud HTTP especialmente manipulada puede desencadenar una excepción no detectada en el servidor Engine.IO, matando así el proceso Node.js. Esto afecta a todos los usuarios del paquete Engine.io, incluidos aquellos que utilizan paquetes dependientes como socket.io. No existe ningun workaround alternativo excepto actualizar a una versión segura. Hay parches para este problema publicados en las versiones 3.6.1 y 6.2.1.
| Version | Type | Source | Base | Exp | Impact | Vector |
|---|---|---|---|---|---|---|
| 3.1 | Primary | cve.org | 7.1 | — | — | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H |
| 3.1 | Primary | cve.org | 7.1 | — | — | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H |
| 3.1 | Primary | NVD | 6.5 | 2.8 | 3.6 | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |
| 3.1 | Secondary | NVD | 7.1 | 1.6 | 5.5 | CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:L/A:H |
| 3.1 | Secondary | GHSA | 6.5 | — | — | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H |