{"schemaVersion":3,"id":"CVE-2026-102748","aliases":["GHSA-qj98-gp63-54xj"],"status":"published","duplicateOf":null,"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.","dates":{"published":"2026-10-14T18:34:15.971Z","modified":"2026-10-15T15:06:27.332Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":9.2,"severity":"critical","version":"4.0","versionLabel":"v4.0","source":"CVE.org","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","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":9.2,"severity":"critical","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","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":9.2,"severity":"critical","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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"OSV · Go","score":9.2,"severity":"critical","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","exploitability":null,"impact":null,"computed":true}]},"epss":{"probability":0.00486,"percentile":0.40895,"severity":"low","asOf":"2026-10-22T00:00:00.000Z","change":{"pp":null,"baselineDate":null,"baselineScore":null},"history":[{"date":"2026-10-15T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-22T00:00:00.000Z","score":0.00486,"percentile":0.40895}],"last30":[{"date":"2026-10-15T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-20T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-21T00:00:00.000Z","score":0.00486,"percentile":null},{"date":"2026-10-22T00:00:00.000Z","score":0.00486,"percentile":0.40895}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-306","name":"Missing Authentication for Critical Function","description":"The product does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.","type":"weakness","status":"Draft","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/306.html"},{"id":"CWE-862","name":"Missing Authorization","description":"The product does not perform an authorization check when an actor attempts to access a resource or perform an action.","type":"weakness","status":"Incomplete","abstraction":"Class","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/862.html"}],"affected":[{"vendor":"dgraph-io","product":"dgraph","name":"dgraph","label":"dgraph","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 25.4.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 25.4.0","eol":null,"hubHref":"/vendor/dgraph-io/dgraph"},{"vendor":"github.com/dgraph-io/dgraph","product":"v25","name":"github.com/dgraph-io/dgraph/v25","label":"v25","ecosystem":"Go","cpePart":null,"purl":"pkg:golang/github.com/dgraph-io/dgraph/v25","purlType":"golang","versions":[{"text":"< 25.4.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 25.4.0","eol":null,"hubHref":null}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://github.com/dgraph-io/dgraph/security/advisories/GHSA-qj98-gp63-54xj","label":"github.com/dgraph-io/dgraph/security/advisories/GHSA-qj98-gp63-54xj","hostname":"github.com","tags":["X Refsource CONFIRM","WEB"]},{"url":"https://github.com/dgraph-io/dgraph/commit/c32f6041387fa631dbc057e265b71aec3384ead1","label":"github.com/dgraph-io/dgraph/commit/c32f6041387fa631dbc057e265b71aec3384ead1","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://github.com/dgraph-io/dgraph/releases/tag/v25.4.0","label":"github.com/dgraph-io/dgraph/releases/tag/v25.4.0","hostname":"github.com","tags":["X Refsource MISC","WEB"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-102748","label":"nvd.nist.gov/vuln/detail/CVE-2026-102748","hostname":"nvd.nist.gov","tags":["Advisory"]},{"url":"https://github.com/dgraph-io/dgraph","label":"github.com/dgraph-io/dgraph","hostname":"github.com","tags":["PACKAGE"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-10-14T18:34:15.971Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-10-15T15:06:27.332Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":70,"level":"high","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-22T20:04:24.886Z","stale":false,"partial":false}}