parse-server has GraphQL complexity validator exponential fragment traversal DoS
High severity
GitHub Reviewed
Published
Mar 29, 2026
in
parse-community/parse-server
•
Updated Mar 31, 2026
Package
Affected versions
>= 9.0.0, < 9.7.0-alpha.12
< 8.6.68
Patched versions
9.7.0-alpha.12
8.6.68
Description
Published by the National Vulnerability Database
Mar 31, 2026
Published to the GitHub Advisory Database
Mar 31, 2026
Reviewed
Mar 31, 2026
Last updated
Mar 31, 2026
Impact
The GraphQL query complexity validator can be exploited to cause a denial-of-service by sending a crafted query with binary fan-out fragment spreads. A single unauthenticated request can block the Node.js event loop for seconds, denying service to all concurrent users. This only affects deployments that have enabled the
requestComplexity.graphQLDepthorrequestComplexity.graphQLFieldsconfiguration options.Patches
The fix replaces the per-branch fragment traversal with memoized fragment computation, reducing the traversal from exponential O(2^N) to linear O(N) time. Additionally, early termination aborts the traversal as soon as configured limits are exceeded.
Workarounds
Disable GraphQL complexity limits by setting
requestComplexity.graphQLDepthandrequestComplexity.graphQLFieldsto-1(the default).Resources
References