[ CVE-2026-118665 · Published 28 Oct 2026 ]
GraphQL Tools: Per-request connection parameters persist into later users' WebSocket authentications
[ 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
- @graphql-tools/executor-legacy-ws 1.1.36Fixed version · GitHub Advisories · npm package @graphql-tools/executor-legacy-ws: upgrade to 1.1.36 or later (affected <= 1.1.35)
[ Packages ]Affected open-source packages
- @graphql-tools/executor-legacy-ws npmAffected <= 1.1.35 · fixed in 1.1.36 · GHSA-434m-5hcj-pxf3