Résumé
GraphQL Tools has prototype pollution in well-established utility function `mergeDeep`
Détails de l’avis
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
}
}
}
}
Références
- https://github.com/advisories/GHSA-7mx3-vvmw-hjmv
- 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/releases/tag/@graphql-tools/utils@12.0.1
Vulnérabilités liées
Tout Supply chain →- MEDIUMCVE-2026-107301
msgpack5: Partial options disable prototype protection
- HIGHCVE-2026-105858
Payload: Remote Code Execution through first-register
- CRITICALCVE-2026-105857
Payload Form Builder has an RCE issue
- CRITICALCVE-2026-105844
Payload: Prototype pollution in Payload Import Export plugin
- CRITICALCVE-2026-104848
Tinypool: Prototype Pollution gadget in worker options leads to Remote Code Execution
- CRITICALCVE-2026-104849
Tinypool: Prototype Pollution Gadget to RCE in run() options