GHSA-wfpm-5gcm-94cg: Input Validation
Impact
This is a prototype pollution / improper client lookup vulnerability in @socket.io/cluster-engine.
Servers using @socket.io/cluster-engine may be impacted when attacker-controlled session IDs are processed in clustered deployments. A malicious client could use special property names such as proto, constructor, or other inherited object keys as a session identifier, causing the server to read properties from the object prototype chain instead of only real connected clients.
The impact is denial of service through process crash.
Applications not using @socket.io/cluster-engine are not affected by this specific issue.
Affected versions:
@socket.io/cluster-engine@0.1.0
Patches
The issue was fixed in:
@socket.io/cluster-engine@0.1.1
Workarounds
If upgrading immediately is not possible, users can reduce exposure by:
- Rejecting or sanitizing suspicious session IDs before they reach the cluster engine. - Running the cluster engine behind trusted infrastructure that prevents arbitrary clients from crafting raw Engine.IO session-related requests.
These workarounds are defense-in-depth only. Upgrading to a patched version is recommended.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
npm/@socket.io/cluster-engineto a version that resolves this vulnerability.Fixed in 0.1.1 - Compensating control
Reject or sanitize suspicious session IDs, including special property names such as __proto__ and constructor, before they reach @socket.io/cluster-engine.
- Compensating control
Run @socket.io/cluster-engine behind trusted infrastructure that prevents arbitrary clients from crafting raw Engine.IO session-related requests.
Event History
Frequently Asked Questions
Which deployments are exposed?
Only servers using @socket.io/cluster-engine in clustered deployments are affected by this issue. Applications that do not use @socket.io/cluster-engine are not affected by this specific vulnerability.
What does an attacker need to trigger the issue?
An attacker needs to be able to have attacker-controlled session IDs processed by the cluster engine. Special identifiers such as __proto__, constructor, or other inherited object-property names can cause improper client lookup and crash the process.
Which version should be upgraded?
Version 0.1.0 is affected. The issue is fixed in @socket.io/cluster-engine 0.1.1.
What can be done before upgrading?
Reject or sanitize suspicious session IDs before they reach the cluster engine, and place the cluster engine behind trusted infrastructure that prevents arbitrary clients from crafting raw Engine.IO session-related requests. These measures are defense-in-depth; upgrading is recommended.