Testy zabezpieczeń można pogrupować (zgodnie z pracą [Whittaker04]) według źródła pochodzenia określonego zagrożenia:
- Związane z interfejsem użytkownika — nieautoryzowany dostęp i dane wejściowe wywołujące szkodliwe skutki.
- Związane z systemem plików — dostęp do wrażliwych danych przechowywanych w plikach lub repozytoriach.
- Związane z systemem operacyjnym — przechowywanie poufnych informacji (np. haseł) w postaci niezaszyfrowanej w pamięci, której zawartość może zostać ujawniona po załamaniu systemu wywołanym przez szkodliwe dane wejściowe.
- Związane z zewnętrznym oprogramowaniem — interakcje, które mogą wystąpić między zewnętrznymi komponentami używanymi przez system. Takie problemy mogą pojawić się na poziomie sieci (np. przesłanie niepoprawnych pakietów lub komunikatów) lub na poziomie modułów oprogramowania (np. awaria modułu oprogramowania niezbędnego do działania systemu).
Podczas projektowania testów zabezpieczeń można skorzystać z następującego podejścia [Whitaker04]:
- Zbierz informacje, które mogą okazać się przydatne podczas specyfikowania testów, np. nazwiska pracowników, adresy fizyczne, szczegółowe informacje o sieciach wewnętrznych, adresy IP, sygnatury używanego oprogramowania i sprzętu oraz wersje systemu operacyjnego.
- Wykonaj skanowanie słabych punktów zabezpieczeń za pomocą ogólnie dostępnych narzędzi. Narzędzia tego rodzaju nie służą do podejmowania bezpośrednich ataków na system, ale do zidentyfikowania słabych punktów zabezpieczeń, które stanowią naruszenie zasad ochrony lub mogą takie naruszenie spowodować. Konkretne zagrożenia da się także zidentyfikować z wykorzystaniem list kontrolnych, takich jak listy opublikowane przez National Institute of Standards and Technology (NIST) [Web-2].
- Korzystając ze zgromadzonych informacji, opracuj „plany ataków” (tj. plany działań testowych zmierzających do naruszenia zasad ochrony konkretnego systemu). W planach ataków należy wyspecyfikować wykorzystanie różnych danych wejściowych wprowadzanych za pośrednictwem różnych interfejsów (np. interfejsu użytkownika i systemu plików), tak aby możliwe było wykrycie najpoważniejszych usterek związanych z zabezpieczeniami. Różne „ataki” opisane w pracy [Whittaker04] stanowią przydatny przegląd technik opracowanych specjalnie w celu testowania zabezpieczeń.
Problemy dotyczące zabezpieczeń można zidentyfikować także w trakcie przeglądów (patrz rozdział 5) lub zastosowania narzędzi do analizy statycznej (patrz punkt 3.2). Narzędzia do analizy statycznej zawierają rozbudowany zestaw reguł związanych z zagrożeniami bezpieczeństwa, służących do weryfikowania kodu. Narzędzie jest w stanie, na przykład,wykryć problemy z przepełnieniem bufora wynikające z braku sprawdzenia jego wielkości przed umieszczeniem w nim danych.
Narzędzi do analizy statycznej można użyć także w przypadku kodu aplikacji internetowej, aby wykryć potencjalne zagrożenia związane ze wstrzykiwaniem kodu, obsługą plików cookie, osadzaniem kodu pochodzącego z innych witryn (cross-site scripting), manipulacją zasobami i wstrzykiwaniem kodu SQL.