W dzisiejszym świecie cyfrowym, gdzie aplikacje i systemy stają się coraz bardziej złożone, konieczne jest zapewnienie ich bezpieczeństwa. Jednym ze sposobów na osiągnięcie tego celu jest przeprowadzenie analizy bezpieczeństwa kodu źródłowego. Istnieją różne metody analizy, ale dwie z najbardziej popularnych to DAST (Dynamic Application Security Testing) i SAST (Static Application Security Testing). Chociaż obie te metody mają na celu identyfikację podatności w aplikacjach, różnią się one podejściem i zakresem działania.

Porównanie DAST i SAST

  1. Definicja:

    • DAST: Jest to technika testowania, która analizuje aplikację w czasie jej działania, skupiając się na identyfikacji podatności, które mogą być wykorzystane w rzeczywistych atakach.
    • SAST: Jest to proces analizy kodu źródłowego, bajtkodu lub binarnego kodu aplikacji w celu identyfikacji podatności bez uruchamiania programu.
  2. Czas przeprowadzenia:

    • DAST: Przeprowadzane w czasie działania aplikacji.
    • SAST: Przeprowadzane w fazie tworzenia kodu, przed uruchomieniem aplikacji.
  3. Zakres:

    • DAST: Skupia się na środowisku uruchomieniowym aplikacji, identyfikując podatności, które mogą być wykorzystane przez atakującego.
    • SAST: Analizuje kod źródłowy, bajtkod lub binarny kod w poszukiwaniu podatności.
  4. Korzyści:

    • DAST: Może identyfikować podatności, które są trudne do wykrycia w analizie statycznej, takie jak problemy z konfiguracją czy błędy w czasie działania.
    • SAST: Może wykryć podatności na wczesnym etapie procesu tworzenia oprogramowania, co pozwala na ich szybkie usunięcie.
  5. Wady:

    • DAST: Może nie wykryć pewnych podatności, które są widoczne tylko w kodzie źródłowym.
    • SAST: Może generować fałszywe alarmy i wymaga dogłębnej analizy wyników przez specjalistów.

Podsumowując, zarówno DAST, jak i SAST mają swoje miejsce w procesie zapewnienia bezpieczeństwa aplikacji. Wybór odpowiedniej metody zależy od specyfiki projektu, dostępnych zasobów oraz poziomu ryzyka związanego z aplikacją. W wielu przypadkach zaleca się stosowanie obu metod równocześnie, aby zapewnić kompleksową ochronę.

Analiza kodu źródłowego aplikacji jest realizowana w oparciu o najlepsze praktyki w obszarze bezpiecznego wytwarzania oprogramowania oraz zalecenia organizacji OWASP (standard ASVS oraz MASVS).

Analiza kodu źródłowego może być wspierana przez wyniki przeprowadzonych testów penetracyjnych.

W ramach naszych prac zrealizujemy statyczną analizę kodu źródłowego, która będzie dotyczyła najistotniejszych funkcjonalności z punktu widzenia bezpieczeństwa, m.in.:

  • Obsługa wejścia i wyjścia z aplikacji,
  • Walidacja danych,
  • Uwierzytelnianie i autoryzacja,
  • Mechanizmy kryptograficzne,
  • Zarządzanie pamięcią,
  • Obsługa błędów,
  • Odwołania do systemu operacyjnego,
  • Logowanie.

Zgodnie z metodyką nasze przeglądy kodu są wykonywane w następujących etapach:

  • Przeprowadzenie wywiadu z architektami aplikacji lub wiodącymi programistami w celu uzyskania informacji o jej funkcjach biznesowych oraz o jej strukturze wewnętrznej,
  • Oczyszczenie kodu źródłowego z kodów testowych oraz nieużywanych fragmentów kodu, a także oznaczenie kodów bibliotek zewnętrznych,
  • Przeprowadzenie statycznej analizy kodu z użyciem narzędzi automatycznych w celu zidentyfikowania podatności wykrywanych tymi narzędziami,
  • Manualna weryfikacja wyników uzyskanych z narzędzi automatycznych,
  • Uzupełnienie analizy za pomocą manualnych kontroli na podstawie list kontrolnych opisujących różne typy podatności adekwatne dla stosowanego języka programowania,
  • Przedyskutowanie wyników prac z architektami aplikacji lub wiodącymi programistami w celu określenie poziomu ryzyka podatności i podejścia zespołu programistycznego,
  • Przygotowanie raportu zawierającego listę zidentyfikowanych podatności wraz z rekomendacjami ich usunięcia.