criticalCVSS 9.1Vulnerability

CVE-2026-54061

## Summary Dgraph Alpha exposes the RPCs used for external snapshot import on the public gRPC port `:9080` without authentication or authorization. As a result, an unauthenticated network client can open `StreamExtSnapshot` and send Badger stream data to the target group’s store. In addition, the receiver calls `Prepare()` before processing the stream. This operation deletes and replaces the existing DB data. ## Root Cause The root cause is that the RPCs used for external snapshot import are exposed through Alpha’s public gRPC service, but no administrator authorization check is performed before reaching destructive storage operations. Streaming RPCs such as `StreamExtSnapshot` do not have a stream interceptor, and the RPC handlers do not perform their own authorization checks. As a result, an unauthenticated client that can reach the public gRPC port can start the import flow. Dgraph then calls Badger’s `StreamWriter.Prepare()` on the target group store. This operation deletes the existing database, allowing the attacker’s stream to potentially replace the store. ## Steps to Reproduce Preconditions: - A throwaway Dgraph Alpha is reachable on its public gRPC port, default `:9080` - Public gRPC mTLS is not enabled - No Dgraph ACL token, JWT, or gRPC `auth-token` metadata is used by the client 1. Start a throwaway standalone Dgraph instance from the tested build and insert synthetic data. ```bash # Example if the tested source tree is built and tagged locally. docker run --rm -p 8080:8080 -p 9080:9080 \ -v "$PWD/dgraph-ext-snapshot-poc:/dgraph" \ dgraph-standalone:2b6d6328d ``` For example, insert a harmless record. ```bash curl -sS -X POST "http://127.0.0.1:8080/mutate?commitNow=true" \ -H "Content-Type: application/rdf" \ --data-binary $'{ set { _:poc <name> "before-import" . } }' ``` 2. From an unauthenticated client, open `Dgraph.StreamExtSnapshot` and select group 1 as the target group. ```go package main import ( "context" "fmt"

Properties

ghsa_id
GHSA-rrwh-6jrq-wp5v
severity
critical
summary
Dgraph Alpha group stores can be replaced via unauthenticated external snapshot import
cvss_score
9.1
cve_id
CVE-2026-54061
cvss_vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
is_ghsa_only
false
ghsa_published
2026-08-20T17:29:00Z
source_url
https://github.com/advisories/GHSA-rrwh-6jrq-wp5v
ghsa_updated
2026-08-20T17:29:01Z

Related Entities (4)

HAS_WEAKNESS (1)

[Weakness]Missing Authentication for Critical Function

REPORTED_BY (1)

[Source]GitHub Advisory Database

VULNERABLE_TO (1)

[Software]go/github.com/dgraph-io/dgraph/v25

AFFECTS (1)

[Software]go/github.com/dgraph-io/dgraph/v25

Explore deeper with Ninja Signal's threat intelligence graph

CVE-2026-54061 (CVSS 9.1) — Ninja Signal Threat Intelligence | Ninja Signal