GHSA-6fw5-9hq8-w87g
GraphQL Tools: TLS Certificate Validation Disabled in Legacy GraphQL WebSocket Executor
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | @graphql-tools/executor-legacy-ws | < 1.1.35 | 1.1.35 |
Details
As written in the advisory (Markdown source, shown as plain text).
## 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/[email protected]` or later (and `@graphql-tools/[email protected]` 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.
References
External links from the advisory. They lead to third-party sites.
- https://github.com/ardatan/graphql-tools/security/advisories/GHSA-6fw5-9hq8-w87g
- https://nvd.nist.gov/vuln/detail/CVE-2026-103921
- https://github.com/ardatan/graphql-tools/pull/8426
- https://github.com/ardatan/graphql-tools/commit/3831a0661514c91d99971052f983552556880402
- https://github.com/ardatan/graphql-tools
- https://github.com/ardatan/graphql-tools/releases/tag/@graphql-tools/[email protected]