Rodzaje testów bezpieczeństwa aplikacji i systemów IT
Testy bezpieczeństwa mogą obejmować różne obszary, zależnie od typu aplikacji, poziomu ryzyka i celu weryfikacji. Poniżej opisujemy najczęściej zamawiane rodzaje testów.
Testy bezpieczeństwa aplikacji webowych
Aplikacja dostępna przez przeglądarkę to najczęstszy cel ataku, bo jest otwarta dla każdego użytkownika internetu. Sprawdzamy ją według OWASP Top 10: uwierzytelnianie i sesje, autoryzację i dostęp do cudzych danych, walidację danych wejściowych, podatności typu injection i XSS, konfigurację nagłówków oraz obsługę błędów. Oprócz skanowania narzędziami analizujemy ręcznie logikę biznesową, czyli to, czego skaner nie zobaczy: czy da się pominąć krok płatności, zmienić cenę w koszyku albo otworzyć dokument innego klienta przez podmianę identyfikatora w adresie. Każda podatność trafia do raportu z oceną ryzyka, scenariuszem ataku i rekomendacją naprawy.
Testy bezpieczeństwa aplikacji mobilnych
Testy bezpieczeństwa aplikacji mobilnej obejmują trzy warstwy: samą aplikację na urządzeniu, jej komunikację z serwerem i API, z którego korzysta. Sprawdzamy, jakie dane aplikacja przechowuje na telefonie i czy są zaszyfrowane, jak działa logowanie, odświeżanie sesji i wylogowanie oraz czy ruch sieciowy jest chroniony przed przechwyceniem i modyfikacją. Weryfikujemy także, czy w kodzie aplikacji nie zostały klucze, adresy środowisk testowych albo dane dostępowe. Wyniki opisujemy tak, żeby zespół mobilny i zespół backendu od razu wiedzieli, po której stronie leży poprawka.
Testy bezpieczeństwa API
API często udostępnia więcej, niż pokazuje interfejs aplikacji, dlatego testujemy je osobno. Sprawdzamy autoryzację na poziomie każdego endpointu, czyli czy użytkownik nie pobierze ani nie zmieni cudzych zasobów przez zmianę identyfikatora, a do tego walidację danych wejściowych, limity zapytań, ekspozycję danych w odpowiedziach i obsługę błędów, które potrafią zdradzić szczegóły infrastruktury. Pracujemy na dokumentacji API, jeśli ją macie, i na ruchu z aplikacji, jeśli jej brakuje. Każdą znalezioną podatność opisujemy z przykładowym zapytaniem, które ją odtwarza, więc zespół może ją od razu powtórzyć i naprawić.
Testy bezpieczeństwa aplikacji desktopowych
Aplikacje desktopowe, szczególnie w firmach i instytucjach, często łączą się z bazą danych albo serwerem w sieci wewnętrznej i przechowują dane lokalnie na komputerze użytkownika. Sprawdzamy, jak aplikacja przechowuje dane i hasła, czy komunikacja z serwerem jest szyfrowana, czy da się obejść logowanie albo uprawnienia, czy aktualizacje są pobierane bezpiecznie oraz czy w plikach instalacyjnych i konfiguracyjnych nie zostały dane dostępowe. Weryfikujemy też, czy zwykły użytkownik nie uzyska przez aplikację uprawnień administratora na stacji roboczej. Wynik dostajecie w tym samym układzie co przy aplikacjach webowych: podatność, ryzyko, scenariusz i rekomendacja naprawy.
Testy bezpieczeństwa systemów informatycznych
Testy bezpieczeństwa systemów informatycznych obejmują całe środowisko, w którym działa aplikacja: serwery, konfigurację usług, nagłówki bezpieczeństwa, ekspozycję informacji w internecie i podstawowe mechanizmy ochrony. Sprawdzamy, które usługi są widoczne z zewnątrz, czy oprogramowanie jest aktualne, czy panele administracyjne nie są dostępne publicznie i czy konfiguracja nie zdradza wersji komponentów. Taki test łączymy zwykle z testem aplikacji, bo luka w konfiguracji serwera potrafi zniweczyć dobre zabezpieczenia w kodzie. W organizacjach objętych NIS2 i KSC to także element dokumentowania, że system jest regularnie weryfikowany pod kątem bezpieczeństwa.
Automatyczne testy bezpieczeństwa w CI/CD
Automatyczne testy bezpieczeństwa w CI/CD to skany uruchamiane przy każdym wydaniu: analiza zależności pod kątem znanych podatności, statyczna analiza kodu i dynamiczne skanowanie działającej aplikacji. Wyłapują znane problemy wcześnie, zanim kod trafi na produkcję, i nie wymagają pracy testera przy każdej zmianie. Nie zastępują jednak testu penetracyjnego, bo nie rozumieją logiki biznesowej aplikacji. Dlatego łączymy oba podejścia: pomagamy wpiąć skany w Wasz pipeline, ustalamy, które wyniki mają blokować wydanie, a test manualny rekomendujemy przy większych zmianach i co najmniej raz w roku. Więcej o tym, jak budujemy takie procesy: budowa procesów CI/CD.
Dodatkowo, w zależności od zakresu projektu, realizujemy:
- Testy penetracyjne (pentesty), symulujemy realny atak na aplikację, API lub infrastrukturę i sprawdzamy, jak daleko da się wejść.
- Testy podatności, identyfikujemy błędy, które mogą prowadzić do naruszenia bezpieczeństwa.
- Testy kontroli dostępu, sprawdzamy, czy użytkownicy nie mogą uzyskać dostępu do danych lub funkcji poza swoimi uprawnieniami.
- Testy bezpieczeństwa formularzy, analizujemy walidację danych, obsługę błędów i odporność na manipulację wejściem.
- Audyt bezpieczeństwa kodu źródłowego, szukamy niebezpiecznych praktyk programistycznych i ryzyk w zależnościach.