CVE-2026-118665: GraphQL Tools legacy WebSocket executor auth context isolation

CVE-2026-118665 · Severity: high · CVSS 4 · Published 2026-10-28

GraphQL Tools is a library for building and managing GraphQL schemas. When a single shared WebSocket executor is reused across multiple requests with different users, sensitive authentication credentials from an earlier caller's connection could leak to a later caller. This could allow an attacker to impersonate another user or intercept their subscription data.

Technologies: @graphql-tools/executor-legacy-ws (npm). Vendors: npm.

Quick answers

Is CVE-2026-118665 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-118665 being exploited in the wild.
How severe is CVE-2026-118665?
High severity, with a CVSS score of 4, published 28 October 2026.
Which products and versions are affected?
Ardatan GraphQL Tools legacy WebSocket executor before 1.1.36; @graphql-tools/executor-legacy-ws (npm) <= 1.1.35, SEMVER:introduced=0,fixed=1.1.36.
Is there a fix for CVE-2026-118665?
Yes. @graphql-tools/executor-legacy-ws (npm): upgrade to 1.1.36 or later. Until then: Create a new executor for each request instead of reusing a single shared executor across different authorization contexts. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-118665 attacked?
It is attacked over the network, in a software library.
Am I affected by CVE-2026-118665?
Check whether you run Ardatan GraphQL Tools legacy WebSocket executor or @graphql-tools/executor-legacy-ws (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @graphql-tools/executor-legacy-ws (npm): upgrade to 1.1.36 or later
    npm install @graphql-tools/executor-legacy-ws@1.1.36

Create a new executor for each request instead of reusing a single shared executor across different authorization contexts.

Technical details

The buildWSLegacyExecutor function in the legacy WebSocket executor package retained request.extensions.connectionParams in a closure-scoped object across multiple executions, and failed to validate operation IDs when routing data frames. An attacker reusing a shared executor across authorization contexts can send a later request that omits sensitive keys but inherits them from a previous caller's connection_init payload, or receive subscription payloads intended for other operations. The fix isolates per-request authentication and enforces operation ID matching on all frames.

Affected products

  • ardatan GraphQL Tools legacy WebSocket executor before 1.1.36

Identifiers

  • CVE-2026-118665
  • GHSA-434m-5hcj-pxf3

Timeline

  • 2026-10-28: disclosed
  • 2026-10-01: patched

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.