{"id":"EEF-CVE-2026-81636","summary":"Query-complexity limit bypass via first/last pagination arguments in AshGraphql enables denial of service","details":"## Summary\n\nAllocation of Resources Without Limits or Throttling vulnerability in ash-project ash_graphql allows an unauthenticated client to bypass the configured GraphQL query-complexity limit and force an unbounded database read.\n\n`AshGraphql.Graphql.Resolver.query_complexity/3` multiplies child complexity by the requested page size only when the argument map contains `:limit` (offset pagination). Relay connections and keyset pagination use `first` and `last`, which never match that clause and fall through to the catch-all that returns `child_complexity + 1`. A nested relay query such as `posts(first: 500) { edges { node { comments(first: 500) { ... } } } }` therefore scores as trivially cheap while materializing the full fan-out, passing an Absinthe `max_complexity` cap that rejects the equivalent `limit`-based query. The fix adds `first` and `last` clauses clamped to the action's page size.\n\nThis issue affects ash_graphql: from 0.16.23 before 1.11.0.","aliases":["CVE-2026-81636","GHSA-mwc4-r9fc-h6mg"],"modified":"2026-09-08T20:30:03.506510379Z","published":"2026-08-30T18:25:29.776Z","database_specific":{"cwe_ids":["CWE-770"],"capec_ids":["CAPEC-130"],"cpe_ids":["cpe:2.3:a:ash-project:ash_graphql:*:*:*:*:*:*:*:*"]},"references":[{"type":"ADVISORY","url":"https://github.com/ash-project/ash_graphql/security/advisories/GHSA-mwc4-r9fc-h6mg"},{"type":"WEB","url":"https://cna.erlef.org/cves/CVE-2026-81636.html"},{"type":"FIX","url":"https://github.com/ash-project/ash_graphql/commit/c3229f6a65cbabb32fd7ffcac881922d1b3b30ad"},{"type":"PACKAGE","url":"https://hex.pm/packages/ash_graphql"}],"affected":[{"package":{"name":"ash_graphql","ecosystem":"Hex","purl":"pkg:hex/ash_graphql"},"ranges":[{"type":"SEMVER","events":[{"introduced":"0.16.23"},{"fixed":"1.11.0"}]}],"versions":["0.16.23","0.16.24","0.16.25","0.16.26","0.16.27","0.16.28","0.17.0","0.17.1","0.17.2","0.17.4","0.17.5","0.17.5-rc0","0.18.0-rc0","0.19.0","0.20.0-rc.0","0.20.0-rc.1","0.20.0-rc.2","0.20.0-rc.3","0.20.1","0.20.2","0.20.3","0.20.4","0.20.5","0.21.0","0.22.0","0.22.1","0.22.10","0.22.11","0.22.12","0.22.13","0.22.2","0.22.3","0.22.4","0.22.6","0.22.7","0.22.8","0.22.9","0.23.0","0.23.1","0.23.2","0.23.3","0.24.0","0.24.1","0.25.0","0.25.1","0.25.10","0.25.12","0.25.13","0.25.2","0.25.3","0.25.4","0.25.5","0.25.6","0.25.7","0.25.8","0.25.9","0.26.0","0.26.2","0.26.3","0.26.4","0.26.5","0.26.6","0.26.7","0.26.8","0.26.9","0.27.0","0.27.1","0.28.0","0.28.1","1.0.0","1.0.0-rc.0","1.0.0-rc.1","1.0.0-rc.2","1.0.0-rc.3","1.0.0-rc.4","1.0.0-rc.5","1.0.1","1.1.0","1.1.1","1.10.0","1.10.1","1.2.0","1.2.1","1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.5.0","1.5.1","1.6.0","1.7.0","1.7.1","1.7.10","1.7.11","1.7.12","1.7.13","1.7.14","1.7.15","1.7.16","1.7.17","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7","1.7.8","1.7.9","1.8.0","1.8.1","1.8.2","1.8.3","1.8.4","1.8.5","1.9.0","1.9.1","1.9.2","1.9.3","1.9.4"],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-81636.json"}},{"ranges":[{"type":"GIT","repo":"https://github.com/ash-project/ash_graphql","events":[{"introduced":"d8a3e1b15587180ad9cb3ceeb398863d086c163b"},{"fixed":"c3229f6a65cbabb32fd7ffcac881922d1b3b30ad"}]}],"versions":["v1.10.1","v1.10.0","v1.9.4","v1.9.3","v1.9.2","v1.9.1","v1.9.0","v1.8.5","v1.8.4","v1.8.3","v1.8.2","v1.8.1","v1.8.0","v1.7.17","v1.7.16","v1.7.15","v1.7.14","v1.7.13","v1.7.12","v1.7.11","v1.7.10","v1.7.9","v1.7.8","v1.7.7","v1.7.6","v1.7.5","v1.7.4","v1.7.3","v1.7.2","v1.7.1","v1.7.0","v1.6.0","v1.5.1","v1.5.0","v1.4.7","v1.4.6","v1.4.4","v1.4.3","v1.4.2","v1.4.1","v1.4.0","v1.3.4","v1.3.3","v1.3.2","v1.3.1","v1.3.0","v1.2.1","v1.1.1","v1.0.1","v1.0.0","1.0.0","v1.0.0-rc.5","v1.0.0-rc.4","v1.0.0-rc.3","v1.0.0-rc.2","v0.28.0","v1.0.0-rc.1","v1.0.0-rc.0","v0.27.1","v0.27.0","v0.26.9","v0.26.8","v0.26.7","v0.26.5","v0.26.4","v0.26.3","v0.26.2","v0.26.1","v0.26.0","v0.25.13","v0.25.12","v0.25.11","v0.25.10","v0.25.9","v0.25.8","v0.25.7","v0.25.6","v0.25.5","v0.25.4","v0.25.3","v0.25.2","v0.25.1","v0.25.0","v0.24.1","v0.24.0","v0.23.3","v0.23.2","v0.23.1","v0.23.0","v0.22.13","v0.22.12","v0.22.11","v0.22.10","v0.22.9","v0.22.8","v0.22.7","v0.22.6","v0.22.4","v0.22.3","v0.22.2","v0.22.1","v0.22.0","v0.20.4","v0.20.3","v0.21.0","v0.20.2","v0.20.1","v0.20.0-rc.3","v0.20.0-rc.2","v0.20.0-rc.1","v0.19.0","v0.18.0-rc0","v0.17.5-rc1","v0.17.5-rc0","v0.17.5","v0.17.4","v0.17.3","v0.17.2","v0.17.1","v0.17.0","v0.16.28","v0.16.27","v0.16.26","v0.16.25","v0.16.24","v0.16.23"],"database_specific":{"source":"https://cna.erlef.org/osv/EEF-CVE-2026-81636.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V4","score":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N"}],"credits":[{"name":"Peter Ullrich","type":"FINDER"},{"name":"Peter Ullrich","type":"REPORTER"},{"name":"Zach Daniel / Ash Project","type":"REMEDIATION_DEVELOPER"},{"name":"Jonatan Männchen / EEF","type":"COORDINATOR"}]}