GHSA-h7c4-q426-7jh9: tsParticles: A single anonymous MCP session can monopolize HTTP mode and deny new clients
tsParticles is a TypeScript library for creating highly customizable particle animations. Prior to 4.3.2, the HTTP mode of @tsparticles/mcp-server reuses one stateful StreamableHTTPServerTransport for every client. An unauthenticated client that sends the first initialize request without an mcp-session-id claims the shared transport state, causing later independent clients to receive Server already initialized and preventing them from establishing sessions until the process restarts. The first client's session remains functional. This issue is fixed in version 4.3.2.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
@tsparticles/mcp-serverto a version that resolves this vulnerability.Fixed in 4.3.2
Event History
Frequently Asked Questions
Which deployments are exposed to this issue?
Deployments using the HTTP mode of @tsparticles/mcp-server before version 4.3.2 are affected. The issue applies when independent clients share the server process's single stateful StreamableHTTPServerTransport.
What does an attacker need to do to cause the denial of service?
An unauthenticated attacker only needs network access to send the first initialize request without an mcp-session-id. That request claims the shared transport state; subsequent clients cannot establish sessions and receive "Server already initialized."
Does the attack affect the attacker’s own session?
No. The client that sends the first initialization request retains a functional session, while other independent clients are blocked until the process restarts.
What can be done if an immediate upgrade is not possible?
Restarting the affected process clears the condition and allows new sessions to be established, but it does not prevent recurrence. Restricting unauthenticated access to the HTTP endpoint can reduce exposure until version 4.3.2 is deployed.
How can operators recognize that the issue has been triggered?
Later independent clients will fail to establish sessions and receive the error "Server already initialized," while the first client’s session continues to function.