CVE-2026-41492: Dgraph Authentication Bypass Vulnerability
CRITICALCVE-2026-41492 is a CRITICAL (CVSS 9.8) authentication bypass vulnerability (CWE-200: Exposure of Sensitive Information to an Unauthorized Actor) affecting Dgraph libraries in the Go ecosystem. The issue involves unauthenticated admin token disclosure leading to authentication bypass via /debug/vars. Remediation is available by upgrading affected packages to version 25.3.3.
CVE-2026-41492 at a Glance
Security Impact
CVSS: 9.8
The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H).
How to Fix CVE-2026-41492
To remediate this vulnerability, upgrade all affected Dgraph dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.
Upgrade github.com/dgraph-io/dgraph/v25 to 25.3.3
Upgrade github.com/dgraph-io/dgraph/v24 to Latest secure release
Upgrade github.com/dgraph-io/dgraph to Latest secure release
Run the following command in your project directory to verify that all resolved dependencies use the patched release:
inspect dependencies for github.com/dgraph-io/dgraph/v25
How to Check if You Are Affected
To determine whether your application is affected by CVE-2026-41492, inspect your project dependencies for Dgraph:
inspect dependencies for github.com/dgraph-io/dgraph/v25
Analyze the terminal output to locate any version of Dgraph in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 25.3.3), your application is affected.
Note: Verify declared build manifests and deployed runtime container environments.
Technical Details
Vulnerability Mechanism & Technical Analysis
This vulnerability is classified under CWE-200: Exposure of Sensitive Information to an Unauthorized Actor, where the product exposes sensitive information to an actor that is not explicitly authorized to have access to that information. In Dgraph, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.
Source Advisory Statement
CVE-2026-41492 Affected Dgraph Versions
3 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
github.com/dgraph-io/dgraph/v25
|
Go |
< 25.3.3
|
25.3.3
|
|
github.com/dgraph-io/dgraph/v24
|
Go |
≤ 24.1.8
|
|
|
github.com/dgraph-io/dgraph
|
Go |
≤ 1.2.8
|
|
References
Frequently Asked Questions
What is CVE-2026-41492?
Which Dgraph versions are affected?
What version fixes CVE-2026-41492?
Is github.com/dgraph-io/dgraph/v25 affected?
Is github.com/dgraph-io/dgraph/v24 affected?
What is the CVSS score of CVE-2026-41492?
What CWE is associated with CVE-2026-41492?
How can I check Go dependencies for CVE-2026-41492?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-vvf7-6rmr-m29q",
"modified" : "2026-05-04T20:08:42Z",
"published" : "2026-04-24T16:15:28Z",
"aliases" : [ "CVE-2026-41492" ],
"summary" : "Dgraph: Unauthenticated Admin Token Disclosure Leading to Authentication Bypass via /debug/vars",
"details" : "### Summary\nDgraph `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.\n\nThis 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.\n\n### Details\nAlpha still exposes Go's default HTTP mux:\n\n- `x/metrics.go`\n - imports `expvar`\n - initializes `Conf = expvar.NewMap(\"dgraph_config\")`\n- Go's `expvar` package automatically registers `/debug/vars`\n- `expvar` publishes:\n - `cmdline = os.Args`\n - `memstats = runtime.Memstats`\n\nAlpha's HTTP handler explicitly blocks only the old CVE path:\n\n- `dgraph/cmd/alpha/run.go`\n - checks `if r.URL.Path == \"/debug/pprof/cmdline\"` and returns `404`\n - otherwise falls through to `http.DefaultServeMux.ServeHTTP(w, r)`\n\nAdmin endpoints still trust the leaked token:\n\n- `dgraph/cmd/alpha/admin.go`\n - reads `X-Dgraph-AuthToken`\n - compares it to `worker.Config.AuthToken`\n### PoC\n1. Send an unauthenticated request to Alpha:\n\n```http\nGET /debug/vars HTTP/1.1\nHost: target:8080\n```\n\n2. Parse the JSON response and read the `cmdline` field.\n\n3. Extract the admin token from the startup arguments, for example:\n\n```text\n--security token=debug-vars-secret;\n```\n\n4. Replay the token to an admin-only endpoint:\n\n```http\nGET /admin/config/cache_mb HTTP/1.1\nHost: target:8080\nX-Dgraph-AuthToken: debug-vars-secret\n```\n\n5. The request is accepted as an authorized admin request.\n\nThis was reproduced against `dgraph/dgraph:v25.3.2` in Docker.\n\nObserved behavior:\n\n- unauthenticated `/debug/vars` leaked the configured token\n- replaying the leaked token in `X-Dgraph-AuthToken` successfully accessed `/admin/config/cache_mb`\n- response body was:\n\n```text\n4096\n```\n\nIt was verified that the old CVE path appears specifically patched in the same version:\n\n- `/debug/pprof/cmdline` returned `404 Not Found`\n- `/debug/pprof/` remained reachable\n\n### Impact\nUnauthenticated attackers can obtain the Alpha admin token and gain unauthorized administrative access.\n\nThis enables privileged admin operations such as:\n\n- reading privileged admin configuration\n- mutating admin configuration\n- performing operational control actions gated by `X-Dgraph-AuthToken`\n\nIn deployments where the Alpha HTTP port is reachable by untrusted parties, this is a practical authentication bypass to admin functionality.",
"severity" : [ {
"type" : "CVSS_V3",
"score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H"
} ],
"affected" : [ {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/dgraph-io/dgraph/v25"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"fixed" : "25.3.3"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/dgraph-io/dgraph/v24"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"last_affected" : "24.1.8"
} ]
} ]
}, {
"package" : {
"ecosystem" : "Go",
"name" : "github.com/dgraph-io/dgraph"
},
"ranges" : [ {
"type" : "ECOSYSTEM",
"events" : [ {
"introduced" : "0"
}, {
"last_affected" : "1.2.8"
} ]
} ]
} ],
"references" : [ {
"type" : "WEB",
"url" : "https://github.com/dgraph-io/dgraph/security/advisories/GHSA-vvf7-6rmr-m29q"
}, {
"type" : "ADVISORY",
"url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-41492"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/dgraph-io/dgraph"
}, {
"type" : "WEB",
"url" : "https://github.com/dgraph-io/dgraph/releases/tag/v25.3.3"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-200" ],
"severity" : "CRITICAL",
"github_reviewed" : true,
"github_reviewed_at" : "2026-04-24T16:15:28Z",
"nvd_published_at" : "2026-04-24T19:17:14Z"
}
}