CVE-2026-41492: Unauthenticated Admin Token Disclosure Leading to Authentication Bypass via /debug/vars in Dgraph
Summary Dgraph v25.3.2 still exposes the process command line through the unauthenticated /debug/vars endpoint on Alpha. Because the admin token is commonly supplied via the --security "token=..." startup flag, an unauthenticated attacker can retrieve that token and replay it in the X-Dgraph-AuthToken header to access admin-only endpoints.
This is a variant of the previously fixed /debug/pprof/cmdline issue, but the current fix is incomplete because it blocks only /debug/pprof/cmdline and still serves http.DefaultServeMux, which includes expvar's /debug/vars handler.
Details Alpha still exposes Go's default HTTP mux:
- x/metrics.go - imports expvar - initializes Conf = expvar.NewMap("dgraphconfig") - Go's expvar package automatically registers /debug/vars - expvar publishes: - cmdline = os.Args - memstats = runtime.Memstats
Alpha's HTTP handler explicitly blocks only the old CVE path:
- dgraph/cmd/alpha/run.go - checks if r.URL.Path == "/debug/pprof/cmdline" and returns 404 - otherwise falls through to http.DefaultServeMux.ServeHTTP(w, r)
Admin endpoints still trust the leaked token:
- dgraph/cmd/alpha/admin.go - reads X-Dgraph-AuthToken - compares it to worker.Config.AuthToken PoC 1. Send an unauthenticated request to Alpha:
http GET /debug/vars HTTP/1.1 Host: target:8080
2. Parse the JSON response and read the cmdline field.
3. Extract the admin token from the startup arguments, for example:
text --security token=debug-vars-secret;
4. Replay the token to an admin-only endpoint:
http GET /admin/config/cachemb HTTP/1.1 Host: target:8080 X-Dgraph-AuthToken: debug-vars-secret
5. The request is accepted as an authorized admin request.
This was reproduced against dgraph/dgraph:v25.3.2 in Docker.
Observed behavior:
- unauthenticated /debug/vars leaked the configured token - replaying the leaked token in X-Dgraph-AuthToken successfully accessed /admin/config/cachemb - response body was:
text 4096
It was verified that the old CVE path appears specifically patched in the same version:
- /debug/pprof/cmdline returned 404 Not Found - /debug/pprof/ remained reachable
Impact Unauthenticated attackers can obtain the Alpha admin token and gain unauthorized administrative access.
This enables privileged admin operations such as:
- reading privileged admin configuration - mutating admin configuration - performing operational control actions gated by X-Dgraph-AuthToken
In deployments where the Alpha HTTP port is reachable by untrusted parties, this is a practical authentication bypass to admin functionality.
Other sources
Dgraph is an open source distributed GraphQL database. Prior to 25.3.3, Dgraphl exposes the process command line through the unauthenticated /debug/vars endpoint on Alpha. Because the admin token is commonly supplied via the --security "token=..." startup flag, an unauthenticated attacker can retrieve that token and replay it in the X-Dgraph-AuthToken header to access admin-only endpoints. This is a variant of the previously fixed /debug/pprof/cmdline issue, but the current fix is incomplete because it blocks only /debug/pprof/cmdline and still serves http.DefaultServeMux, which includes expvar's /debug/vars handler. This vulnerability is fixed in 25.3.3.
— MITRE
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-41492?
CVE-2026-41492 is considered a high severity vulnerability due to the exposure of sensitive information through an unauthenticated endpoint.
How do I fix CVE-2026-41492?
To fix CVE-2026-41492, upgrade Dgraph to version 25.3.3 or later.
What systems are affected by CVE-2026-41492?
CVE-2026-41492 affects Dgraph versions up to and including 25.3.2, as well as versions up to 1.2.8 and 24.1.8.
What exposure risk does CVE-2026-41492 present?
CVE-2026-41492 allows unauthenticated attackers to access sensitive command-line tokens, which can lead to unauthorized access.
Is authentication required to exploit CVE-2026-41492?
No, CVE-2026-41492 can be exploited without authentication since it involves an unauthenticated endpoint.