Advisory Database
  • Advisories
  • Dependency Scanning
  1. npm
  2. ›
  3. @graphql-tools/utils
  4. ›
  5. CVE-2026-114604

CVE-2026-114604: GraphQL Tools: Prototype pollution in mergeIncrementalResult via non-primitive path segments

October 22, 2026

mergeIncrementalResult merges an incremental GraphQL response part into an accumulated execution result by walking ['data', ...incrementalResult.path] and assigning at the resolved location. setObjectKeyPath tries to reject dangerous segments with strict string equality against '__proto__', 'constructor' and 'prototype' (lines 50-52 and 60-62), but it never validates that a path segment is a primitive string or number. A JSON path segment such as ["__proto__"] is an array object, so ["__proto__"] !== '__proto__' and the guard passes; the very next statement does current[key], whose ToPropertyKey coercion turns that array into the string key "__proto__" and resolves Object.prototype. The following, innocuous-looking segment is then assigned directly onto Object.prototype.

In a consuming app, incrementalResult is the response part being merged — data parsed from an upstream @defer/@stream multipart or incremental-delivery response from another GraphQL server or transport. The ExecutionResult TypeScript annotation is not a runtime check, so a malicious, compromised, or MITM’d upstream can choose the path value and therefore choose global prototype keys and values in the gateway or client process.

Comparable paths through the same helper, for contrast:

  • Plain string segment "__proto__" -> blocked by strict equality, lines 50-52 (confirmed by a control case in testing)
  • Array segment ["__proto__"] -> unsafe: passes the guard at lines 50-52, then coerced to the __proto__ key at lines 53-57
  • Same operation in 10.10.0 and earlier, which used dset -> not exploitable (0/5 attack payloads succeeded)

References

  • github.com/advisories/GHSA-c4qx-w738-7hr3
  • github.com/ardatan/graphql-tools/commit/19f5b3373fd7ace0688d19950fc529ce8347952a
  • github.com/ardatan/graphql-tools/commit/20d36a5c6eb8fd5524420988e01a48618c450d70
  • github.com/ardatan/graphql-tools/pull/8467
  • github.com/ardatan/graphql-tools/releases/tag/@graphql-tools/utils@12.0.2
  • github.com/ardatan/graphql-tools/security/advisories/GHSA-c4qx-w738-7hr3
  • nvd.nist.gov/vuln/detail/CVE-2026-114604

Code Behaviors & Features

Detect and mitigate CVE-2026-114604 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →

Affected versions

All versions starting from 10.10.1 before 12.0.2

Fixed versions

  • 12.0.2

Solution

Upgrade to version 12.0.2 or above.

Impact 9.4 CRITICAL

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H

Learn more about CVSS

Weakness

  • CWE-1321: Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')

Source file

npm/@graphql-tools/utils/CVE-2026-114604.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Sat, 24 Oct 2026 00:15:16 +0000.