Katalog CVE

CVE-2026-81636

WysokieCVSS 8.7
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

Podatność polegająca na alokacji zasobów bez limitów lub ograniczeń w ash_graphql umożliwia nieuwierzytelnionemu klientowi ominięcie skonfigurowanego limitu złożoności zapytań GraphQL i wymuszenie nieograniczonego odczytu bazy danych. Funkcja query_complexity/3 mnoży złożoność dziecka przez żądany rozmiar strony tylko wtedy, gdy mapa argumentów zawiera :limit (paginacja offsetowa). Połączenia Relay i paginacja keyset używają first i last, które nigdy nie pasują do tej klauzuli i przechodzą do catch-all, który zwraca child_complexity + 1. Zagnieżdżone zapytanie relay, takie jak posts(first: 500) { edges { node { comments(first: 500) { ... } } } }, jest więc oceniane jako trywialnie tanie, podczas gdy materializuje pełne rozwidlenie, omijając limit max_complexity Absinthe, który odrzuca równoważne zapytanie oparte na limicie. Poprawka dodaje klauzule first i last ograniczone do rozmiaru strony akcji. Problem dotyczy ash_graphql od 0.16.23 przed 1.11.0.

Ocena ryzyka

Atakujący może przeciążyć bazę danych nieograniczonymi zapytaniami, co może prowadzić do wyczerpania zasobów i awarii usługi, wpływając na dostępność aplikacji.

Rekomendacja

Zaktualizuj ash_graphql do wersji 1.11.0 lub nowszej, która zawiera poprawkę. Dodatkowo rozważ wprowadzenie limitów na poziomie zapytań i monitorowanie użycia zasobów.

Inne podatności w ash_graphql

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

Allocation 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. 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. This issue affects ash_graphql: from 0.16.23 before 1.11.0.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS