CVE-2021-47713CVE-2021-47713是Hasura GraphQL Engine 1.3.3版本中存在的一个高危拒绝服务漏洞。该漏洞允许未经身份验证的远程攻击者通过发送精心构造的恶意GraphQL查询来消耗服务器资源,最终导致GraphQL服务不可用。攻击者利用GraphQL查询的递归嵌套特性,构造包含大量嵌套字段的查询语句,每个嵌套层级都会触发数据库查询和复杂的数据处理逻辑。当这种恶意请求被大量并发发送时,服务器CPU和内存资源会被迅速耗尽,导致服务响应缓慢甚至完全崩溃。由于该漏洞无需认证即可利用,且攻击复杂度较低,任何能够访问GraphQL端点的攻击者都可以发起攻击,对使用Hasura GraphQL Engine构建API服务的应用造成严重威胁。
Hasura GraphQL Engine在处理GraphQL查询时存在资源管理缺陷。当接收到包含过度嵌套字段的查询时,系统未能对查询深度和复杂度进行有效限制。攻击者构造的恶意查询示例:{ users { posts { comments { likes { user { posts { ... } } } } } } }。这种递归嵌套结构会触发大量的数据库查询操作,每个层级都会生成相应的SQL查询语句并等待数据库响应。由于GraphQL解析器需要处理这些复杂的嵌套结构,内存消耗会随着嵌套深度呈指数级增长。攻击者通常会同时使用多个并发连接发送此类请求,配合极长的查询字符串,进一步加速资源耗尽过程。漏洞的根本原因在于GraphQL Engine的查询复杂度分析模块存在缺陷,未能正确识别和限制这类资源密集型查询的执行。