| Termin | Definicja |
|---|---|
| brak granicznego zakresu dla kluczy API | Brak granicznego zakresu dla kluczy API to luka bezpieczeństwa, w której poświadczenia dostępowe nie mają ograniczonego zakresu uprawnień. Brak granicznego zakresu dla kluczy API — czym jest problemBrak granicznego zakresu dla kluczy API oznacza sytuację, w której klucz używany przez aplikację, skrypt, urządzenie albo usługę daje dostęp szerszy, niż jest potrzebny do wykonania konkretnego zadania. Sam klucz API jest poświadczeniem pozwalającym rozpoznać żądającego i dopuścić go do wybranych funkcji systemu. Jeżeli jednak nie określono precyzyjnych ograniczeń, taki klucz może umożliwiać odczyt, zmianę, usuwanie albo tworzenie danych w wielu obszarach jednocześnie. Zakres uprawnień powinien odpowiadać rzeczywistej roli danego komponentu. Narzędzie przeznaczone wyłącznie do odczytywania statusu zamówienia nie powinno mieć możliwości modyfikowania kont użytkowników. Skrypt pobierający dane z jednej usługi nie powinien otrzymywać uprawnień do wszystkich zasobów dostępnych w całym koncie. W praktyce chodzi o zasadę najmniejszych uprawnień: każdy klucz powinien pozwalać na wykonanie tylko tych operacji, które są konieczne, i tylko w odniesieniu do określonych zasobów. Luka może pozostać niewidoczna podczas zwykłej pracy, ponieważ aplikacja korzysta zazwyczaj z niewielkiej części możliwości przypisanych do klucza. Ryzyko ujawnia się dopiero po przejęciu klucza, błędnej konfiguracji, wycieku do repozytorium kodu, zapisaniu go w logach lub wykorzystaniu podatności w aplikacji. Wtedy nadmierny zakres staje się gotową drogą do nieautoryzowanych operacji. Brak granicznego zakresu dla kluczy API w kontekście technicznymZakres klucza API może być ograniczany na kilku poziomach. Pierwszy dotyczy rodzaju czynności, na przykład samego odczytu, zapisu, usuwania lub zarządzania konfiguracją. Drugi odnosi się do zasobów, czyli konkretnych projektów, tabel, kolekcji, plików, kont lub metod interfejsu. Trzeci poziom może określać środowisko, takie jak testowe albo produkcyjne, a następny ograniczać pochodzenie żądań do wybranych adresów sieciowych, aplikacji lub domen. Można porównać dwa modele. W modelu szerokiego dostępu jeden klucz pozwala na wiele operacji w całym systemie. Konfiguracja jest prostsza, ale skutki wycieku są znacznie większe. W modelu podzielonych kluczy osobne poświadczenia służą do odczytu, zapisu, automatyzacji i administracji. Taki podział wymaga większej dyscypliny, lecz ułatwia kontrolę, wycofanie pojedynczego klucza i ustalenie, który komponent wykonał daną operację. Ważne jest także rozróżnienie między ograniczeniem funkcjonalnym a ograniczeniem technicznym. Zablokowanie określonych metod API może nie wystarczyć, jeśli klucz nadal ma dostęp do wielu zasobów. Z kolei ograniczenie adresu źródłowego nie zastępuje kontroli uprawnień, ponieważ dopuszczona sieć może zostać naruszona albo wykorzystana przez inny komponent. Skuteczna ochrona polega na połączeniu kilku niezależnych warstw. Weryfikacji wymaga również sposób przechowywania kluczy. Umieszczenie poświadczenia bezpośrednio w kodzie aplikacji, skrypcie przesyłanym do przeglądarki lub publicznym pliku konfiguracyjnym zwiększa ryzyko ujawnienia. Bezpieczniejsze jest korzystanie z przeznaczonego do tego magazynu sekretów, zmiennych środowiskowych oraz mechanizmów, które pozwalają wymieniać klucze bez zmiany kodu. Każdy klucz powinien mieć właściciela, opis zastosowania i ustalony sposób wycofania. Brak granicznego zakresu dla kluczy API a typowe problemyJednym z częstych problemów jest używanie tego samego klucza przez wiele aplikacji i zadań. Gdy pojawi się incydent, trudno ustalić źródło żądań i ocenić, które elementy trzeba odłączyć. Wycofanie wspólnego klucza może przy okazji zatrzymać prawidłowo działające procesy, a pozostawienie go aktywnego przedłuża ryzyko. Rozdzielenie poświadczeń według funkcji upraszcza reakcję i ogranicza zakres potencjalnych szkód. Innym problemem bywa brak rozróżnienia między środowiskiem testowym a produkcyjnym. Klucz użyty podczas prób może zostać skopiowany do narzędzia diagnostycznego, dokumentacji albo wiadomości przesłanej wewnętrznie. Jeżeli ma takie same uprawnienia jak klucz produkcyjny, przypadkowe ujawnienie może dotknąć rzeczywistych danych. Należy stosować osobne poświadczenia, osobne zasoby oraz odmienne reguły dostępu. Ryzyko zwiększa także brak rotacji. Klucz utworzony dawno temu może być nadal aktywny mimo zmiany aplikacji, pracowników, urządzeń i sposobu korzystania z usługi. Nieaktualne poświadczenia często pozostają w kopiach zapasowych, starych skryptach i konfiguracjach urządzeń. Regularny przegląd pozwala odnaleźć nieużywane klucze, sprawdzić ostatnie użycie i usunąć te, które nie mają uzasadnienia. Nie należy pomijać rejestrowania zdarzeń. Sam fakt poprawnego przyjęcia żądania nie świadczy o prawidłowym użyciu klucza. Przydatne jest zapisywanie identyfikatora klucza, czasu, rodzaju operacji, zasobu oraz wyniku żądania, przy czym nie powinno się utrwalać pełnej wartości sekretu. Analiza logów pozwala wykryć nietypową liczbę zapytań, próbę dostępu do nieużywanych zasobów albo operacje wykonywane z nieznanego źródła. Brak granicznego zakresu dla kluczy API — praktyczne wskazówkiNajpierw warto sporządzić mapę wszystkich kluczy API. Dla każdego poświadczenia należy ustalić, z jaką aplikacją, skryptem lub urządzeniem jest związane, jakie operacje wykonuje, do jakich zasobów sięga i kto odpowiada za jego utrzymanie. Jeżeli nie da się wskazać właściciela albo celu, klucz powinien zostać potraktowany jako wymagający pilnego przeglądu. Następnie należy przeanalizować rzeczywiste użycie. Pomocne są logi, historia wywołań oraz dokumentacja interfejsu. Uprawnienia powinny wynikać z zaobserwowanych potrzeb, a nie z założenia, że szeroki dostęp może przydać się w przyszłości. Po ograniczeniu zakresu trzeba wykonać testy wszystkich procesów, które korzystają z danego klucza, aby potwierdzić, że potrzebne operacje nadal działają. Dobrym rozwiązaniem jest tworzenie krótkotrwałych poświadczeń tam, gdzie pozwala na to używana usługa. Jeżeli klucz musi być długoterminowy, powinien mieć określony termin przeglądu, procedurę wymiany i zaplanowane unieważnienie. Warto także wdrożyć alerty dotyczące nieudanych prób, nagłych zmian częstotliwości żądań, nowych źródeł dostępu i wywołań operacji administracyjnych. Podczas przeglądu należy sprawdzić również urządzenie, na którym przechowywany jest klucz. Nieaktualne oprogramowanie, dodatkowe rozszerzenia, złośliwe procesy albo niechronione kopie konfiguracji mogą doprowadzić do przejęcia poświadczeń niezależnie od poprawnego ustawienia samego API. W przypadku podejrzenia wycieku wskazane jest niezwłoczne unieważnienie klucza, utworzenie nowego z mniejszym zakresem, przeanalizowanie logów oraz sprawdzenie, czy nie doszło do zmian w danych. Kiedy zgłosić brak granicznego zakresu dla kluczy API do serwisuDo serwisu warto zgłosić się wtedy, gdy nie można ustalić, gdzie na komputerze lub laptopie zapisano klucz, gdy pojawiają się nieznane procesy, nietypowe komunikaty, samoczynne zmiany konfiguracji albo problemy z działaniem aplikacji korzystających z interfejsu. Pomocna może być także sytuacja, w której poświadczenie zostało przypadkowo umieszczone w publicznym repozytorium, przesłane w niezaszyfrowanym załączniku lub zapisane w pliku dostępnym dla wielu użytkowników. W ramach przygotowania do zgłoszenia nie należy przesyłać pełnej wartości klucza w wiadomości ani publikować jej na ekranie. Można opisać rodzaj aplikacji, czas wystąpienia problemu, komunikaty błędów i zauważone zmiany. Jeżeli istnieje podejrzenie aktywnego wykorzystania poświadczenia, priorytetem powinno być jego unieważnienie po stronie dostawcy API, a następnie sprawdzenie urządzenia i logów pod kątem śladów nieautoryzowanej aktywności. Warszawskie Pogotowie Komputerowe 24/7 może pomóc w uporządkowaniu konfiguracji komputera, sprawdzeniu sposobu przechowywania poświadczeń oraz przygotowaniu bezpieczniejszego podziału dostępów. Przed rozpoczęciem prac warto wskazać, które aplikacje muszą zachować działanie i czy istnieje kopia konfiguracji. Dzięki temu ograniczenie zakresu klucza API może zostać przeprowadzone w sposób kontrolowany, z uwzględnieniem zarówno bezpieczeństwa, jak i ciągłości codziennej pracy. |