{"id":"GHSA-7mx3-vvmw-hjmv","revision":"cac9f1bdfd2b4c379750d9fb0df4e8b0","records":[{"revision":"cac9f1bdfd2b4c379750d9fb0df4e8b0","observedAt":"2026-10-24T13:17:17.793+00:00","statement":{"source":"osv","id":"GHSA-7mx3-vvmw-hjmv","aliases":["CVE-2026-104852"],"title":"GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`","description":"Closed by https://github.com/ardatan/graphql-tools/pull/8423\nMitigated in Hive Gateway by https://github.com/graphql-hive/gateway/pull/2600\n\nA 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.\n\n\n```graphql\n{\n  shared {\n    fieldA\n    constructor: fieldB {\n      __proto__: child {\n        call: value\n      }\n    }\n  }\n}\n```","state":0,"publishedAt":"2026-10-05T22:56:46+00:00","modifiedAt":"2026-10-05T23:15:03.9906365+00:00","affected":[{"ecosystem":"npm","name":"@graphql-tools/utils","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"12.0.1"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V4","vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"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/utils@12.0.1"],"sourceUrl":"https://github.com/advisories/GHSA-7mx3-vvmw-hjmv","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-7mx3-vvmw-hjmv","identifiers":["GHSA-7mx3-vvmw-hjmv","CVE-2026-104852"]},"retained":false,"historicalAffected":[]}],"coverage":[]}