All vulnerabilities
CVE-2026-103921GHSA-6fw5-9hq8-w87g

@graphql-tools/executor-legacy-ws: GraphQL Tools: TLS Certificate Validation Disabled in Legacy GraphQL WebSocket Executor

ardatan @graphql-tools/executor-legacy-wsnpmLibraries & packages
CVSS
7.4High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.27%Chance of exploitation activity in the next 30 days, higher than 17% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in1.1.35Fixed versionGitHub
Published1 Oct 2026Updated 5 Oct 2026CVE List

What fixes it

  • 1.1.35@graphql-tools/executor-legacy-ws, npmGitHubnpm install @graphql-tools/executor-legacy-ws@1.1.35

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

Impact

buildWSLegacyExecutor() in @graphql-tools/executor-legacy-ws previously hardcoded rejectUnauthorized: false when creating WebSocket connections over WSS. This disabled TLS certificate validation, allowing a network-positioned attacker to perform a Man-in-the-Middle (MITM) attack against applications that use this executor with a wss:// endpoint. Credentials passed via connectionParams or headers could be intercepted, and subscription data could be tampered with.

Who is impacted: Applications using @graphql-tools/executor-legacy-ws (directly or via @graphql-tools/url-loader with SubscriptionProtocol.LEGACY_WS) to connect to a wss:// endpoint from Node.js while sending authentication material over the connection.

Browser WebSocket clients are unaffected by this option (browsers always validate certificates).

Patches

Upgrade to @graphql-tools/executor-legacy-ws@1.1.35 or later (and @graphql-tools/url-loader@9.1.9 or later if you use the loader). TLS certificate validation is enabled by default. Callers that intentionally use self-signed certificates in trusted environments can opt out with rejectUnauthorized: false.

Workarounds

  • Prefer the modern graphql-ws / SubscriptionProtocol.WS path where possible.
  • Until upgraded, avoid sending secrets over legacy WSS connections, or terminate TLS at a trusted proxy and use ws:// only on trusted networks.
  • Supply a custom webSocketImpl that enforces certificate validation.

Text from GitHub Advisory Database

Affected versions 4

  • @graphql-tools/executor-legacy-ws, npm<= 1.1.34GitHub
  • graphql-toolsaffected: < 1.1.35CVE List
  • executor-legacy-wsaffected: < 1.1.35CVE List
  • @graphql-tools/executor-legacy-ws, npmfrom first release, fixed in 1.1.35OSV

References 6