Advisory Database
  • Advisories
  • Dependency Scanning
  1. npm
  2. ›
  3. @graphql-tools/executor-legacy-ws
  4. ›
  5. CVE-2026-118666

CVE-2026-118666: GraphQL Tools: Shared legacy executor routes one subscription's results to a different caller

October 28, 2026

buildWSLegacyExecutor keeps one WebSocket in closure state and installs the message handler by assigning to the socket’s single websocket.onmessage property inside subscribe(). Every new subscription therefore overwrites the previous subscriber’s handler, and the handler’s case LEGACY_WS.DATA branch calls observer.next(data.payload) without ever comparing data.id to the operation id that this subscription created at line 103 and sent with START at line 123. When one executor instance is reused for overlapping subscriptions, the most recent caller receives payloads belonging to the earlier caller, and the earlier caller receives nothing.

In a consuming application, the tainted input is an ordinary, correctly-tagged DATA frame emitted by the legitimate downstream server for the victim’s operation. The attacker does not need to control or compromise that server; they only need to be able to start their own subscription through the same shared executor while the victim’s subscription is active — the natural shape of a gateway, stitched schema, or any service that builds a remote executor once and reuses it per request.

The surrounding code shows the inconsistency:

  • packages/loaders/url/src/index.ts:262-295 (in-repo UrlLoader wrapper) → constructs a fresh legacy executor inside each request, so that caller avoids the shared state.
  • buildWSLegacyExecutor’s returned executor, reused across callers → unsafe: shared onmessage overwritten at line 113, DATA dispatched without an id check at lines 145-147.
  • packages/loaders/url/src/index.ts:172-182 → also a production caller of the legacy executor; safe only insofar as the wrapper above rebuilds the executor per request, not because of any check in the executor itself.

References

  • github.com/advisories/GHSA-mp66-8ww2-pcwm
  • github.com/ardatan/graphql-tools/commit/c2f226e6f68236be9e4a577f29faeaa92547458b
  • github.com/ardatan/graphql-tools/pull/8480
  • github.com/ardatan/graphql-tools/releases/tag/@graphql-tools/executor-legacy-ws@1.1.36
  • github.com/ardatan/graphql-tools/security/advisories/GHSA-mp66-8ww2-pcwm
  • nvd.nist.gov/vuln/detail/CVE-2026-118666

Code Behaviors & Features

Detect and mitigate CVE-2026-118666 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →

Affected versions

All versions before 1.1.36

Fixed versions

  • 1.1.36

Solution

Upgrade to version 1.1.36 or above.

Impact 5.9 MEDIUM

CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:H/I:N/A:L

Learn more about CVSS

Weakness

  • CWE-200: Exposure of Sensitive Information to an Unauthorized Actor

Source file

npm/@graphql-tools/executor-legacy-ws/CVE-2026-118666.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Sat, 31 Oct 2026 00:17:25 +0000.