Dlaczego i jak zabezpieczyć punkt końcowy API?

Photo of author

By maciekx

W jaki sposób chronisz swoje API?

Żyjemy w epoce gwałtownego rozwoju cyfrowej gospodarki, gdzie interfejsy API służą do przesyłania ogromnych ilości danych. Biznes, gry, edukacja, prognozy pogody, nauka, sztuka – można wymieniać bez końca; wszystko to opiera się na API. W świecie, który tak bardzo zależy od tych interfejsów, zaskakujące jest, jak mało uwagi poświęca się ich bezpieczeństwu.

Programiści często polegają na domyślnych ustawieniach swoich frameworków, a w najgorszym wypadku, gdy frameworki nie są stosowane, zakładają, że przestrzegają zasad bezpieczeństwa. Administratorzy systemów z kolei polegają na standardowych zabezpieczeniach oferowanych przez ich infrastrukturę lub dostawcę usług.

Moim zdaniem, taki stan rzeczy nie wygląda zbyt dobrze.

Źródło: developer.ibm.com

Nie trzeba dodawać, że stawka jest bardzo wysoka, a uświadamiamy to sobie dopiero, gdy dojdzie do naprawdę poważnego incydentu.

Zacznijmy jednak od podstaw.

Dlaczego ochrona punktów końcowych API jest tak istotna?

Wydaje się to oczywiste, prawda?

Musimy zabezpieczać punkty końcowe, ponieważ od tego zależy funkcjonowanie firmy.

Chociaż to argument sam w sobie jest wystarczająco mocny, chciałbym rozszerzyć ten punkt widzenia i podkreślić inne, powiązane z nim, lecz równie groźne konsekwencje.

Straty finansowe 📉

To jest oczywiste. Jeśli ktoś zdoła manipulować punktami końcowymi API, cała działalność zostanie sparaliżowana. Naruszenie bezpieczeństwa może również spowodować długotrwałe przestoje, co z perspektywy biznesowej jest katastrofalne. Chociaż większość firm prawdopodobnie nie odczuje znacząco kilkugodzinnego przestoju, dla niektórych jest to całkowicie niedopuszczalne.

Wyobraź sobie, że kantor wymiany walut jest niedostępny przez kilka minut!

Kwestie zgodności z przepisami

Niewłaściwe zabezpieczenie API może prowadzić do poważnych problemów, w zależności od obszarów geograficznych i branż, z którymi współpracujesz. Na przykład, jeśli działasz w branży bankowej (zwłaszcza w UE), konsekwencje wykrycia niechronionych interfejsów API będą wiązać się z poważnymi problemami prawnymi i regulacyjnymi. Mogą one nawet doprowadzić do upadku firmy.

Utrata dobrej reputacji

Samo włamanie jest już wystarczająco bolesne, ale jeśli informacja o nim rozprzestrzeni się publicznie, wizerunek Twojej marki zostanie trwale nadszarpnięty. Na przykład, firma Sony była już kilkukrotnie celem poważnych ataków, a w kręgach specjalistów ds. bezpieczeństwa stała się obiektem żartów.

Nawet jeśli nie poniesiesz faktycznej straty danych lub pieniędzy, przekonanie utraconych klientów może być bardzo trudne.

Zawyżone rachunki za infrastrukturę 💰

Gdy Twoje API działa w infrastrukturze, zużywa zasoby (głównie przepustowość, moc procesora i pamięć). Jeśli API nie jest odpowiednio zabezpieczone, osoby o złych intencjach mogą je przeciążać, zmuszając je do wykonywania bezsensownych operacji (np. uruchamiania skomplikowanych zapytań do bazy danych), co prowadzi do niepotrzebnych kosztów.

Na platformach z automatycznym skalowaniem zasobów (takich jak AWS) skutki mogą być szokujące. (Nawiasem mówiąc, jeśli znajdziesz się w podobnej sytuacji na AWS, rozumieją oni problem i zazwyczaj anulują zawyżony rachunek – przynajmniej na chwilę obecną!).

Spadek morale zespołu

Można by przypuszczać, że zespół, który dopuścił do takich kompromisów, straci morale. Niekoniecznie. Może się zdarzyć, że kompromisy te wynikają ze słabego zabezpieczenia infrastruktury, co z kolei zdemotywuje deweloperów, lub na odwrót.

Jeśli sytuacja będzie się powtarzać, powstanie toksyczna kultura, której będzie się żałowało, że w ogóle na to pozwolono.

Korzyści dla konkurencji

Załóżmy, że doszło do włamania, ale nie nastąpiła żadna realna strata. W takiej sytuacji konkurenci mogą wykorzystać ten incydent, aby wzmocnić własne API i reklamować je jako bezpieczniejsze (nawet jeśli w rzeczywistości tak nie jest!). Ponownie, przekonanie rynku do powrotu może okazać się bardzo trudne.

Podsumowując, naruszenia bezpieczeństwa niosą ze sobą konsekwencje wykraczające poza straty finansowe.

Najlepsze praktyki zabezpieczania punktów końcowych API

Na szczęście istnieją proste i zrozumiałe praktyki, które można zastosować w celu zabezpieczenia punktów końcowych API. Oto zalecenia większości ekspertów ds. bezpieczeństwa.

Zawsze HTTPS 🔒

Jeśli punkty końcowe API umożliwiają komunikację za pomocą protokołu HTTP lub innych niezabezpieczonych protokołów, narażasz je na ogromne ryzyko. Hasła, klucze tajne i dane kart kredytowych mogą zostać łatwo przechwycone przez ataki typu man-in-the-middle lub za pomocą narzędzi do analizy pakietów sieciowych, gdzie dane są przesyłane w postaci czystego tekstu.

Dlatego należy zawsze ustawić HTTPS jako jedyną dostępną opcję. Niezależnie od tego, jak banalny wydaje się punkt końcowy, łączenie się za pomocą HTTP nie powinno być w ogóle możliwe. Certyfikat TLS nie jest drogi; można go kupić już za około 20 USD w SSL Store.

Jednokierunkowe haszowanie haseł

Hasła nigdy nie powinny być przechowywane w postaci czystego tekstu, ponieważ w przypadku naruszenia bezpieczeństwa wszystkie konta użytkowników będą zagrożone. Należy również bezwzględnie unikać szyfrowania symetrycznego, ponieważ każdy wystarczająco zdeterminowany atakujący będzie mógł je złamać.

Jedyną zalecaną opcją są asymetryczne (lub „jednokierunkowe”) algorytmy szyfrowania do przechowywania haseł. W ten sposób ani atakujący, ani programista, ani administrator w firmie nie będą mogli odczytać haseł klientów.

Silne uwierzytelnianie 💪

Obecnie niemal każde API posiada system uwierzytelniania, ale moim zdaniem OAuth2 sprawdza się najlepiej. W przeciwieństwie do innych metod uwierzytelniania, dzieli konto na zasoby i umożliwia jedynie ograniczony dostęp posiadaczowi tokena autoryzacyjnego.

Dobrym pomysłem jest również ustawienie tokenów tak, aby wygasały po 24 godzinach, co wymusza ich odświeżanie. W ten sposób, nawet jeśli token wycieknie, istnieje szansa, że 24-godzinny limit czasowy zmniejszy potencjalne szkody.

Zastosuj ograniczenie częstotliwości wywołań

O ile nie masz API, z którego korzystają miliony użytkowników co minutę, bardzo dobrym pomysłem jest ograniczenie liczby wywołań API, które klient może wykonać w określonym czasie.

Ma to na celu głównie zniechęcenie botów, które mogą wysyłać setki jednoczesnych żądań co sekundę, przeciążając Twoje API bez uzasadnionej przyczyny. Wszystkie frameworki do tworzenia stron internetowych mają wbudowane oprogramowanie pośredniczące do ograniczania liczby żądań (a jeśli nie, to łatwo można je dodać za pomocą biblioteki). Konfiguracja tego mechanizmu zajmuje tylko chwilę.

Sprawdzaj poprawność danych wejściowych

Może to brzmieć jak oczywistość, ale zdziwisz się, ile API tego nie robi. Sprawdzanie poprawności danych wejściowych to nie tylko weryfikacja, czy dane są we właściwym formacie, ale również unikanie niespodzianek. Prostym przykładem jest wstrzykiwanie SQL, które może zniszczyć bazy danych, jeśli pozwolisz na to, aby ciągi zapytań przechodziły bez odpowiedniej kontroli.

Innym przykładem jest sprawdzenie rozmiaru żądania POST i zwrócenie klientowi odpowiedniego kodu błędu i komunikatu. Próba zaakceptowania i przeanalizowania absurdalnie dużych danych wejściowych spowoduje tylko awarię API.

Wymuś filtrowanie adresów IP, jeśli to konieczne

Jeśli działasz w sektorze B2B, a Twoje API jest używane przez firmy z określonych lokalizacji, rozważ dodanie dodatkowej warstwy zabezpieczeń, która ogranicza adresy IP, które mogą uzyskać dostęp do Twojego API. Dla każdej nowej lokalizacji i klienta adres IP będzie musiał zostać zweryfikowany przed akceptacją żądania.

Owszem, utrudnia to nieco proces wdrażania, ale efektem końcowym jest znacznie wyższy poziom bezpieczeństwa, niż można by osiągnąć w inny sposób.

Narzędzia zwiększające ochronę API

Czy istnieją narzędzia, które mogą nam pomóc w skanowaniu luk w zabezpieczeniach, a nawet zapewnić pierwszą linię obrony w ochronie API?

Na szczęście tak. Istnieje kilka narzędzi, których można użyć, ale należy pamiętać, że żadna strategia bezpieczeństwa nie jest idealna. Niemniej jednak te narzędzia mogą znacząco poprawić bezpieczeństwo Twojego API, dlatego warto je stosować.

Metasploit to popularna platforma open source do testowania penetracyjnego aplikacji internetowych i API. Może ona skanować Twoje API pod kątem różnych parametrów i przeprowadzać szczegółowy audyt bezpieczeństwa w celu wykrycia potencjalnych luk.

Na przykład, skan bezpieczeństwa przeprowadzony przez Metasploit może określić, czy sygnatury API zdradzają podstawowe technologie i system operacyjny; ukrycie tych informacji jest często połową sukcesu w ochronie API.

Chociaż rdzeń open source jest zazwyczaj wystarczający, istnieją również doskonałe płatne produkty oparte na Metasploit, które warto rozważyć. Plan Pro jest przydatny, jeśli potrzebujesz wsparcia premium i zamierzasz korzystać z frameworka w pełni, ale zazwyczaj nie jest niezbędny, jeśli Twój zespół jest wystarczająco doświadczony.

AppTrana

Dedykowana ochrona API AppTrana oferuje kompleksowe rozwiązanie oparte na analizie ryzyka, które chroni przed szeroką gamą zagrożeń, w tym OWASP API Top 10, atakami DDoS, botami API, zagrożeniami związanymi z wstrzykiwaniem kodu, wyciekiem danych itp. Dzięki ciągłemu automatycznemu skanowaniu API wspieranemu przez ręczne testy penetracyjne, AppTrana stale monitoruje poziom ryzyka, aby wzmocnić bezpieczeństwo.

Ochrona API AppTrana zapewnia kompleksowe rozwiązanie dzięki połączeniu wykrywania zagrożeń, wykrywania ataków na API, polityk bezpieczeństwa API Positive Security, polityk DDoS specyficznych dla API, modułów botów API oraz funkcji odkrywania API.

Odkrywanie API zapewnia pełny wgląd w wywołania API, w tym nieudokumentowane i ukryte API, co pozwala lepiej zrozumieć potencjalną powierzchnię ataku. Dedykowana ochrona API zbiera informacje o szczegółach użytkowników, zachowaniu API, aktywności zagrożeń, mapach wywołań API i nie tylko, aby pokazać stan zabezpieczeń za pomocą analiz w czasie rzeczywistym.

Korzystając z Indusface AppTrana, możesz tworzyć dostosowane polityki specyficzne dla API, aby blokować nadużycia związane z API w czasie rzeczywistym.

Cloudflare

Cloudflare to nie tylko CDN, ale także platforma oferująca wiele funkcji bezpieczeństwa, takich jak WAF, ograniczenie liczby żądań, ochrona przed atakami DDoS, które są niezbędne do zabezpieczenia API przed zagrożeniami internetowymi. Cloudflare.

Invicti

Invicti charakteryzuje się podejściem „skanowania opartego na dowodach”. Oznacza to, że często zdarza się, iż nietypowe warunki sieciowe lub pewne mniej znane zachowania API są interpretowane jako luki w zabezpieczeniach, które okazują się fałszywymi alarmami.

Marnuje to zasoby, ponieważ wszystkie zgłoszone luki trzeba ręcznie sprawdzić, aby potwierdzić, że nie są one fałszywe. Invicti twierdzi, że ich narzędzie jest w stanie dostarczyć wystarczających dowodów na poparcie raportów o wykrytych lukach, eliminując wątpliwości co do wiarygodności tych raportów.

Mając na liście klientów takie firmy jak Sony, Religare, Coca-Cola i Huawei, można być pewnym, że ci ludzie robią coś dobrze.

SoapUI Pro

Stworzone przez SmartBear, SoapUI Pro to intuicyjne i łatwe w obsłudze narzędzie do tworzenia testów API i generowania szczegółowych raportów opartych na danych. Integruje się ono z potokiem CI/CD, zapewniając, że żadne nowe zmiany w kodzie nie zagrażają bezpieczeństwu Twojego API.

SoapUI współpracuje ze Swagger, OAS i innymi popularnymi standardami API, co znacznie skraca czas konfiguracji. Dzięki klientom takim jak Microsoft, Cisco, MasterCard i Oracle oraz planom cenowym zaczynającym się od 659 USD rocznie, jest to narzędzie, które warto rozważyć, chcąc mieć bezpieczniejsze API.

Okta

Skorzystaj z Okta, aby programiści mogli skupić się na poprawie komfortu użytkowania oraz efektywnym zabezpieczaniu danych firmy. Okta oferuje autoryzację OAuth 2.0 i jest przeznaczona zarówno dla aplikacji mobilnych, jak i internetowych. Jest również kompatybilna z usługami zarządzania API innych firm.

Użyj Okta, aby tworzyć, kontrolować i utrzymywać wszystkie zasady dostępu do API za pomocą przyjaznych dla użytkownika i dedykowanych konsol, bez konieczności pisania własnego kodu. Zapewnia to dodatkową elastyczność, eliminując potrzebę zabezpieczania API za pomocą dodatkowych instancji bramy.

Okta obejmuje politykę opartą na tożsamości, aby zarządzać różnymi typami użytkowników i usług w jednym miejscu. Określ dostęp w zależności od profili użytkowników, sieci, grup, zgody i klientów. Rozszerz tokeny za pomocą dynamicznych danych z systemów wewnętrznych, aby cieszyć się szybszą integracją i bezproblemową migracją.

Ułatwia to scentralizowane zarządzanie API i pozwala chronić zasoby API. Okta koncentruje się na bezpieczeństwie, umożliwiając ochronę dostępu między różnymi mikroserwisami.

Podsumowanie

Nie brakuje narzędzi do zabezpieczania API, zarówno open source, bezpłatnych, komercyjnych, jak i ich kombinacji.

Wypróbuj kilka z nich z tej listy i zobacz, które najlepiej spełnią Twoje potrzeby.


newsblog.pl