Skip to content
Heist/ feed
Back to feed
Medium

graphql-php: Denial of Service via quadratic complexity in OverlappingFieldsCanBeMerged validation

Type: advisorySources: OSV

graphql-go is a Go implementation of GraphQL. In versions 15.31.4 and below, the OverlappingFieldsCanBeMerged validation rule performs O(n²) pairwise comparisons of fields sharing the same response name. An attacker can send a query with thousands of repeated identical fields, causing excessive CPU usage during validation before execution begins. This is not mitigated by existing QueryDepth or QueryComplexity rules. This issue has been fixed in version 15.31.5.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-40476
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 18:29 UTC · Revision 1

Source evidence

graphql-php: Denial of Service via quadratic complexity in OverlappingFieldsCanBeMerged validation

core-osv · Original source

Published 17 Apr 2026, 21:42 UTC

graphql-go is a Go implementation of GraphQL. In versions 15.31.4 and below, the OverlappingFieldsCanBeMerged validation rule performs O(n²) pairwise comparisons of fields sharing the same response name. An attacker can send a query with thousands of repeated identical fields, causing excessive CPU usage during validation before execution begins. This is not mitigated by existing QueryDepth or QueryComplexity rules. This issue has been fixed in version 15.31.5.

osv:CVE-2026-40476
Complete source record
{
  "id": "6f0368211566f1958fcddfc8c81e62d64d6f7f818831d0e68dc2db8636919309",
  "url": "https://osv.dev/vulnerability/CVE-2026-40476",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "graphql-php: Denial of Service via quadratic complexity in OverlappingFieldsCanBeMerged validation",
    "summary": "graphql-go is a Go implementation of GraphQL. In versions 15.31.4 and below, the OverlappingFieldsCanBeMerged validation rule performs O(n²) pairwise comparisons of fields sharing the same response name. An attacker can send a query with thousands of repeated identical fields, causing excessive CPU usage during validation before execution begins. This is not mitigated by existing QueryDepth or QueryComplexity rules. This issue has been fixed in version 15.31.5.",
    "evidence": "osv:CVE-2026-40476",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-40476",
      "aliases": [
        "CVE-2026-40476",
        "GHSA-68jq-c3rv-pcrr"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/webonyx/graphql-php",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "089c4ef7e112df85788cfe06596278a8f99f4aa9"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "15.31.5"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "089c4ef7e112df85788cfe06596278a8f99f4aa9"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v15.31.5"
                  },
                  {
                    "cpe": "cpe:2.3:a:webonyx:graphql-php:*:*:*:*:*:*:*:*",
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "15.31.5"
                      }
                    ],
                    "source": "CPE_RANGE"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v15.31.4",
            "v15.31.3",
            "v15.31.2",
            "v15.31.1",
            "v15.31.0",
            "v15.30.2",
            "v15.30.1",
            "v15.30.0",
            "v15.29.4",
            "v15.29.3",
            "v15.29.2",
            "v15.29.1",
            "v15.29.0",
            "v15.28.0",
            "v15.27.2",
            "v15.27.1",
            "v15.27.0",
            "v15.26.0",
            "v15.25.2",
            "v15.25.1",
            "v15.25.0",
            "v15.24.0",
            "v15.23.1",
            "v15.23.0",
            "v15.22.4",
            "v15.22.3",
            "v15.22.2",
            "v15.22.1",
            "v15.22.0",
            "v15.21.3",
            "v15.21.2",
            "v15.21.1",
            "v15.21.0",
            "v15.20.1",
            "v15.20.0",
            "v15.19.1",
            "v15.19.0",
            "v15.18.1",
            "v15.18.0",
            "v15.17.0",
            "v15.16.1",
            "v15.16.0",
            "v15.15.0",
            "v15.14.3",
            "v15.14.2",
            "v15.14.1",
            "v15.14.0",
            "v15.13.0",
            "v15.12.5",
            "v15.12.4",
            "v15.12.3",
            "v15.12.2",
            "v15.12.1",
            "v15.12.0",
            "v15.11.2",
            "v15.11.1",
            "v15.11.0",
            "v15.10.0",
            "v15.9.1",
            "v15.9.0",
            "v15.8.1",
            "v15.8.0",
            "v15.7.0",
            "v15.6.3",
            "v15.6.2",
            "v15.6.1",
            "v15.6.0",
            "v15.5.3",
            "v15.5.2",
            "v15.5.1",
            "v15.5.0",
            "v15.4.0",
            "v15.3.2",
            "v15.3.1",
            "v15.3.0",
            "v15.2.5",
            "v15.2.4",
            "v15.2.3",
            "v15.2.2",
            "v15.2.1",
            "v15.2.0",
            "v15.1.0",
            "v15.0.3",
            "v15.0.2",
            "v15.0.1",
            "v15.0.0",
            "v15.0.0-beta.1",
            "v15.0.0-alpha.2",
            "v15.0.0-alpha.1",
            "v14.5.1",
            "v14.5.0",
            "v14.4.1",
            "v14.4.0",
            "v14.3.0",
            "v14.2.0",
            "v14.1.1",
            "v14.1.0",
            "v14.0.2",
            "v14.0.1",
            "v14.0.0",
            "v0.13.0",
            "v0.12.1",
            "v0.12.0",
            "v0.11.5",
            "v0.11.4",
            "v0.11.3",
            "v0.11.2",
            "v0.11.1",
            "v0.11.0",
            "v0.10.2",
            "v0.10.1",
            "v0.10.0",
            "v0.10.0-rc1",
            "v0.9.10",
            "v0.9.9",
            "v0.9.8",
            "v0.9.7",
            "v0.9.6",
            "v0.9.5",
            "v0.9.4",
            "v0.9.3",
            "v0.9.2",
            "v0.9.1",
            "v0.9.0",
            "v0.8.0",
            "v0.7.2",
            "v0.7.1",
            "v0.7.0",
            "v0.6.4",
            "v0.6.3",
            "v0.6.2",
            "v0.6.1",
            "v0.6.0",
            "v0.5.9",
            "v0.5.8",
            "v0.5.7",
            "v0.5.6",
            "v0.5.5",
            "v0.5.4",
            "v0.5.3",
            "v0.5.2",
            "v0.5.1",
            "v0.5",
            "v0.4",
            "v0.3",
            "v0.2",
            "v0.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-40476.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:38.336080399Z",
      "provider": "osv",
      "references": [
        "https://github.com/webonyx/graphql-php/releases/tag/v15.31.5",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40476.json",
        "https://github.com/webonyx/graphql-php/security/advisories/GHSA-68jq-c3rv-pcrr",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-40476"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-407"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/40xxx/CVE-2026-40476.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-40476",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 505708,
  "published_at": "2026-04-17T21:42:59.511+00:00"
}