Zero Radar
← feed
HighVulnerabilityCVE-2026-118665updated 28 Oct 2026, 21:17 UTC

GraphQL legacy WebSocket executor can reuse one user's login on another user's request

If one shared connection is used for several users, a later user's request can be sent with the previous user's login token. The server may then treat the new request as coming from the earlier user.

Fix availableOfficial, 2 sources
SeverityHighCVSS 8.2 of 10
Being exploited?UnclearNo reports either way yet
Fix available?Yes@graphql-tools/executor-legacy-ws 1.1.36 · since 28 Oct 2026
How sure is this?Official, 2 sourcesBacked by an official source

How the attack works simplified

  1. 1User A requestSends Authorization token in extensions
  2. 2Shared executorKeeps token in closure state
  3. 3User B requestOmits auth key entirely
  4. 4connection_init sentStill carries User A's token
  5. 5Wrong identityDownstream authenticates as User A
  6. ResultUser B acts as User A downstream

What happened

In @graphql-tools/executor-legacy-ws, buildWSLegacyExecutor stores extensions.connectionParams in a closure-scoped object that is never cleared, so keys such as Authorization or tenant values persist and are merged into connection_init for later executions that omit them.

Why it is dangerous: Requests from one user can be authenticated as another user on the downstream GraphQL server, exposing or changing that user's data. Shared executors used by gateways, schema stitching, or mesh setups that forward per-user credentials are at risk.

Are you affected?

You are affected if you use @graphql-tools/executor-legacy-ws at version 1.1.35 or earlier and reuse one executor across different users or authorization contexts.

Package / productAffected versionsFixed in
@graphql-tools/executor-legacy-ws · npm<= 1.1.351.1.36

What to do

  1. Update @graphql-tools/executor-legacy-ws to 1.1.36 or later
  2. Until updated, do not reuse one executor instance across different users or authorization contexts; create a new executor per request
  3. Review downstream logs for requests authenticated with credentials that did not match the calling user

Timeline

  1. 28 Oct 2026, 21:05 UTC
    Publicly disclosed
  2. 28 Oct 2026, 21:05 UTC
    Reported by GitHub Advisory · GitHub Advisory
  3. 28 Oct 2026, 21:05 UTC
    Picked up by Zero Radar
  4. 28 Oct 2026, 21:17 UTC
    NVD reported on it · NVD

Sources 2 reports, oldest first

Official vendor, government CERT or advisory database

Technical details

ID
CVE-2026-118665 · GHSA-434m-5hcj-pxf3
CVSS
8.2 / 10
Disclosed
28 Oct 2026, 21:05 UTC
On Zero Radar
28 Oct 2026, 21:05 UTC (0 min after disclosure)
Last change
28 Oct 2026, 21:17 UTC

The plain-language parts and the attack diagram were written by an AI model (anthropic/claude-haiku-5.5) from the sources above. Facts like versions, exploitation and dates come from the sources themselves. How Zero Radar works

GraphQL legacy WebSocket executor can reuse one user's login on another user's request · Zero Radar