Testy penetracyjne a statyczna analiza kodu – co wybrać?

29/01/2021

Od dawna naturalną strategią zapewnienia bezpieczeństwa aplikacji są testy penetracyjne. Ciągły rozwój różnych technik ataków ujawnia jednak niedomagania takiego podejścia. Coraz większą akceptację w środowiskach związanych z bezpieczeństwem aplikacji zdobywa podejście mówiące o konieczności adresowania kwestii bezpieczeństwa u źródła, czyli w kodzie aplikacji. Statyczna analiza kodu zaczyna być postrzegana jako atrakcyjna alternatywa wykrywania podatności bezpieczeństwa już na poziomie kodu źródłowego aplikacji.

Czym są testy penetracyjne?

Testy penetracyjne są metodyką łączącą podejście manualne z automatycznym. Jak sama nazwa sugeruje esencją tego rodzaju testów są próby ataku na aplikację przez ekspertów z dziedziny bezpieczeństwa z wykorzystaniem wiedzy eksperckiej, gotowych exploitów oraz zestawu narzędzi automatycznie testujących istnienie znanych podatności. Wyniki tych prób ataku są następnie przekazywane organizacji zlecającej testy i docelowo trafiają do zespołów deweloperskich w celu wyeliminowania podatności.

Takie podejście daje zazwyczaj bardzo dobre rezultaty i identyfikuje wiele luk bezpieczeństwa jednak zawsze jest obarczone ryzykiem niekompletności. Nawet najlepsi eksperci wspomagając się narzędziami do automatyzacji swojej pracy mogą nie wykryć wszystkich podatności. Istotnym ograniczeniem jest również czas. Czas pracy specjalisty jest bezpośrednio związany z kosztem testów i zawsze jest ograniczony. Ograniczony jest też czas przewidziany w projekcie na testy, każdy projekt ma deadline’y. Te ograniczenia powodują, że nie da się w pełni zasymulować działań i strategii potencjalnych ataków.

Testy penetracyjne zazwyczaj realizowane są na podstawie gotowych, predefiniowanych list znanych zagrożeń czy exploitów. Często bazy te są niekompletne i nieaktualne i nie obejmują wszystkich zagrożeń. Przygotowanie kompleksowego planu testów adekwatnego do sytuacji jest zazwyczaj zbyt kosztowne i czasochłonne. To kolejne duże ograniczenie podejścia opierającego się wyłącznie na testach penetracyjnych.

Analiza statyczna z wykorzystaniem SAST (Static Application Security Testing)

SAST to zupełnie inne podejście do testów bezpieczeństwa. Polega ono na analizie kodu źródłowego, bytecode’u lub postaci binarnej. W ramach SAST, do którego należy też SCA (Static Code Analysis) nie czeka się z testami na gotową, uruchomioną aplikację i testowanie aspektów bezpieczeństwa rozpoczyna się na bardzo wczesnym etapie, kiedy zaczyna powstawać kod. Podatności bezpieczeństwa wykrywane są jeszcze przed zbudowaniem aplikacji. To kluczowa różnica pomiędzy SAST i testami penetracyjnymi.

Organizacje wykorzystujące SAST zapewniają sobie bezpieczeństwo na poziomie samego procesu wytwórczego tworząc sSDLC (secure Software Development Life Cycle) i w sam proces wytwórczy wbudowują elementy związane z testami bezpieczeństwa. Rozwiązania SAST mogą być integrowane z pipeline’ami CI/CD, narzędziami do śledzenia zgłoszeń oraz z IDE programistów. Taki ekosystem powoduje, że testy bezpieczeństwa odbywają się na bieżąco a nie tylko w ramach jednego z końcowych etapów projektu.

Testy typu White Box, którymi są testy realizowane z wykorzystaniem SAST pozwalają osiągnąć wysoką skuteczność wykrywania podatności bezpieczeństwa we wszystkich warstwach aplikacji, nie tylko tych ewidentnie wyeksponowanych na potencjalne ataki. Dobrze wdrożone i skonfigurowane narzędzia pozwalają też osiągnąć niski poziom fałszywych alarmów, czyli zgłoszeń których obsługa konsumuje nasze zasoby, a które ostatecznie okazują się nie być prawdziwymi zagrożeniami bezpieczeństwa.

Static Analysis vs Pen-Testing

Analiza statyczna a testy penetracyjne: 7 powodów by wybrać SAST/SCA

1 – Zwrot z inwestycji (ROI)

Testy penetracyjne to przedsięwzięcie, które zazwyczaj trzeba cyklicznie powtarzać by zapewnić oczekiwany poziom bezpieczeństwa aplikacji. Każdy przebieg testów penetracyjnych to dodatkowe koszty. Testy penetracyjne wykonywane są dopiero kiedy aplikacja jest albo wydaje się być gotowa do wdrożenia produkcyjnego. Jeśli testy wykażą podatności, to musimy zaplanować ich usunięcie i powtórzyć testy. To zajmuje cenny czas, w którym aplikacja mogłaby już przynosić nam korzyści.

Pomimo tego, że testy penetracyjne są dobrym narzędziem do podniesienia poziomu bezpieczeństwa aplikacji a w niektórych sektorach są wręcz narzucone regulacjami, to poleganie wyłącznie na nich może mieć poważne konsekwencje zarówno techniczne jak i finansowe. Włączenie SAST do strategii zapewnienia bezpieczeństwa daje korzyści finansowe między innymi dzięki temu, że podatności wykrywane są bardzo wcześnie, dzięki czemu ich wyeliminowanie jest łatwe i tanie.

Dzięki SAST można uniknąć nieprzewidzianych, czasem wielokrotnych powtórek cyklu testowania, poprawek i retestów. Takie nieprzewidziane cykle to nie tylko dodatkowy koszt samych retestów, ale także utracone korzyści i często wymierne straty spowodowane opóźnieniami we wdrożeniu produkcyjnym aplikacji.

Familiarization with the Code - stages

2 – Oszczędność czasu pracowników

Testy penetracyjne zazwyczaj wykonywane są przez specjalistów spoza organizacji. Finalnym produktem ich pracy jest raport opisujący odkryte podatności. Podatności te następnie zespół wytwórczy musi zrozumieć, zidentyfikować ich źródło w kodzie aplikacji i wprowadzić zmiany potrzebne do wyeliminowania zagrożenia. Niejednokrotnie okazuje się to mozolnym i czasochłonnym zadaniem zajmującym czas programistów.

Wykorzystując SAST drastycznie redukujemy czas programisty potrzebny do wykonania poprawki. Błąd identyfikowany jest bezpośrednio w kodzie, nie trzeba go szukać. Defekty wykrywane są na najwcześniejszym możliwym etapie, co skutkuje redukcją koszów ich usunięcia. Skanowanie kodu automatycznie wykonywane na bieżąco podczas tworzenia kodu aplikacji powoduje, że nasz cykl wytwórczy jest zorientowany na bezpieczeństwo i realizujemy w ten sposób proces sSDLC (secure Software Develompent Life Cycle).

3 – Krótsze czasy wprowadzania poprawek

Rozwiązania SAST wskazują podatność w kodzie źródłowym, ale dodatkowo mogą zasugerować optymalne miejsce wprowadzenia poprawki. Dzięki temu często za pomocą jednej zmiany w kodzie można wyeliminować dziesiątki podatności, które bez takiej sugestii mniej doświadczony zespół mógłby adresować niezależnie. Testy penetracyjne nie oferują takich możliwości.

Od napisania kodu przez programistę do otrzymania raportu z testów penetracyjnych mogą minąć tygodnie a nawet miesiące. Nawet jeśli poprawkę będzie przygotowywał autor oryginalnego kodu, to często musi ten kod ponownie przeczytać, przeanalizować i zrozumieć. Jeśli poprawkę ma przygotować inny programista to proces ten może się istotnie wydłużyć.

Dzięki SAST wyniki testów trafiają do programisty na bieżąco, poprawki może przygotować autor kodu nie musząc go sobie przypominać.

4 – Lepsza trafność

Testy penetracyjne mogą nie wykrywać wszystkich podatności ze względu na stare lub niekompletne listy podatności z których korzystają podczas gdy większość narzędzi SAST aktualizuje swoje bazy automatycznie. Nieaktualne bazy podatności mogą też generować fałszywe alarmy i skutkować wskazywaniem podatności, które nigdy się nie zmaterializują. Bez analizy kodu źródłowego nie można też wykryć podatności manifestujących się tylko w pewnych warunkach lub w określonym czasie. Przykładem może być pozostawiony w kodzie backdoor aktywny tylko przez minutę w ciągu doby albo tyko jednego dnia w miesiącu.

Niektóre narzędzia SAST pozwalają na zaawansowaną konfigurację i dostrojenie reguł używanych przez narzędzia skanujące do konkretnego przypadku. Pozwala to z jednej strony implementować własne, specyficzne reguły bezpieczeństwa i weryfikować je na bieżąco podczas skanowania a z drugiej strony praktycznie wyeliminować fałszywe alarmy, których obsługa też kosztuje.

5 – Wartość edukacyjna dla programistów

Dzięki integracji z IDE, prostocie i gotowym wskazówkom SAST pozwala zaangażować w proces usuwania podatności wszystkich programistów, także tych mniej doświadczonych. Takie zaangażowanie podnosi świadomość programistów w kwestiach bezpieczeństwa i wytwarza nawyki tworzenia bezpiecznego kodu. Testy penetracyjne nie mają takiego waloru edukacyjnego.

6 – Integracja z narzędziami i procesem wytwórczym

SAST doskonale wpisuje się w sam proces wytwarzania oprogramowania. Pluginy do IDE pozwalają na szybkie i łatwe eliminowanie podatności co oszczędza czas programistów i specjalistów do spraw bezpieczeństwa. Integracja z pipeline’ami CI/CD pozwala na takie ustawienie procesu wytwórczego, że potencjalne podatności bezpieczeństwa nie trafiają nawet na środowisko testowe, bo blokowane są commity z niebezpiecznym kodem.

Poleganie wyłącznie na testach penetracyjnych, które rozpoczynają się dopiero po uruchomieniu gotowej aplikacji może prowadzić do nieprzewidzianych opóźnień w produkcyjnym uruchomieniu aplikacji lub jej nowej wersji.

7 – Funkcjonalność QA

Testy penetracyjne koncentrują się tyko na wykrywaniu podatności bezpieczeństwa podczas gdy SAST oferuje znacznie więcej. Dzięki analizie kodu źródłowego aplikacji możliwa jest identyfikacja martwego, czyli nieużywanego kodu czy nawet błędów logicznych w samej aplikacji i są to funkcjonalności jakich testy penetracyjne nie dostarczą.

Analiza statyczna czy testy penetracyjne?

Czy znając niewątpliwe zalety podejścia SAST powinniśmy zrezygnować z testów penetracyjnych i zastąpić je statyczną analizą kodu? Nie! Testy penetracyjne są bardzo dobrą metodą zapewnienia bezpieczeństwa aplikacji i są podatności związane z infrastrukturą czy konfiguracją serwerów, które nie mają źródła w kodzie aplikacji.

Testy penetracyjne mają swój sens i zalety, są często wymagane przez zewnętrzne regulacje i wewnętrzne procedury. Mają jednak swoje ograniczenia i organizacje, w których wytwarzanie bezpiecznego oprogramowania jest priorytetem coraz częściej decydują się na włączenie testów SAST w swoje procesy wytwórcze.

SAST pozwala zredukować koszty usuwania podatności bezpieczeństwa, pomaga budować i utrwalać dobre praktyki tworzenia bezpiecznego kodu w zespołach dzięki walorom edukacyjnym. Zastosowanie statycznej analizy kodu zabezpiecza przed ryzykiem nieplanowanych opóźnień w projektach. Same testy penetracyjne mogą być wykonywane rzadziej, bez nieplanowanych powtórek i stają bardziej potwierdzeniem, że nasz bezpieczny proces wytwórczy działa, a nie źródłem bolesnych niespodzianek tuż przed planowanym wdrożeniem.

Chcesz poprawić bezpieczeństwo swojego oprogramowania? Zamów analizę swojego kodu!

Autor: Łukasz Rauer – Technology Consulting Solution Manager w Altkom Software & Consulting

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

 

Watch for free

Enter your contact details to receive a link to the recording:

I voluntarily consent to the processing of my personal data for the purposes of the application process (show more) by Altkom Experts sp. z o.o. and Altkom Software & Consulting sp. z o.o. (51 Chłodna Street, 00-867 Warsaw), in accordance with Regulation 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of individuals with regard to the processing of personal data and on the free movement of such data ("RoDO"). I am aware that providing the above personal data is voluntary, but necessary to handle the request, and that I have the right to access the content of my data and the possibility of correcting it, and that my consent may be revoked at any time. Please contact the Altkom Data Protection Officer: iodo@altkom.pl.

I voluntarily consent to the processing of my personal data for marketing purposes (show more)by Altkom Experts sp. z o.o. and Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warsaw) and receiving commercial information by electronic means to the e-mail address and telephone number provided by me, in accordance with Regulation 2016/679 of the European Parliament and of the Council of 27 April 2016 on the protection of individuals with regard to the processing of personal data and on the free movement of such data ("RODO"), and the Act of 18 July 2002 on the provision of electronic services. I am aware that providing the above personal data is voluntary and that I have the right to access and correct my data and that my consent may be revoked at any time. Please contact the Altkom Data Protection Officer: iodo@altkom.pl.

 

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

 

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

 

Zarejestruj się na webinar:

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych dla potrzeb procesu realizacji zgłoszenia (pokaż więcej) przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa), zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”). Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne, ale konieczne do obsługi zgłoszenia oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl

Wyrażam dobrowolnie zgodę na przetwarzanie moich danych osobowych w celach marketingowych (pokaż więcej)przez Altkom Experts sp. z o.o. oraz Altkom Software & Consulting sp. z o.o. (ul. Chłodna 51, 00-867 Warszawa)oraz otrzymywanie informacji handlowych drogą elektroniczną na adres e-mail i numer telefonu podany przeze mnie, zgodnie z Rozporządzeniem Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych („RODO”), oraz Ustawy z dnia 18 lipca 2002 r. o świadczeniu usług drogą elektroniczną. Mam świadomość, iż podanie powyższych danych osobowych jest dobrowolne oraz że posiadam prawo dostępu do treści swoich danych i możliwość ich poprawiania a zgoda może być odwołana w każdym czasie. Kontakt do inspektora ochrony danych osobowych w Altkom: iodo@altkom.pl