CVE-2026-104852
GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`
GraphQL Tools provides utilities for building, stitching, and mocking GraphQL schemas. Prior to 12.0.1, the GraphQL Tools utils package's mergeDeep function follows inherited properties while recursively merging source objects and does not exclude proto, constructor, or prototype keys. An unauthenticated GraphQL client can alias fields to those names so responses from two subgraphs collide during ordinary supergraph result merging, causing mergeDeep to traverse Object and Function prototypes and overwrite Function.prototype.call with a subgraph-supplied value. This breaks subsequent requests in the process until restart. This issue is fixed in version 12.0.1.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
8.2
GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`
GraphQL Tools provides utilities for building, stitching, and mocking GraphQL schemas. Prior to 12.0.1, the GraphQL Tools utils package's mergeDeep function follows inherited properties while recursively merging source objects and does not exclude proto, constructor, or prototype keys. An unauthenticated GraphQL client can alias fields to those names so responses from two subgraphs collide during ordinary supergraph result merging, causing mergeDeep to traverse Object and Function prototypes and overwrite Function.prototype.call with a subgraph-supplied value. This breaks subsequent requests in the process until restart. This issue is fixed in version 12.0.1.
- Record
CVE-2026-104852- CVSS 4.0
- 8.2 High
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 - Weakness
- CWE-1321
- Updated
- 2026-11-02
EUVDEUVD-2026-92849
8.2
GraphQL Tools provides utilities for building, stitching, and mocking GraphQL schemas. Prior to 12.0.1, the GraphQL Tools utils package's mergeDeep function follows inherited properties while recursively merging source objects and does not exclude proto, constructor, or prototype keys. An unauthenticated GraphQL client can alias fields to those names so responses from two subgraphs collide during ordinary supergraph result merging, causing mergeDeep to traverse Object and Function prototypes and overwrite Function.prototype.call with a subgraph-supplied value. This breaks subsequent requests in the process until restart. This issue is fixed in version 12.0.1.
- Record
EUVD-2026-92849- CVSS 4.0
- 8.2 High
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-7mx3-vvmw-hjmv
8.2
GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`
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.
{
shared {
fieldA
constructor: fieldB {
__proto__: child {
call: value
}
}
}
}
- Record
GHSA-7mx3-vvmw-hjmv- CVSS 4.0
- 8.2 High
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 - Weakness
- CWE-1321
- Updated
- 2026-11-02
NVD
8.2
GraphQL Tools provides utilities for building, stitching, and mocking GraphQL schemas. Prior to 12.0.1, the GraphQL Tools utils package's mergeDeep function follows inherited properties while recursively merging source objects and does not exclude proto, constructor, or prototype keys. An unauthenticated GraphQL client can alias fields to those names so responses from two subgraphs collide during ordinary supergraph result merging, causing mergeDeep to traverse Object and Function prototypes and overwrite Function.prototype.call with a subgraph-supplied value. This breaks subsequent requests in the process until restart. This issue is fixed in version 12.0.1.
- Record
CVE-2026-104852- CVSS 4.0
- 8.2 High
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-1321
- Updated
- 2026-11-02
OSV
8.2
GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`
GraphQL Tools provides utilities for building, stitching, and mocking GraphQL schemas. Prior to 12.0.1, the GraphQL Tools utils package's mergeDeep function follows inherited properties while recursively merging source objects and does not exclude proto, constructor, or prototype keys. An unauthenticated GraphQL client can alias fields to those names so responses from two subgraphs collide during ordinary supergraph result merging, causing mergeDeep to traverse Object and Function prototypes and overwrite Function.prototype.call with a subgraph-supplied value. This breaks subsequent requests in the process until restart. This issue is fixed in version 12.0.1.
- Record
CVE-2026-104852- CVSS 4.0
- 8.2 High
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 - Weakness
- CWE-1321
- Updated
- 2026-11-02
OSVGHSA-7mx3-vvmw-hjmv
8.2
GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`
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.
{
shared {
fieldA
constructor: fieldB {
__proto__: child {
call: value
}
}
}
}
- Record
GHSA-7mx3-vvmw-hjmv- CVSS 4.0
- 8.2 High
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 - Weakness
- CWE-1321
- Updated
- 2026-11-02
Show 14 moreShow less
OSVCLSA-2026-1791291395 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 11.2.2-tuxcare.1.
- Record
CLSA-2026-1791291395- Updated
- 2026-11-02
OSVCLSA-2026-1792937883 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 6.0.9-tuxcare.1.
- Record
CLSA-2026-1792937883- Updated
- 2026-11-02
OSVCLSA-2026-1793018204 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 8.9.0-tuxcare.1.
- Record
CLSA-2026-1793018204- Updated
- 2026-11-02
OSVCLSA-2026-1793019970 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 7.10.0-tuxcare.2.
- Record
CLSA-2026-1793019970- Updated
- 2026-11-02
OSVCLSA-2026-1793020728 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 8.9.1-tuxcare.1.
- Record
CLSA-2026-1793020728- Updated
- 2026-11-02
OSVCLSA-2026-1793021479 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 8.6.5-tuxcare.1.
- Record
CLSA-2026-1793021479- Updated
- 2026-11-02
OSVCLSA-2026-1793022219 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 8.8.0-tuxcare.1.
- Record
CLSA-2026-1793022219- Updated
- 2026-11-02
OSVCLSA-2026-1793023448 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 8.12.0-tuxcare.1.
- Record
CLSA-2026-1793023448- Updated
- 2026-11-02
OSVCLSA-2026-1793047049 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 9.2.1-tuxcare.1.
- Record
CLSA-2026-1793047049- Updated
- 2026-11-02
OSVCLSA-2026-1793047143 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 8.13.1-tuxcare.1.
- Record
CLSA-2026-1793047143- Updated
- 2026-11-02
OSVCLSA-2026-1793047238 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 10.9.1-tuxcare.1.
- Record
CLSA-2026-1793047238- Updated
- 2026-11-02
OSVCLSA-2026-1793113090 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 12.0.0-tuxcare.1.
- Record
CLSA-2026-1793113090- Updated
- 2026-11-02
OSVCLSA-2026-1793113298 No score
TuxCare security update for @graphql-tools/utils (1 CVE)
TuxCare rebuilt @graphql-tools/utils to address 1 CVE. Fixed in 10.11.0-tuxcare.1.
- Record
CLSA-2026-1793113298- Updated
- 2026-11-02
OSVROOT-APP-NPM-CVE-2026-104852 No score
CVE-2026-104852 in @graphql-tools/utils - Patched by Root
Root has patched CVE-2026-104852 in the @graphql-tools/utils package for Root:npm. Multiple fixed versions available.
- Record
ROOT-APP-NPM-CVE-2026-104852- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
@graphql-tools/utilsnpm |
through 12.0.0 | 12.0.1 |
@graphql-tools/utilsTuxCare:npm |
11.2.2-tuxcare.0 up to 11.2.2-tuxcare.1, plus listed versions 11.2.2 |
11.2.2-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
6.0.9-tuxcare.0 up to 6.0.9-tuxcare.1, plus listed versions 6.0.9 |
6.0.9-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
8.9.0-tuxcare.0 up to 8.9.0-tuxcare.1, plus listed versions 8.9.0 |
8.9.0-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
7.10.0-tuxcare.0 up to 7.10.0-tuxcare.2, plus listed versions 7.10.07.10.0-tuxcare.1 |
7.10.0-tuxcare.2 |
@graphql-tools/utilsTuxCare:npm |
8.9.1-tuxcare.0 up to 8.9.1-tuxcare.1, plus listed versions 8.9.1 |
8.9.1-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
8.6.5-tuxcare.0 up to 8.6.5-tuxcare.1, plus listed versions 8.6.5 |
8.6.5-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
8.8.0-tuxcare.0 up to 8.8.0-tuxcare.1, plus listed versions 8.8.0 |
8.8.0-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
8.12.0-tuxcare.0 up to 8.12.0-tuxcare.1, plus listed versions 8.12.0 |
8.12.0-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
9.2.1-tuxcare.0 up to 9.2.1-tuxcare.1, plus listed versions 9.2.1 |
9.2.1-tuxcare.1 |
Show 7 moreShow less
| Package | Affected | Fixed |
|---|---|---|
@graphql-tools/utilsTuxCare:npm |
8.13.1-tuxcare.0 up to 8.13.1-tuxcare.1, plus listed versions 8.13.1 |
8.13.1-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
10.9.1-tuxcare.0 up to 10.9.1-tuxcare.1, plus listed versions 10.9.1 |
10.9.1-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
12.0.0-tuxcare.0 up to 12.0.0-tuxcare.1, plus listed versions 12.0.0 |
12.0.0-tuxcare.1 |
@graphql-tools/utilsTuxCare:npm |
10.11.0-tuxcare.0 up to 10.11.0-tuxcare.1, plus listed versions 10.11.0 |
10.11.0-tuxcare.1 |
@graphql-tools/utilsnpm |
before 12.0.1 | 12.0.1 |
@graphql-tools/utilsRoot:npm |
before 10.5.6-aikido.1 | 10.5.6-aikido.110.6.2-aikido.111.1.0-aikido.18.12.0-aikido.110.0.5-aikido.18.13.1-aikido.110.5.4-aikido.111.0.0-aikido.18.9.0-aikido.111.2.2-aikido.19.2.1-aikido.110.11.0-aikido.112.0.0-aikido.110.6.1-aikido.19.0.0-aikido.111.0.0-aikido.211.2.2-aikido.210.11.0-aikido.211.1.0-aikido.212.0.0-aikido.2 |
@rootio/graphql-tools__utilsRoot:npm |
before 10.5.6-root.io.1 | 10.5.6-root.io.110.6.2-root.io.111.1.0-root.io.18.12.0-root.io.110.0.5-root.io.18.13.1-root.io.110.5.4-root.io.111.0.0-root.io.18.9.0-root.io.111.2.2-root.io.19.2.1-root.io.110.11.0-root.io.112.0.0-root.io.110.6.1-root.io.19.0.0-root.io.111.0.0-root.io.211.2.2-root.io.210.11.0-root.io.211.1.0-root.io.212.0.0-root.io.2 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-104852 is a high vulnerability (CVSS 8.2) in Ardatan Graphql-tools, published October 5, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.45%, the 39th percentile. Fixed in @graphql-tools/utils 12.0.1.
References
github.com/ardatan/graphql-tools/security/advisories/GHSA-7mx3-vvmw-hjmv
github.com/ardatan/graphql-tools/pull/8423
github.com/graphql-hive/gateway/pull/2600
github.com/ardatan/graphql-tools/commit/0b9529f1988fd36186a7c106a6efe0356f1b7f2e
github.com/ardatan/graphql-tools/releases/tag/@graphql-tools/[email protected]
github.com/advisories/GHSA-7mx3-vvmw-hjmv
github.com/CVEProject/cvelistV5/tree/main/cves/2026/104xxx/CVE-2026-104852.json
nvd.nist.gov/vuln/detail/CVE-2026-104852
github.com/ardatan/graphql-tools