Interfejsy programistyczne aplikacji (API) pozwalają organizacjom korzystać z funkcjonalności udostępnianych przez daną aplikację w innej aplikacji. Umożliwia to firmom korzystanie z dostępnych już zasobów, bez konieczności budowania aplikacji od zera. API przekształca modele biznesowe, bezpośrednio generuje przychody, dlatego jego potencjał i skala zastosowania gwałtownie rośnie. Cyberprzestępcy już to wykorzystują.
W 2015 r., przychody generowane przez API stanowiły w koszyku gigantów takich jak eBay i Salesforce odpowiednio 60% i 50%[1]. W tym samym roku, na forum społeczności API portalu programmableweb.com zarejestrowanych było 12 tys. użytkowników, których liczba w 2019 r. niemal się podwoiła.
2019 Application Protection Report, opracowany przez F5 Labs, wskazuje, że naruszenia odnotowane w ostatnim roku koncentrowały się na dużych platformach ze znaczną liczbą interfejsów API i aplikacjach mobilnych zależnych od kilku takich interfejsów. Każde wykryte naruszenie było wynikiem źle skonfigurowanej kontroli dostępu. Szeroko otwarte API – czyli zbyt szerokie uprawnienia stanowią więc jedno z największych zagrożeń dla biznesu.
Biznes ma niską świadomość skali potencjalnych zagrożeń. Tymczasem obserwujemy niepokojący trend – programiści ułatwiający sobie pracę używają dróg na skróty. Dowodzi tego badanie North Carolina State University. Wykazało, że w serwisie internetowym dla projektów programistycznych GitHub, który udostępnia darmowy hosting programów open source i prywatnych repozytoriów wykryto ponad 100 tys. repozytoriów kodów zawierających tokeny API oraz klucze kryptograficzne w postaci tekstu otwartego, do którego jest możliwy dostęp z zewnątrz[2]. Dzięki łatwemu dostępowi do tych zasobów, cyberprzestępcom udaje się pozyskać informacje w ramach całej infrastruktury aplikacji! Dlatego wywołania API, czyli próby połączeń są podatne na ataki przez iniekcję szkodliwego kodu, łamanie haseł i kluczy kryptograficznych oraz szpiegowanie sesji.
Dobre praktyki API dla bezpieczeństwa biznesu:
Pełna wiedza – należy dowiedzieć się, gdzie dokładnie w organizacji wykorzystywane są interfejsy API, jakie mają funkcje w operacjach. Warto prowadzić pogłębione wywiady z zespołami ds. rozwoju i operacyjnymi, uzyskać szczegółowe informacje i przygotować oceny ryzyka.
Uwierzytelnianie – Raport F5 na temat stanu usług aplikacji w 2019 r. wykazał, że 25% ankietowanych organizacji nie korzysta z uwierzytelniania API. 38% stwierdziło, że robiło to „przez pewien czas”, a 37% „przez większość czasu”. To duży problem. Istnieją różne formy uwierzytelniania API i przed podjęciem wyboru zaleca się podejście uwzględniające potencjalne ryzyko. Dane uwierzytelniające są kluczem dostępu do zasobów całej organizacji i powinny być przechowywane w bezpieczny sposób. Może to być kombinacja użytkownik/hasło (dla komputerów lub użytkowników) lub kluczy API (które są uproszczonymi ciągami uwierzytelniania o określonych konkretnych zastosowaniach).
Autoryzacja - interfejsy API nie powinny przekazywać do aplikacji nieautoryzowanych lub nieprzefiltrowanych danych wejściowych, ponieważ tworzy to ścieżkę do ataków metodą injection[3]. Dostępy do interfejsu API trzeba traktować zgodnie z zasadą minimalizacji uprawnień. Kontrola dostępu oparta na rolach jest najlepszym rozwiązaniem. Możliwe jest również zdefiniowanie konkretnych sekwencji działań, które odpowiadają konkretnemu przypadkowi użycia interfejsu API.
Rejestrowanie połączeń API – konieczne jest rejestrowanie i monitorowanie wszystkich połączeń. Dobrą praktyką jest również rejestrowanie zasobów, które są obsługiwane przez interfejsy API.
Szyfrowanie – coraz częściej szyfrujemy ruch użytkowników w Internecie, a przecież ruch poprzez interfejsy API niczym się nie różni. Szyfrowanie i weryfikowanie certyfikatów w tym obszarze powinno być obligatoryjne.
Wdrożenie narzędzi bezpieczeństwa API – warto zapoznać się z dostępnymi na rynku rozwiązaniami. Wśród nich można wymienić korzystanie serwerów proxy lub zapory sieciowej rozpoznającej API celem sprawdzania, weryfikowania i ograniczania żądania dostępu. Niektóre usługi bezpieczeństwa API mogą analizować klienta źródłowego i próbować ustalić, czy żądanie jest uzasadnione czy złośliwe.
Nieustanne testowanie – systematyczne przeprowadzanie testów jest niezbędne dla aktualizacji zabezpieczeń. Dobrym rozwiązaniem może być również wyznaczenie nagrody za wykrywanie błędów interfejsu API (bug bounty) i zaangażowanie w ten sposób proaktywnych specjalistów ds. cyberbezpieczeństwa.