Packages / socket.io / Security

ModerateVulnerabilityGHSA-25hc-qcg6-38wjCVE-2024-38355Published 19 Jun 2024

socket.io has an unhandled 'error' event

Your version

Affected releases · socket.io

  • 4.x4.0.0 – 4.6.1Fixed in 4.6.2
  • 3.x3.0.0 – 3.1.2No fix on this line yet
  • 2.x2.0.0 – 2.5.0Fixed in 2.5.1
  • 1.x and older0.3.8 – 1.7.4No fix, no longer updated

On 4.x, the newest line:

npm install socket.io@4.6.2
Every release on a timeline
4.x
  1. Affected

    4.0.0 – 4.6.1

    20 releases

  2. Fixed

    4.6.2 – 4.8.4

    12 releases, latest

3.x
  1. Affected

    3.0.0 – 3.1.2

    9 releases

2.x
  1. Affected

    2.0.0 – 2.5.0

    12 releases

  2. Fixed

    2.5.1

    1 release

1.x
  1. Affected

    1.0.0 – 1.7.4

    35 releases

0.x
  1. Affected

    0.3.8 – 0.9.19

    62 releases

151 stable releases of socket.io, oldest to newest, one row per major.

What happens

Impact

A specially crafted Socket.IO packet can trigger an uncaught exception on the Socket.IO server, thus killing the Node.js process.

node:events:502
    throw err; // Unhandled 'error' event
    ^

Error [ERR_UNHANDLED_ERROR]: Unhandled error. (undefined)
    at new NodeError (node:internal/errors:405:5)
    at Socket.emit (node:events:500:17)
    at /myapp/node_modules/socket.io/lib/socket.js:531:14
    at process.processTicksAndRejections (node:internal/process/task_queues:77:11) {
  code: 'ERR_UNHANDLED_ERROR',
  context: undefined
}

Affected versions

Version rangeNeeds minor update?
4.6.2...latestNothing to do
3.0.0...4.6.1Please upgrade to socket.io@4.6.2 (at least)
2.3.0...2.5.0Please upgrade to socket.io@2.5.1

Patches

This issue is fixed by 15af22f, included in socket.io@4.6.2 (released in May 2023).

The fix was backported in the 2.x branch today: d30630b

Workarounds

As a workaround for the affected versions of the socket.io package, you can attach a listener for the "error" event:

io.on("connection", (socket) => {
  socket.on("error", () => {
    // ...
  });
});

For more information

If you have any questions or comments about this advisory:

  • Open a discussion here

Thanks a lot to Paul Taylor for the responsible disclosure.

References