API Security

Praktyki i zabezpieczenia chroniące interfejsy API przed nieautoryzowanym dostępem, nadużyciem logiki biznesowej i wyciekiem danych: uwierzytelnianie, autoryzacja, szyfrowanie, monitoring.

API Security (bezpieczeństwo API) to zestaw praktyk i zabezpieczeń, które chronią interfejsy programistyczne aplikacji (API, czyli sposób, w jaki programy „rozmawiają” ze sobą po sieci) przed nieautoryzowanym dostępem, nadużyciem logiki biznesowej, wyciekiem danych i atakami. Obejmuje sprawdzanie, kto wykonuje wywołanie i czy ma do tego prawo (uwierzytelnianie i autoryzacja), szyfrowanie przesyłanych danych, kontrolę danych wejściowych, ograniczanie ruchu, spis wszystkich endpointów oraz monitorowanie i wykrywanie nietypowych zachowań w warstwie aplikacji (zwykle ruch HTTP/HTTPS).

API to dziś główna powierzchnia ataku nowoczesnych aplikacji. Aplikacje mobilne, nowoczesne strony (SPA), urządzenia IoT, mikrousługi i integracje między firmami — wszystkie komunikują się przez API, które udostępniają logikę aplikacji i dane wrażliwe (w tym dane osobowe, czyli PII). W odróżnieniu od klasycznej ochrony stron WWW, bezpieczeństwo API musi radzić sobie z zagrożeniami typowymi dla komunikacji „maszyna do maszyny”, gdzie po drugiej stronie nie ma człowieka klikającego w przeglądarce.

Dlaczego API są częstym celem ataków?

API pokazują wprost operacje i dane po stronie serwera — często bez ekranu aplikacji, który ograniczałby dostępne akcje. Napastnik widzi, jak wyglądają żądania i odpowiedzi, może je zmieniać i powtarzać tysiące razy automatycznie. Główne powody ryzyka:

  • Widoczna logika i dane – endpointy zwracają obiekty z identyfikatorami i polami, które łatwo zgadywać po kolei lub modyfikować.
  • Brak interfejsu jako bariery – ukrycie przycisku w aplikacji niczego nie chroni; liczy się tylko kontrola po stronie serwera.
  • Shadow API i zombie API – nieudokumentowane lub zapomniane, niezaktualizowane wersje endpointów wciąż działają i nikt ich nie pilnuje.
  • Łatwa automatyzacja – wywołania API prosto opisać skryptem, co otwiera drogę do credential stuffingu (masowego logowania wykradzionymi hasłami), pobierania danych na masową skalę i nadużyć logiki biznesowej.
  • Złożone integracje – ruch między mikrousługami wewnątrz systemu (tzw. east-west) bywa słabiej kontrolowany niż ruch z internetu (north-south).

Jakie są główne zagrożenia API? (OWASP API Security Top 10)

Branżowym punktem odniesienia jest OWASP API Security Top 10 (edycja 2023) — lista najczęstszych słabości typowych dla API:

  • API1: Broken Object Level Authorization (BOLA) – serwer nie sprawdza, czy pytający ma prawo do danego obiektu. Wystarczy zmienić identyfikator w żądaniu (np. /orders/123 na /orders/124), by zobaczyć cudze dane. Najczęstsza i najgroźniejsza słabość.
  • API2: Broken Authentication – słabe lub źle wdrożone logowanie: podatność na credential stuffing, zgadywanie haseł (brute force), akceptowanie wygasłych lub źle sprawdzanych tokenów.
  • API3: Broken Object Property Level Authorization – odpowiedź zwraca za dużo pól (nadmierna ekspozycja danych) albo pozwala zapisać pola, których klient nie powinien zmieniać (mass assignment).
  • API4: Unrestricted Resource Consumption – brak limitów (na liczbę żądań, ich rozmiar, stronicowanie), co prowadzi do przeciążenia usługi (DoS) lub niespodziewanych kosztów.
  • API5: Broken Function Level Authorization – zwykły użytkownik może wywołać funkcje administracyjne, bo brakuje kontroli uprawnień na poziomie pojedynczej operacji.
  • API6: Unrestricted Access to Sensitive Business Flows – nadużycie kluczowych procesów (np. zakup, rejestracja) przez automatyzację, której nikt nie ogranicza.
  • API7: Server Side Request Forgery (SSRF) – zmuszenie serwera, by sam wysłał żądanie do zasobów wewnętrznych, na podstawie niesprawdzonego adresu URL podanego przez napastnika.
  • API8: Security Misconfiguration – błędne ustawienia: złe nagłówki, zbyt otwarty CORS, ustawienia domyślne, brak szyfrowania TLS, zbyt szczegółowe komunikaty błędów.
  • API9: Improper Inventory Management – brak aktualnego spisu endpointów i wersji (stąd shadow/zombie API, niewyłączone wersje deweloperskie).
  • API10: Unsafe Consumption of APIs – zbyt ufne przyjmowanie odpowiedzi z cudzych API (zewnętrznych) bez ich sprawdzenia i oczyszczenia.

Poza listą OWASP wciąż groźne są klasyczne ataki, gdy dane wejściowe trafiają do silnika wykonującego polecenia: SQL injection, NoSQL injection, command injection oraz manipulacja tokenami JWT (np. wymuszenie algorytmu none albo słaby sekret).

Czym różni się bezpieczeństwo REST, GraphQL i SOAP?

Rodzaj API wpływa na to, gdzie kryje się ryzyko i jak się przed nim bronić:

  • REST – operacje na zasobach przez metody HTTP (GET, POST, PUT, DELETE). Główne ryzyka to BOLA/IDOR (podmiana identyfikatora w adresie) i zwracanie zbyt wielu pól w odpowiedziach JSON.
  • GraphQL – jeden endpoint i bardzo elastyczne zapytania. Tu uważa się na kosztowne, głęboko zagnieżdżone zapytania (mogą przeciążyć serwer), na introspekcję, która ujawnia całą strukturę danych, oraz na kontrolę uprawnień osobno dla każdego pola.
  • SOAP – komunikaty w formacie XML z WS-Security; typowe słabości to ataki na parser XML (XXE), nadmiernie rozbudowane payloady oraz błędy w obsłudze podpisów i szyfrowania.

Jak zabezpiecza się API? (mechanizmy i kontrole)

Skuteczna ochrona łączy kontrole na trzech poziomach: w samym projekcie aplikacji, na bramie API i w monitoringu:

  1. Uwierzytelnianie (kto pyta) – tokeny OAuth 2.0/OpenID Connect, JWT z poprawnym sprawdzaniem podpisu i czasu ważności, klucze API dla integracji między systemami oraz mTLS tam, gdzie obie strony muszą się nawzajem zweryfikować.
  2. Autoryzacja (czy wolno) – sprawdzana po stronie serwera dla każdego obiektu (chroni przed BOLA) i każdej funkcji (chroni przed broken function level authorization); zasada minimalnych uprawnień.
  3. Szyfrowanie przesyłanych danych – TLS (HTTPS) dla całego ruchu, także wewnętrznego między usługami.
  4. Kontrola danych wejścia i wyjścia – sprawdzanie żądań według wzorca (np. OpenAPI/JSON Schema), filtrowanie zwracanych pól, ochrona przed mass assignment.
  5. Ograniczanie zasobów – limity liczby żądań (rate limiting), spowalnianie nadmiernego ruchu (throttling), limity rozmiaru żądania, stronicowanie i kwoty.
  6. Brama API i WAAP – brama API (API gateway) zbiera w jednym miejscu uwierzytelnianie, kierowanie ruchu i limity; WAAP/WAF dokłada filtrowanie warstwy aplikacji, ale sam nie wykryje nadużyć logiki biznesowej.
  7. Spis i wykrywanie endpointów (discovery) – ciągłe odnajdywanie endpointów i wersji oraz usuwanie shadow/zombie API.
  8. Testy bezpieczeństwa – analiza kodu i działającej aplikacji (SAST/DAST), fuzzing API, testy penetracyjne i przeglądy wpięte w proces wdrożeń (CI/CD), czyli podejście shift-left / DevSecOps.

Dlaczego API Security jest ważne dla monitoringu i wykrywania?

Wiele ataków na API to nie pojedyncze włamania, lecz nadużycia logiki biznesowej, które wyglądają jak normalny ruch — bramy API i WAF przepuszczają takie żądania, bo formalnie są poprawne. Dlatego do ich wykrycia potrzeba telemetrii i analizy zachowania w warstwie aplikacji:

  • Pełna telemetria wywołań – logi i dane o żądaniach i odpowiedziach (endpoint, metoda, kod statusu, tożsamość, ilość, czas) jako podstawa wykrywania.
  • Wykrywanie enumeracji – sięganie po kolei do wielu identyfikatorów obiektów to typowy ślad BOLA/IDOR; serie odpowiedzi 401/403 sygnalizują próby obejścia autoryzacji.
  • Anomalie ilości i tempa – nagłe skoki wywołań jednego endpointu, masowe pobieranie danych, credential stuffing (wiele logowań z różnymi danymi).
  • Powiązanie z ruchem sieciowym – w architekturze mikrousług obserwacja ruchu wewnętrznego east-west (telemetria przepływów, NetFlow/IPFIX, logi service mesh) pomaga zauważyć boczne przemieszczanie się napastnika i nietypowe połączenia między usługami.
  • Wykrywanie shadow API – bierne podglądanie ruchu ujawnia endpointy, których nie ma w dokumentacji i które wymykają się kontroli.

Dla zespołów SOC i rozwiązań NDR / monitoringu sieci API to warstwa, w której sygnałem ataku jest najczęściej wzorzec zachowania (kto, do jakich obiektów i jak często sięga), a nie pojedyncze złośliwe żądanie.

Dowiedz się więcej