Skip to content
Heist/ feed
HighFix available

GraphQL Tools: TLS Certificate Validation Disabled in Legacy GraphQL WebSocket Executor

Type: advisorySource: OSV1 source record

## 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.

Announced Group revision 1
Original source ↗

GHSA-6fw5-9hq8-w87g

Primary source · Revision 1

Imported from structured advisory data. Source references identify upstream records or fields; verify affected versions and your deployed configuration.

Security context

Source reference: osv:GHSA-6fw5-9hq8-w87g

@graphql-tools/executor-legacy-ws

Source reference: /affected/0/package/name

Affected versions
Not stated in this record
Fixed versions
1.1.35

Source reference: /affected/0/ranges

Prerequisites
Not stated in this record

Structured affected-version data

Original package identities and version rules from this source.

[
  {
    "ranges": [
      {
        "type": "SEMVER",
        "events": [
          {
            "introduced": "0"
          },
          {
            "fixed": "1.1.35"
          }
        ]
      }
    ],
    "package": {
      "name": "@graphql-tools/executor-legacy-ws",
      "purl": "pkg:npm/%40graphql-tools/executor-legacy-ws",
      "ecosystem": "npm"
    },
    "database_specific": {
      "source": "https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/10/GHSA-6fw5-9hq8-w87g/GHSA-6fw5-9hq8-w87g.json",
      "last_known_affected_version_range": "<= 1.1.34"
    }
  }
]
Related CVEs
CVE-2026-103921

Source reference: /aliases

Publisher severity

high

Source reference: /database_specific/severity

Linked CVE context

These ratings describe the referenced vulnerabilities and products. They are not a severity rating for every application using this dependency.

CVE-2026-103921 · High

graphql-tools, executor-legacy-ws

Event
#85915 · Revision 1
Added to Heist Feed
Publisher date
Read the original announcement