GHSA-7mx3-vvmw-hjmv
Dashboard / Vulnerabilities / GHSA-7mx3-vvmw-hjmv
Summary: GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`
Details: Closed by https://github.com/ardatan/graphql-tools/pull/8423 Mitigated in Hive Gateway by https://github.com/graphql-hive/gateway/pull/2600 A client can alias fields to `constructor`, `__proto__` or `prototype` so that the response keys from two subgraphs collide on those names during result merging. Because `mergeDeep` recursed through inherited properties, the merge walked `{}.constructor` to `Object`, then `Object.__proto__` to `Function.prototype`, and wrote a subgraph-supplied value over `Function.prototype.call`, breaking every subsequent request in the process until restart. This is remotely triggerable by an unauthenticated client with a single query against any supergraph that merges an object from two subgraphs, which is the ordinary `@shareable` or entity case, so it is a denial of service rather than a theoretical hardening issue. ```graphql { shared { fieldA constructor: fieldB { __proto__: child { call: value } } } } ```
References: https://github.com/ardatan/graphql-tools/security/advisories/GHSA-7mx3-vvmw-hjmv, https://github.com/ardatan/graphql-tools/pull/8423, https://github.com/graphql-hive/gateway/pull/2600, https://github.com/ardatan/graphql-tools/commit/0b9529f1988fd36186a7c106a6efe0356f1b7f2e, https://github.com/ardatan/graphql-tools, https://github.com/ardatan/graphql-tools/releases/tag/@graphql-tools/[email protected]
Affected packages
Package
Name: @graphql-tools/utils
Purl: pkg:npm/%40graphql-tools/utils
Affected ranges
Type: SEMVER
Events:
