GraphQL ToolsのWebSocket実行ライブラリで、前の利用者の認証情報が次の利用者の接続に残るHIGH脆弱性が確認された。共有executorを使うゲートウェイなどが対象で、1.1.36への更新が推奨される。
30秒でわかる / THE SIGNAL
GraphQL ToolsのWebSocket実行ライブラリで、前の利用者の認証情報が次の利用者の接続に残るHIGH脆弱性が確認された。共有executorを使うゲートウェイなどが対象で、1.1.36への更新が推奨される。
WebSocket認証の境界が崩れる条件
開発元のGHSA-434m-5hcj-pxf3によると、`buildWSLegacyExecutor`で作成した実行器を複数の利用者間で共有し、リクエストごとの`extensions.connectionParams`に認証情報を渡す構成で問題が起こる。古い実装は`executorConnectionParams`を接続終了後も保持し、次の`connection_init`へ前のユーザーのトークンやテナント情報を再利用する。後続の匿名・低権限ユーザーが、前の利用者の権限でGraphQL subscriptionのデータを受け取る可能性がある。ライブラリ内のUrlLoaderのようにリクエストごとに新しいexecutorを作る経路は対象外と説明されている。
修正版と管理者が確認すべき点
影響するのは`@graphql-tools/executor-legacy-ws`の1.1.35以下。開発元は1.1.36で各実行の接続と`connection_init`パラメータを分離した。依存関係と実際の実行器の再利用方法を確認し、1.1.36以上へ更新する。実環境での悪用確認や被害件数は公式勧告には記載されていない。開発元のHIGH評価は確認できるが、公式CVSS数値は掲載されていないため付与しない。