CVE-2026-41327Dgraph是一款开源分布式GraphQL数据库。在25.3.3版本之前,该产品存在一个严重的安全漏洞,允许未经身份验证的攻击者获取数据库中所有数据的完全读取权限。此漏洞主要影响Dgraph的默认配置(即未启用ACL的情况)。攻击者只需向/mutate端点发送一个精心构造的HTTP POST请求,在upsert操作的cond字段中注入恶意代码,即可成功利用该漏洞。该问题已在25.3.3版本中得到修复。
该漏洞的根本原因在于Dgraph在处理upsert变更请求时,对`cond`参数的输入验证和过滤机制存在严重缺陷。服务器端代码直接将用户提供的`cond`值通过`strings.Builder.WriteString`方法拼接到DQL查询字符串中。虽然代码中包含了一个`strings.Replace`操作,但这仅是表面上的字符替换,并未提供实质性的安全过滤。由于缺乏任何形式的转义、参数化处理或结构验证,攻击者可以在`cond`字符串中注入额外的DQL查询块。DQL解析器会将这段恶意代码误认为是语法上有效的命名查询块,并在服务器端执行。执行后,查询结果会直接包含在HTTP响应中返回给攻击者。由于该漏洞影响默认未启用访问控制列表(ACL)的配置,攻击者无需任何身份验证即可利用此缺陷,窃取数据库中的敏感信息。