GraphQL security testing

Pentest GraphQL. Schema, resolvers, złożoność i role pod kontrolą.

Jeden endpoint nie oznacza małego zakresu. Powierzchnię GraphQL tworzą typy, pola, relacje, resolvers, mutacje i kombinacje zapytań dostępne dla każdej roli.

Krótka odpowiedź

Pentest GraphQL mapuje schemat i faktycznie osiągalne operacje, a następnie ręcznie sprawdza autoryzację na poziomie węzłów, krawędzi, pól, queries i mutations. Weryfikujemy również introspection, błędy, aliasy, batching, limity głębokości i kosztu, subscriptions oraz granice między gatewayem i usługami. Samo wyłączenie GraphiQL lub introspection nie zastępuje kontroli dostępu w resolverach.

Wycena bez czekania

Sprawdź koszt i termin od razu.

Trzy odpowiedzi wystarczą do natychmiastowej kwalifikacji. E-mail podajesz dopiero wtedy, gdy chcesz odpowiedzi eksperta.

Dla kogo

Kiedy ten zakres ma sens?

  • Produkty korzystające z Apollo, Relay lub własnego serwera GraphQL
  • SaaS z wieloma tenantami, rolami i typami danych
  • GraphQL po migracji z REST albo zmianie schematu
  • Federacje i gatewaye łączące kilka usług backendowych

Zakres testu

Co sprawdzamy?

01

Schema i powierzchnia

Queries, mutations, subscriptions, typy, pola, argumenty, dyrektywy, deprecated fields oraz operacje dostępne poza oficjalnym klientem.

02

Nodes, edges i resolvers

Autoryzacja bezpośredniego node lookup, relacji, globalnych identyfikatorów, resolverów pól i alternatywnych ścieżek do tego samego obiektu.

03

Mutations i dane wejściowe

Uprawnienia do operacji, nadmiarowe input fields, kolejność zmian, powtórzenia, wyścigi oraz walidacja danych przekazywanych do innych systemów.

04

Introspection i błędy

Ekspozycja schematu, GraphiQL lub playground, podpowiedzi nazw, stack traces, informacje diagnostyczne i różnice odpowiedzi ujawniające dane.

05

Aliasy, batching i koszt

Wiele operacji w jednym żądaniu, aliasy, zagnieżdżenia, fragmenty, paginacja, limity głębokości, analiza kosztu i odporność na automatyzację.

06

Subscriptions i federacja

Uwierzytelnienie połączenia, ponowna autoryzacja zdarzeń, separacja tenantów, gateway, subgraphy i zaufanie między usługami.

Rezultat

Co dostajesz?

  • Mapa typów, operacji, ról i granic autoryzacji
  • Zakres przypisany do wersji schematu i wdrożenia
  • Minimalne queries lub mutations odtwarzające ustalenia
  • Zalecenia dla resolverów, gatewaya i limitów kosztu
  • Jeden retest uzgodnionych poprawek
01

Schema i konta

Otrzymujemy SDL, wynik introspection albo dostęp do środowiska, role testowe, przykładowe dane i opis najważniejszych operacji.

02

Model autoryzacji

Łączymy typy, pola, relacje i resolvers z własnością danych, tenantami oraz funkcjami dostępnymi dla każdej roli.

03

Test kombinacji

Sprawdzamy alternatywne ścieżki do obiektów, mutacje, aliasy, batching, złożoność i zachowanie subscriptions w kontrolowanych granicach.

04

Raport i retest

Wskazujemy resolver albo warstwę zaufania wymagającą poprawki, podajemy oczekiwany wynik i potwierdzamy jego egzekwowanie.

Cena i decyzja

Ile kosztuje pentest GraphQL?

Mały schemat z ograniczoną liczbą typów, dwóch ról i jednym środowiskiem kosztuje orientacyjnie 5 000-7 500 zł netto. Gotowy zakres może kwalifikować się do trybu 24H za 6 000-8 500 zł netto. Cenę zwiększają liczne relacje, federacja, subscriptions, wiele ról, rozbudowane mutacje i brak aktualnego schematu, a nie liczba endpointów HTTP.

Sprawdź własny zakres

FAQ

Najczęstsze pytania

Czy wyłączenie introspection zabezpiecza GraphQL?+

Nie. Ogranicza łatwość poznania schematu, ale nie naprawia BOLA, błędów resolverów, nadmiarowych pól, mutacji ani braku limitów kosztu. Autoryzacja musi działać dla każdego osiągalnego obiektu i pola.

Jak liczycie rozmiar GraphQL, skoro jest jeden endpoint?+

Bierzemy pod uwagę typy, pola wrażliwe, relacje, queries, mutations, subscriptions, role, tenanty, subgraphy i procesy biznesowe. Jeden adres HTTP może udostępniać setki różnych operacji.

Czy test obejmuje Apollo Federation?+

Tak, po uzgodnieniu gatewaya i subgraphów. Sprawdzamy spójność autoryzacji, reprezentacje encji, zaufanie do nagłówków i kontekstu oraz różnice między bezpośrednim dostępem do usługi i ruchem przez gateway.

Czy testujecie subscriptions i WebSocket?+

Tak, jeśli znajdują się w zakresie. Weryfikujemy uwierzytelnienie połączenia, autoryzację każdego zdarzenia, zmianę uprawnień w trakcie sesji i separację danych między użytkownikami.

Czy można przetestować GraphQL bez schematu?+

Można, ale rozpoznanie zajmie więcej czasu i może ograniczyć mierzalne pokrycie. Najlepszy wynik daje aktualny SDL albo wynik introspection, lista ról oraz zestaw danych testowych.