Vulnerability GHSA-4p8p-pjpq-2w7h

High Risk
HIGH RISK
CVSS Score: 8.0
Score Range: 7.0–8.9
High severity vulnerabilities (CVSS 7.0–8.9). Serious vulnerabilities that should be prioritized soon after critical fixes.
7 hours ago
November 09, 2026 at 09:13 PM UTC
tsParticles: Malformed JSON requests can terminate the @tsparticles/mcp-server HTTP process
<4.3.1
<4.3.1

Summary

tsParticles: Malformed JSON requests can terminate the @tsparticles/mcp-server HTTP process

Details

Summary

The HTTP mode of @tsparticles/mcp-server parses incoming /mcp request bodies with JSON.parse() outside a request-local error boundary. A single malformed JSON request causes the async request handler to throw and terminates the Node.js process.

This was verified on v4.3.0 at commit 0266d469aa2d719cb66a9c6bf09aded4186ec17c. Version 4.3.1 appears to fix this by returning HTTP 400 for invalid JSON.

Affected Code

The vulnerable handler is:

if (req.method === "POST" && req.url === "/mcp") {
  const body = await new Promise<string>((resolve, reject) => {
    const chunks: Buffer[] = [];
    req.on("data", (chunk) => chunks.push(Buffer.from(chunk)));
    req.on("end", () => resolve(Buffer.concat(chunks).toString("utf8")));
    req.on("error", reject);
  });

  const parsedBody = body ? JSON.parse(body) : undefined;
  await transport.handleRequest(req, res, parsedBody);
}

The JSON.parse() call is not wrapped in try/catch.

Reproduction

Start the HTTP server and send this malformed request:

POST /mcp HTTP/1.1
Content-Type: application/json
Mcp-Protocol-Version: 2025-11-25

{"jsonrpc":

Observed result in 3 out of 3 runs:

exit_code=1
SyntaxError: Unexpected end of JSON input
at Server.<anonymous> (integrations/mcp-server/src/index.ts:407:38)

Impact

An unauthenticated remote attacker can terminate the exposed MCP process with a single malformed request. The service remains unavailable until restarted by an external supervisor.

Recommendation

Wrap request parsing in a local try/catch and return a bounded HTTP 400 response such as:

{"error":"Invalid JSON"}

The process should remain alive after malformed requests.

Impacted packages

Timeline

Published
7 hours ago
November 09, 2026 at 09:13 PM UTC
Last Modified
6 hours ago
November 09, 2026 at 09:30 PM UTC