{"id":"CVE-2026-102748","state":"PUBLISHED","title":"Dgraph: Zero Unauthenticated HTTP Admin removeNode Denial of Service","description":"Dgraph is an open source distributed GraphQL database. Prior to 25.4.0, Dgraph Zero registers administrative HTTP routes on port 6080 without authentication when the administrative interface is enabled. The /removeNode route accepts attacker-controlled id and group values and passes them to Server.RemoveNode, where group 0 can trigger ProposePeerRemoval. A remote unauthenticated attacker who can reach the Zero HTTP port can read topology through /state, allocate identifiers through /assign, access the exposed /moveTablet administrative route, or remove membership through /removeNode, disrupting the Zero control plane and destabilizing Alpha nodes that depend on Zero. The route registration occurs in dgraph/cmd/zero/run.go, and the demonstrated membership-removal path reaches Server.RemoveNode and ProposePeerRemoval. This issue is fixed in version 25.4.0.","publishedAt":"2026-10-14T18:34:15.971Z","updatedAt":"2026-10-15T15:06:27.332Z","severity":{"score":9.2,"label":"Critical","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:H","source":"GitHub_M"},"assigner":"GitHub_M","products":["dgraph-io dgraph"],"affected":[{"vendor":"dgraph-io","product":"dgraph","versions":[{"version":"< 25.4.0","status":"affected"}]}],"references":["https://github.com/dgraph-io/dgraph/security/advisories/GHSA-qj98-gp63-54xj","https://github.com/dgraph-io/dgraph/commit/c32f6041387fa631dbc057e265b71aec3384ead1","https://github.com/dgraph-io/dgraph/releases/tag/v25.4.0"],"weaknesses":["CWE-306","CWE-862"],"ingestedAt":"2026-10-29T20:10:13.529Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/102xxx/CVE-2026-102748.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-102748","state":"PUBLISHED","datePublished":"2026-10-14T18:34:15.971Z","dateUpdated":"2026-10-15T15:06:27.332Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-09-29T16:19:11.296Z"},"containers":{"cna":{"title":"Dgraph: Zero Unauthenticated HTTP Admin removeNode Denial of Service","descriptions":[{"lang":"en","value":"Dgraph is an open source distributed GraphQL database. Prior to 25.4.0, Dgraph Zero registers administrative HTTP routes on port 6080 without authentication when the administrative interface is enabled. The /removeNode route accepts attacker-controlled id and group values and passes them to Server.RemoveNode, where group 0 can trigger ProposePeerRemoval. A remote unauthenticated attacker who can reach the Zero HTTP port can read topology through /state, allocate identifiers through /assign, access the exposed /moveTablet administrative route, or remove membership through /removeNode, disrupting the Zero control plane and destabilizing Alpha nodes that depend on Zero. The route registration occurs in dgraph/cmd/zero/run.go, and the demonstrated membership-removal path reaches Server.RemoveNode and ProposePeerRemoval. This issue is fixed in version 25.4.0."}],"affected":[{"vendor":"dgraph-io","product":"dgraph","versions":[{"version":"< 25.4.0","status":"affected"}]}],"references":[{"url":"https://github.com/dgraph-io/dgraph/security/advisories/GHSA-qj98-gp63-54xj","name":"https://github.com/dgraph-io/dgraph/security/advisories/GHSA-qj98-gp63-54xj","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/dgraph-io/dgraph/commit/c32f6041387fa631dbc057e265b71aec3384ead1","name":"https://github.com/dgraph-io/dgraph/commit/c32f6041387fa631dbc057e265b71aec3384ead1","tags":["x_refsource_MISC"]},{"url":"https://github.com/dgraph-io/dgraph/releases/tag/v25.4.0","name":"https://github.com/dgraph-io/dgraph/releases/tag/v25.4.0","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV4_0":{"attackVector":"NETWORK","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"NONE","userInteraction":"NONE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"HIGH","vulnAvailabilityImpact":"HIGH","subConfidentialityImpact":"NONE","subIntegrityImpact":"NONE","subAvailabilityImpact":"HIGH","baseScore":9.2,"baseSeverity":"CRITICAL","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:H","version":"4.0"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-306","lang":"en","description":"CWE-306: Missing Authentication for Critical Function","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-862","lang":"en","description":"CWE-862: Missing Authorization","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-10-14T18:34:15.971Z"},"source":{"advisory":"GHSA-qj98-gp63-54xj","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-15T14:22:41.542294Z","id":"CVE-2026-102748","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-15T15:06:27.332Z"}}]}}}