GraphQL Toolsのレガシー WebSocketエグゼキューターに認証情報が残り別ユーザーとして認証される脆弱性
概要
GraphQL Toolsのレガシー WebSocketエグゼキューター(@graphql-tools/executor-legacy-ws)の1.1.36より前には、リクエストごとの接続パラメーターが後続のユーザーの接続に残る脆弱性があります。同じエグゼキューターを異なる認可のコンテキストで使い回すと、後から来た利用者が前の利用者として認証される場合があります。修正版は1.1.36です。エグゼキューターをリクエストごとに作り直しているアプリケーションは影響を受けないとされています。
AI要約
外部の AI が作成した要約です。誤りを含むことがあります。重要な判断の前に、下の原文と参照URLを確認してください。
GraphQL Toolsのレガシー WebSocketエグゼキューター(@graphql-tools/executor-legacy-ws)の1.1.36より前には、リクエストごとの接続パラメーターが後続のユーザーの接続に残る脆弱性があります。同じエグゼキューターを異なる認可のコンテキストで使い回すと、後から来た利用者が前の利用者として認証される場合があります。修正版は1.1.36です。エグゼキューターをリクエストごとに作り直しているアプリケーションは影響を受けないとされています。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| ardatan | graphql-tools | — | — |
| @graphql-tools | executor-legacy-ws | — | — |
| npm | @graphql-tools/executor-legacy-ws |
1.1.36 未満 |
1.1.36 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Stale authentication state in @graphql-tools/executor-legacy-ws: per-request extensions.connectionParams persist in executor closure state and are replayed in a later caller's connection_init
Report metadata
| Field | Value |
|---|---|
| Package | @graphql-tools/executor-legacy-ws (npm, pkg:npm/%40graphql-tools/executor-legacy-ws) |
| Repository | https://github.com/ardatan/graphql-tools |
| Component | buildWSLegacyExecutor (packages/executors/legacy-ws/src/index.ts) |
| Vulnerability class | Stale authentication state / credential reuse across requests |
| Verified against | Commit b5d1c36ebb8ed3868260ffee5bbcbb423ad5c1f1; npm release 1.1.33 installed and exercised. During validation the same behaviour was also observed on the current latest release 1.1.35, and the unreset closure is still present on master. |
| API surface | Public documented API (buildWSLegacyExecutor, and request.extensions.connectionParams on the returned executor) |
| Affected in default configuration | Yes — the factory returns a general, reusable Executor with no per-identity or single-use restriction, and no supported teardown clears the retained parameters. |
Version note: the originally recorded affected range was <= 1.1.33. Validation showed that range understates exposure — the same proof of concept leaks identically on 1.1.35.
Summary
buildWSLegacyExecutor keeps a single closure-scoped object, executorConnectionParams, for the lifetime of the…
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory