[ CVE-2026-118665 · Published 28 Oct 2026 ]

GraphQL Tools: Per-request connection parameters persist into later users' WebSocket authentications

CVSS 8.2 EPSS <1%Fix available

[ Why it matters ]Priority signals

  • Public proof-of-concept exploit exists (CISA SSVC)

[ Description ]Official description

GraphQL Tools provides utilities for building, stitching, and mocking GraphQL schemas. Prior to version 1.1.36 of the GraphQL Tools legacy WebSocket executor package, buildWSLegacyExecutor in packages/executors/legacy-ws/src/index.ts retains request.extensions.connectionParams in the closure-scoped executorConnectionParams object after cleanupWebsocket closes a connection. When one executor is reused across different authorization contexts, a later request that omits a sensitive key can send an earlier caller's Authorization or tenant value in its connection_init payload, causing the downstream server to authenticate the later caller as the earlier user. Applications that create a new executor for every request are not affected. This issue is fixed in version 1.1.36 of the GraphQL Tools legacy WebSocket executor package.

[ Fixes ]Fixes and patches

[ Packages ]Affected open-source packages

  • @graphql-tools/executor-legacy-ws npmAffected <= 1.1.35 · fixed in 1.1.36 · GHSA-434m-5hcj-pxf3