Dlaczego i jak zabezpieczyć punkt końcowy API?

Jak zabezpieczasz swoje API?

Nastała era eksplozji gospodarki cyfrowej, a przez interfejsy API przesyłane są ogromne ilości danych. Biznes, gry, edukacja, pogoda, nauka, sztuka . . . nazywasz to; wszystko działa na API. W świecie tak fundamentalnie zależnym od interfejsów API, zaskakująco mało uwagi poświęca się bezpieczeństwu.

Dla programistów wystarczą domyślne ustawienia ich frameworków; lub co gorsza, gdy nie są używane żadne frameworki, myślą, że przestrzegają praktyk bezpieczeństwa. W przypadku administratorów systemu polegają na domyślnym zabezpieczeniu oferowanym przez ich infrastrukturę lub dostawcę usług.

Niezbyt ładny widok, jeśli o mnie chodzi.

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

Nie trzeba dodawać, że stawka jest duża, o czym uświadamiamy sobie dopiero wtedy, gdy coś naprawdę okropne dzieje się.

Ale najpierw najważniejsze.

Dlaczego bezpieczne punkty końcowe API?

To musi być oczywiste, prawda?

Musimy zabezpieczyć punkty końcowe, ponieważ od tego zależy biznes.

Chociaż sam w sobie jest to wystarczająco mocny argument, chcę nieco poszerzyć punkt widzenia i podkreślić inne powiązane, ale równie śmiertelne konsekwencje.

Strata biznesowa 📉

To jest oczywiste. Jeśli komuś uda się manipulować punktami końcowymi interfejsu API, wszystko się zatrzyma. Naruszenie bezpieczeństwa może również zająć dużo czasu, co z biznesowego punktu widzenia przekłada się na samobójstwo. Chociaż prawdą jest, że większość firm prawdopodobnie nie zostanie dotknięta godziną lub dwiema przestojami, dla niektórych jest to niedopuszczalne.

Wyobraź sobie, że przez kilka minut nie działa kantor wymiany walut!

Kwestie związane ze zgodnością

Niewłaściwe zabezpieczenie interfejsów API może spowodować poważne kłopoty, w zależności od tego, z jakimi obszarami geograficznymi lub branżami masz do czynienia. Na przykład, jeśli obsługujesz branżę bankową (zwłaszcza w UE), koszt wykrycia obsługi z niezabezpieczonymi interfejsami API spowoduje ogromne problemy z prawem i zgodnością. Tak bardzo, że może to nawet oznaczać koniec twojego biznesu.

Utrata reputacji

Bycie zhakowanym samo w sobie jest wystarczająco bolesne, ale jeśli wiadomości rozejdą się publicznie, nastąpi nieodwracalna utrata wizerunku Twojej marki. Na przykład firma Sony została już kilka razy bardzo mocno zhakowana, a w kręgach bezpieczeństwa firma jest pośmiewisko swego rodzaju.

Nawet jeśli nie poniesiesz faktycznej utraty danych ani pieniędzy, powodzenia w próbie przekonania zagubionych klientów.

Zawyżone rachunki za infrastrukturę 💰

Gdy Twój interfejs API działa w infrastrukturze, zużywa zasoby (głównie przepustowość, procesor i pamięć). Na przykład, gdy API nie jest odpowiednio zabezpieczone i złośliwe osoby z zewnątrz są w stanie wchodzić z nim w interakcję, mogą zmusić API do wykonywania wielu bezsensownych prac (na przykład uruchamianie ciężkich zapytań do bazy danych), co może spowodować podnosić rachunki z powodów.

Na platformach, na których włączone jest automatyczne skalowanie zasobów (takich jak AWS), wyniki mogą być szokujące (poza tematem, ale jeśli kiedykolwiek złapiesz się w zupę taką jak ta na AWS, dobrze rozumieją sytuację i natychmiast rezygnują zawyżony rachunek — przynajmniej od chwili pisania!).

Morale zespołu

Można więc pomyśleć, że zespół, który pozwoli na te kompromisy, straci nad nimi morale. Cóż, nie do końca. Możliwe, że kompromisy wynikały ze słabego bezpieczeństwa infrastruktury, co zniechęci deweloperów lub odwrotnie.

Jeśli zdarzy się to wystarczająco długo, będziesz mieć w rękach kulturę, której będziesz żałować, że pozwolisz się rozwinąć.

Zyski konkurenta

Załóżmy więc, że nastąpiło wyłom, ale nie było rzeczywistej straty. Jednak Twoi konkurenci wykorzystają ten incydent, aby wzmocnić własne API i zapewnić, o ile jest bezpieczniejszy (nawet jeśli tak nie jest!). Po raz kolejny powodzenia w próbie przekonania rynku.

Podsumowując, naruszenia bezpieczeństwa pociągają za sobą konsekwencje, które wykraczają poza utratę pieniędzy.

Najlepsze praktyki zabezpieczania punktów końcowych interfejsu API

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

HTTPS zawsze 🔒

Jeśli punkty końcowe interfejsu API umożliwiają konsumentom interfejsu API komunikowanie się za pośrednictwem protokołu http lub innych niezabezpieczonych protokołów, narażasz je na duże ryzyko. Hasła, tajne klucze i informacje o kartach kredytowych mogą łatwo zostać skradzione, jak każde inne atak typu man-in-the-middlelub narzędzie sniffer pakietów może je odczytać jako zwykły tekst.

Dlatego zawsze ustawiaj https jako jedyną dostępną opcję. Bez względu na to, jak trywialny może się wydawać punkt końcowy, łączenie się przez http nie powinno być nawet opcją. Certyfikat TLS nie kosztuje dużo; możesz kupić już za 20 USD od Sklep SSL.

Jednokierunkowe haszowanie hasła

Hasła nigdy nie powinny być przechowywane jako zwykły tekst, ponieważ w przypadku naruszenia bezpieczeństwa wszystkie konta użytkowników zostaną naruszone. Jednocześnie należy bezwzględnie unikać szyfrowania symetrycznego, ponieważ każdy wystarczająco pomysłowy i wytrwały atakujący będzie w stanie je złamać.

Jedyną sugerowaną 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 💪

Teraz prawie każde API ma formę uwierzytelniania, ale moim zdaniem system OAuth2 działa najlepiej. W przeciwieństwie do innych metod uwierzytelniania, dzieli konto na zasoby i umożliwia jedynie ograniczony dostęp do posiadacza tokena uwierzytelniania.

Jednocześnie kolejną bardzo dobrą praktyką jest ustawianie tokenów tak, aby wygasały co, powiedzmy, 24 godziny, aby trzeba było je odświeżyć. W ten sposób, nawet jeśli Twój token wycieknie, istnieje szansa, że ​​24-godzinny termin zmniejszy wpływ naruszenia.

Zastosuj ograniczenie szybkości

O ile nie masz interfejsu API, z którego co minutę korzystają miliony ludzi, bardzo dobrym pomysłem jest wymuszenie ograniczenia liczby wywołań interfejsu API, które klient może wykonać w danym oknie czasowym.

Ma to na celu głównie zniechęcenie botów, które mogą wysyłać setki jednoczesnych żądań co sekundę i sprawić, że Twoje API pochłania zasoby systemowe bez powodu. Wszystkie frameworki do tworzenia stron internetowych są dostarczane z oprogramowaniem pośredniczącym ograniczającym szybkość (a jeśli nie, dość łatwo jest dodać je za pomocą biblioteki), którego konfiguracja zajmuje tylko minutę.

Sprawdź poprawność danych wejściowych

Brzmi to jak oczywistość, ale zdziwisz się, jak wiele interfejsów API się na to nadaje. Walidacja danych wejściowych oznacza nie tylko sprawdzanie, czy przychodzące dane są w prawidłowym formacie, ale także brak niespodzianek. Prostym przykładem jest wstrzykiwanie SQL, które może wymazać Twoje bazy danych, jeśli pozwolisz, aby ciągi zapytań przechodziły z niewielkim lub żadnym sprawdzaniem.

Innym przykładem jest sprawdzenie rozmiaru żądania POST i zwrócenie klientowi prawidłowego kodu błędu i komunikatu. Próba zaakceptowania i przeanalizowania absurdalnie dużych danych wejściowych posłuży tylko do wysadzenia API.

Wymuś filtrowanie adresów IP, jeśli dotyczy

Jeśli interesujesz się usługami B2B, a Twoje interfejsy API są 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 interfejsu API. W przypadku każdej nowej lokalizacji i nowego klienta adres IP będzie musiał zostać porównany z przychodzącym żądaniem.

Tak, zwiększa to niedogodność przy wdrażaniu, ale efektem końcowym jest znacznie większe bezpieczeństwo, niż można by było 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 podatności, a nawet lepiej, oferują pierwszą linię obrony, jeśli chodzi o zabezpieczanie interfejsów API?

Na szczęście tak. Istnieje kilka narzędzi, których możesz użyć, ale pamiętaj, że w ostatecznym rozrachunku żadna strategia bezpieczeństwa nie jest idealna. To powiedziawszy, narzędzia te mogą wielokrotnie zwiększyć bezpieczeństwo Twojego API, dlatego są zalecane.

Metasplot to niezwykle popularna platforma open source do testowania penetracji aplikacji internetowych i interfejsów API. Może skanować Twoje API pod kątem kilku różnych parametrów i przeprowadzać wyczerpujący audyt bezpieczeństwa pod kątem różnych poziomów obecnych luk w zabezpieczeniach.

Na przykład skanowanie bezpieczeństwa przeprowadzone przez Metasploit może stwierdzić, czy sygnatury API zdradzają podstawowe technologie i system operacyjny, czy nie; ukrywanie tego to często połowa sukcesu w bezpieczeństwie API.

Chociaż ogólnie rzecz biorąc, rdzeń open-source jest wystarczający, istnieją doskonałe płatne produkty zbudowane na bazie Metasploit, które są warte obejrzenia. Plan Pro jest świetny, jeśli potrzebujesz wsparcia premium i będziesz korzystać z frameworka dogłębnie, ale generalnie nie jest konieczny, jeśli Twój zespół jest wystarczająco doświadczony.

AppTrana

Dedykowana ochrona API AppTrana funkcje oferują kompleksowe rozwiązanie oparte na ryzyku w celu ochrony przed szeroką gamą zagrożeń API, w tym OWASP API top 10, atakami DDoS i botami opartymi na API, zagrożeniami wbudowanymi, wyciekiem danych itp. Z nieograniczonym automatycznym skanowaniem API wspartym ręcznym piórem testowania, stale monitoruje wynik ryzyka, aby wzmocnić stan bezpieczeństwa.

Ochrona API AppTrana zapewnia najbardziej kompleksowe rozwiązanie dzięki połączeniu wykrywania zagrożeń, wykrywania zagrożeń API, zasad API Positive Security, zasad DDoS specyficznych dla API, modułów Botów specyficznych dla API i funkcji API Discovery.

Wykrywanie interfejsu API zapewnia pełny wgląd w wywołania interfejsu API, w tym nieudokumentowane i ukryte interfejsy API, aby zrozumieć powierzchnię ataku interfejsu API. Ta dedykowana ochrona interfejsu API zbiera informacje o szczegółach użytkownika, zachowaniu interfejsu API, aktywności zagrożeń, mapach wywołań interfejsu API i nie tylko, aby pokazać stan ochrony za pomocą analiz w czasie rzeczywistym.

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

Cloudflare

Nie tylko CDN, ale Cloudflare oferują wiele funkcji bezpieczeństwa, takich jak WAF, ograniczanie szybkości, ochrona przed atakami DDoS, które będą niezbędne do zabezpieczenia Twojego interfejsu API przed zagrożeniami internetowymi.

Invicti

Invicti jest dostarczany z USP „skanowania opartego na dowodach”. Mówiąc prościej, często zdarza się, że nieregularne warunki sieciowe lub niektóre mniej znane zachowania interfejsu API są interpretowane jako luki w zabezpieczeniach, które później okazują się błędne.

To marnuje zasoby, ponieważ wszystkie zgłoszone luki muszą zostać ponownie ręcznie przeskanowane, aby potwierdzić, że nie są to fałszywe alarmy. Invicti twierdzi, że narzędzie jest w stanie zapewnić wystarczająco silny dowód koncepcji dla raportów, usuwając wątpliwości dotyczące znalezionych słabych ogniw.

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

SoapUI Pro

Zbudowany przez SmartBear, SoapUI Pro to intuicyjny i łatwy sposób tworzenia testów API i uzyskiwania z nich dokładnych, opartych na danych raportów. Integruje się również z potokiem CI/CD, upewniając się, że żadne nowe dodatki do kodu nie zagrażają bezpieczeństwu Twojego interfejsu API.

SoapUI może współpracować ze Swagger, OAS i innymi popularnymi standardami API, znacznie skracając czas rozpoczęcia. Z klientami takimi jak Microsoft, Cisco, MasterCard, Oracle itp. i planami zaczynającymi się od 659 USD rocznie, jest to godne narzędzie do bezpieczniejszych interfejsów API.

Okta

Próbować Okta aby umożliwić programistom skoncentrowanie się na zwiększaniu komfortu użytkowania oraz efektywnego zabezpieczania danych przedsiębiorstwa. Oferuje autoryzację OAuth 2.0 i jest przeznaczony zarówno dla aplikacji mobilnych, jak i internetowych. Jest również kompatybilny z usługami zarządzania API innych firm.

Korzystaj z Okta, aby tworzyć, kontrolować i utrzymywać wszystkie zasady dostępu do interfejsu API za pomocą przyjaznych dla użytkownika i specjalnie zaprojektowanych konsol bez konieczności stosowania niestandardowych kodów. Zapewnia dodatkową elastyczność, dzięki czemu nie musisz zabezpieczać interfejsów API za pomocą dodatkowych wystąpień bramy.

Okta obejmuje politykę opartą na tożsamości, aby kontrolować różne typy użytkowników i usług pod jednym dachem. Zdefiniuj 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 scentralizowaną administrację API i pozwala chronić zasoby API. Okta koncentruje się na bezpieczeństwie, umożliwiając ochronę dostępu między różnymi mikroserwisami.

Wniosek

Jest Nie brakuje narzędzi bezpieczeństwa API dostępnych na rynku, niezależnie od tego, czy jest to oprogramowanie typu open source, bezpłatne czy komercyjne, lub dowolna ich kombinacja.

Wypróbuj kilka z nich z listy i zobacz, co najlepiej spełnia Twoje wymagania.