CVE-2026-44840: Dgraph DQL Injection in checkUserPassword Query
Dgraph versions before 25.3.4 contain a query injection vulnerability in the `checkUserPassword` GraphQL endpoint. Attackers can exploit this by submitting specially crafted passwords that break out of the intended query structure and inject arbitrary database commands. The vulnerability requires no authentication and can be triggered remotely, allowing attackers to read sensitive data from the database without permission.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
- Weaknesses (CWE)
- CWE-943
- Affected products
- 0 configuration(s)
- Published / Modified
- 2026-07-08 / 2026-07-09
NVD description (verbatim)
Dgraph is an open source distributed GraphQL database. Prior to version 25.3.4, the `checkUserPassword` GraphQL query in Dgraph is vulnerable to DQL (Dgraph Query Language) injection. User-supplied password values are interpolated directly into a DQL `checkpwd()` query via `fmt.Sprintf` without any escaping or parameterization. An attacker can inject a password containing a double-quote character to break out of the DQL string literal and append arbitrary DQL query blocks. Version 25.3.4 patches the issue.
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The `checkUserPassword` GraphQL query in Dgraph concatenates user-supplied password input directly into a DQL `checkpwd()` function call using `fmt.Sprintf` without escaping or prepared statements. This unsanitized interpolation enables DQL injection: an attacker can craft a password containing a double-quote character to terminate the string literal prematurely, then append arbitrary DQL query blocks. Because the query operates at the GraphQL layer and accepts unauthenticated input, an attacker can exploit this over the network to execute queries against the underlying Dgraph database. The vulnerability is classified under CWE-943 (Improper Neutralization of Special Elements in Data Query Logic).
Business impact
An unauthenticated remote attacker could query and exfiltrate sensitive data stored in Dgraph instances, including user records, credentials, personal information, or proprietary datasets. The vulnerability does not permit data modification or denial of service, but confidentiality is fully compromised if exploited. Organizations relying on Dgraph for production data storage face direct data breach risk without patching. The absence of authentication or special configuration requirements makes this a straightforward attack vector for external threat actors.
Affected systems
Dgraph versions prior to 25.3.4 are affected. The vulnerability exists in the GraphQL authentication layer and impacts any deployment exposing the GraphQL endpoint. Both containerized and on-premises installations are vulnerable if running unpatched versions.
Exploitability
Exploitation is straightforward and requires only network access to the GraphQL endpoint. No authentication, special privileges, or user interaction is needed. An attacker can craft a password input containing quote characters and DQL syntax to inject queries. The attack is likely automatable and requires minimal complexity. CVSS score 7.5 (High) reflects this ease of exploitation combined with high confidentiality impact.
Remediation
Upgrade Dgraph to version 25.3.4 or later, which patches the vulnerability by properly escaping or parameterizing password input before inclusion in DQL queries. Organizations unable to upgrade immediately should restrict network access to the GraphQL endpoint using firewall rules or VPN controls, and monitor authentication logs for suspicious `checkUserPassword` queries.
Patch guidance
Apply Dgraph version 25.3.4 or newer. Verify the update is deployed across all Dgraph instances in your environment, including replicas and cluster nodes. Test the patch in a staging environment first to confirm compatibility with your GraphQL clients and database schema. After patching, consider rotating database credentials and reviewing access logs for evidence of prior exploitation.
Detection guidance
Monitor GraphQL logs and audit trails for `checkUserPassword` queries with unusually long or malformed password fields, especially those containing DQL syntax characters (quotes, curly braces, pipes). Review database query logs for unexpected DQL query patterns that correlate with GraphQL authentication attempts. Implement network-based detection for POST requests to GraphQL endpoints with payloads exceeding typical password lengths. Query for successful data exfiltration patterns in Dgraph query audit logs from unauthenticated or unexpected sources.
Why prioritize this
This is a critical remote code execution and data exfiltration vector requiring immediate patching. The lack of authentication, ease of exploitation, and direct access to sensitive database contents place this in the top tier of Dgraph deployment risks. The CVSS score of 7.5 understates the real-world severity for organizations storing confidential data; prioritize this above lower-impact vulnerabilities.
Risk score, explained
CVSS 7.5 (High) reflects: AV:N (network-accessible), AC:L (no special conditions), PR:N (no authentication), UI:N (no user interaction), S:U (impact confined to affected component), C:H (confidentiality fully compromised), I:N (integrity not affected), A:N (availability not affected). The score appropriately weights the ease of exploitation and confidentiality breach, though does not account for the widespread use of Dgraph in high-value data contexts.
Frequently asked questions
Is authentication required to exploit this vulnerability?
No. The `checkUserPassword` endpoint is designed to be called before authentication, making it accessible to unauthenticated attackers on the network.
Can an attacker modify or delete data using this vulnerability?
The published vulnerability description indicates injection of 'arbitrary DQL query blocks' for data exfiltration; the CVSS impact vector (I:N) shows no integrity impact, so modification or deletion is not confirmed as possible. Verify your deployment assumptions and test in a controlled environment.
Do I need to rotate my database credentials after patching?
It is prudent to rotate credentials and review access logs for unauthorized queries, as an attacker may have already exfiltrated them or accessed sensitive data during the window the instance was vulnerable.
What is DQL injection and how does it differ from SQL injection?
DQL (Dgraph Query Language) is Dgraph's query syntax. DQL injection is the same class of vulnerability as SQL injection—unsanitized user input concatenated into a query—but targets a graph database query language instead of relational SQL.
This analysis is based on published CVE and vendor information as of the stated modification date. No exploit code or proof-of-concept is provided or endorsed. Readers are responsible for verifying patch applicability, testing in non-production environments, and aligning remediation with their organizational risk tolerance and security policies. SEC.co makes no warranty regarding the completeness or accuracy of this analysis and disclaims liability for consequences of its use. Source: NVD (public-domain), retrieved 2026-08-17. Analysis generated by SEC.co (claude-haiku-4-5).
Weaknesses (CWE)
Related vulnerabilities
- CVE-2026-10698HIGHMOVEit Transfer Custom Reports SQL Injection
- CVE-2026-46591HIGHApache Camel Neo4j Cypher Injection Vulnerability – HIGH Severity Patch
- CVE-2026-47835HIGHSpring AI Vector Store Query Injection (CVSS 8.6)
- CVE-2026-53674HIGHBuddyPress 14.4.0 Regular Expression Injection in Mentions
- CVE-2026-41696MEDIUMSpring Data MongoDB @Query Regex Injection Vulnerability
- CVE-2026-41697MEDIUMSpring Data Relational Query By Example SQL Injection Vulnerability
- CVE-2026-49482MEDIUMClipBucket v5 SQL Wildcard Injection in Subtitle Editing
- CVE-2026-54019MEDIUMOpen WebUI Milvus Multitenancy ACL Bypass – CVSS 6.5