CRITICAL🇬🇧 English

CVE-2026-41328

DQL injection w Dgraph — nieuwierzytelniony pełny odczyt bazy danych

CVSS 9.1v3.1pub. 2026-04-24upd. 2026-04-28

Podatność w Dgraph (wersje przed 25.3.3) umożliwia nieuwierzytelnionemu atakującemu uzyskanie pełnego dostępu do odczytu wszystkich danych w bazie poprzez DQL injection. Zagrożenie dotyczy domyślnej konfiguracji, w której mechanizm ACL nie jest włączony.

Pokaż oryginał (EN)

Dgraph is an open source distributed GraphQL database. Prior to 25.3.3, a vulnerability has been found in Dgraph that gives an unauthenticated attacker full read access to every piece of data in the database. This affects Dgraph's default configuration where ACL is not enabled. The attack requires two HTTP POSTs to port 8080. The first sets up a schema predicate with @unique @index(exact) @lang via /alter (also unauthenticated in default config). The second sends a crafted JSON mutation to /mutate?commitNow=true where a JSON key contains the predicate name followed by @ and a DQL injection payload in the language tag position. The injection exploits the addQueryIfUnique function in edgraph/server.go, which constructs DQL queries using fmt.Sprintf with unsanitized predicateName that includes the raw pred.Lang value. The Lang field is extracted from JSON mutation keys by x.PredicateLang(), which splits on @, and is never validated by any function in the codebase. The attacker injects a closing parenthesis to escape the eq() function, adds an arbitrary named query block, and uses a # comment to neutralize trailing template syntax. The injected query executes server-side and its results are returned in the HTTP response. This vulnerability is fixed in 25.3.3.

🤖 Analiza AI
Jak działa

Atak wymaga wysłania dwóch żądań HTTP POST na port 8080. Pierwsze żądanie, skierowane do endpointu /alter, tworzy predykat schematu z atrybutami @unique @index(exact) @lang — co jest możliwe bez uwierzytelnienia w domyślnej konfiguracji. Drugie żądanie wysyła spreparowaną mutację JSON na /mutate?commitNow=true, gdzie klucz JSON zawiera nazwę predykatu, znak @ oraz payload injection wstrzyknięty w polu 'language tag'. Podatna funkcja addQueryIfUnique w pliku edgraph/server.go konstruuje zapytania DQL przy użyciu fmt.Sprintf bez sanityzacji wartości predicateName, która zawiera surową wartość pred.Lang. Pole Lang pochodzi z kluczy mutacji JSON i jest wyodrębniane przez x.PredicateLang() przez podział po znaku @, nigdy nie przechodząc żadnej walidacji. Atakujący wstrzykuje zamykający nawias, by uciec z funkcji eq(), dodaje dowolny blok zapytania, a za pomocą znaku # komentarza neutralizuje dalszą składnię szablonu — wstrzyknięte zapytanie jest wykonywane po stronie serwera, a jego wyniki zwracane w odpowiedzi HTTP.

Skutki

Nieuwierzytelniony atakujący może odczytać wszystkie dane przechowywane w bazie Dgraph. Naruszenie poufności danych ma charakter całkowity, przy braku wpływu na integralność i dostępność.

Mitygacja

Należy zaktualizować Dgraph do wersji 25.3.3 lub nowszej, w której podatność została usunięta. Jako doraźne zabezpieczenie należy rozważyć włączenie mechanizmu ACL oraz ograniczenie dostępu sieciowego do portu 8080 wyłącznie do zaufanych hostów.

Kogo dotyczy

Dgraph w wersjach wcześniejszych niż 25.3.3, działający w domyślnej konfiguracji z wyłączonym mechanizmem ACL.

Uwagi

Podatność dotyczy wyłącznie domyślnej konfiguracji Dgraph z wyłączonym ACL — wdrożenia z włączoną kontrolą dostępu (ACL) nie są narażone na ten atak. Szczegóły techniczne opublikowano w ramach GitHub Security Advisory GHSA-x92x-px7w-4gx4.

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
  • Dgraph

    APP
    Dgraph
    < 25.3.3
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Auth Bypass
CWE
Referencje

Powiązane podatności

CVE-2026-41327CRITICAL9.1PL ✓ten sam produkt

Dgraph — wstrzyknięcie zapytania DQL umożliwia nieautoryzowany odczyt danych

CVE-2026-41492CRITICAL9.8PL ✓ten sam produkt

Dgraph: ujawnienie tokenu admina przez endpoint /debug/vars bez uwierzytelnienia

CVE-2026-40173CRITICAL9.4PL ✓ten sam produkt

Dgraph: ujawnienie tokenu admina przez niezabezpieczony endpoint /debug/pprof/cmdline

CVE-2026-34976CRITICAL10.0PL ✓ten sam produkt

Dgraph: nieuwierzytelniony dostęp do mutacji restoreTenant (SSRF, RCE danych)

CVE-2023-31135LOW3.3ten sam produkt

Dgraph is an open source distributed GraphQL database. Existing Dgraph audit logs are vulnerable to brute forc...

CVE-2026-41328 — DQL injection w Dgraph — nieuwierzytelniony pełny odczyt bazy danych — CRITICAL 9.1 | CVEbaza.pl