Nie tędy droga – o tym, dlaczego nie warto oszczędzać na bezpieczeństwie systemów informatycznych, przestrzega Tomasz Janczewski, Technology Consulting Manager w Accenture.

Każda firma, w swojej działalności wykorzystuje co najmniej jeden system informatyczny. Czy wybierając odpowiednie oprogramowanie zarządy firm w wystarczającym stopniu biorą pod uwagę bezpieczeństwo informatyczne firmy? Często jedynym kryterium wyboru oprogramowania jest cena. Takie podejście, może się jednak zemścić i narazić przedsiębiorstwo na duże koszty oraz utratę reputacji.

 

Jakiś czas temu głośno było o karze, w wysokości aż 660 tys. euro, jaką UODO nałożył na jeden z polskich sklepów internetowych. Problemy zaczęły się od wycieku danych klientów sklepu, później hakerzy uzyskali  dostęp do bankowości internetowej poszkodowanych poprzez wysyłanie SMS nakłaniających do zalogowania się do konta internetowego za pomocą fałszywej/fałszywych stron banku. Cała sprawa zaczęła się tak naprawdę dużo wcześniej – już na etapie błędów w projekcie dostępu do API systemu. Abstrahując od konkretnej firmy, typowy cykl życia oprogramowania w organizacji można przedstawić następującym diagramem.

 

 

Jest to pewne uproszczenie, brak na przykład procedur odtwarzania systemu, bądź jego części z kopii zapasowych, jednak nie jest to istotne w kontekście przedstawionego problemu. Nie zmienia to faktu, że posiadanie aktualnej kopii bezpieczeństwa danych i całych systemów jest koniecznością. Schemat pokazuje źródło strat w firmach. Problemem jest brak uwzględnienia aspektów bezpieczeństwa w produkcyjnych systemach firmowych. Niestety rozwiązaniem nie jest dodanie analizy bezpieczeństwa na etapie zbierania wymagań dotyczących systemu. Takie podejście zabezpieczy system w pierwszym okresie użytkowania, przy założeniu, że programiści, bądź osoby wdrażające system nie popełnią błędów w swojej pracy, jednak nie zmienia to faktu, że z czasem informacje o zabezpieczeniu systemu staną się nieaktualne.

 

Dobrym przykładem jest tu najpopularniejszy na świecie darmowy system CMS – WordPress. W tym systemie tylko w 2018 roku zgłoszono 542 nowe luki bezpieczeństwa (raport Imperva/BleepingComputer). Należy zauważyć, że jest to system powszechnie używany, z dużą zaangażowaną społecznością, która aktywnie stara się naprawiać wykryte błędy w zabezpieczeniach za pomocą m.in. wtyczek.

 

Istotnym elementem, którego brakuje w trakcie życia oprogramowania jest nadrzędna wartość: „bezpieczeństwo przede wszystkim”. Ideą jest wprowadzanie analizy bezpieczeństwa systemu na każdym etapie cyklu życia oprogramowania. Podejście to można zobrazować następującym diagramem.

 

 

Analiza bezpieczeństwa przeprowadzana jest na każdym etapie, jednak wygląda ona inaczej. Podczas zbierania wymagań analiza bezpieczeństwa skupia się na identyfikacji wrażliwych danych, określeniu ryzyk oraz usystematyzowaniu procesów obsługi zdarzeń.

 

W trakcie tworzenia lub zakupu oprogramowania analiza bezpieczeństwa dedykowana jest jego architekturze i mechanizmach zabezpieczeniach, ale również na zabezpieczaniu integracji systemu z innymi systemami. To na tym etapie powstają docelowe rozwiązania systemowe implementujące bezpieczeństwo systemu jako całości. Ważne jest by konstrukcja systemu była na tyle elastyczna, bo pozwalała zapewnić możliwość dodania kolejnych mechanizmów holistycznie zabezpieczających system w przyszłości. Szczególną rolę odgrywają tu architekci bezpieczeństwa systemu – to na ich barkach spoczywa odpowiednie dopasowanie poszczególnych warstw zabezpieczeń oraz skonstruowanie mechanizmów monitorowania aplikacji.

 

Podczas wdrożenia i stabilizacji głównym elementem analizy bezpieczeństwa są testy, np. testy penetracyjne, choć nie są to jedyne testy związane z bezpieczeństwem, które wykonuje się na tym etapie. Poprawnie przeprowadzone testy penetracyjne powinny odpowiedzieć na pytanie – czy do systemu można dostać się w sposób nieautoryzowany oraz gdzie występują wycieki informacji. Same testy trwają około dwóch tygodni i ich wynikiem jest szczegółowy raport z wykrytymi podatnościami. Jeżeli testerzy nie znajdą żadnych błędów, można mieć wątpliwości czy weryfikacja działania aplikacji lub systemu była przeprowadzona właściwie.

 

 

Ostatnim etapem, w którym powinno przeprowadzać się analizę bezpieczeństwa jest użytkowanie aplikacji. Jest to najdłuższy etap życia aplikacji, stąd też analiza powinna być wykonywana cyklicznie. Podstawowymi narzędziami są tu wymienione już wcześniej testy penetracyjne najlepiej zlecane różnym podmiotom w celu uzyskania „świeżego” spojrzenia na aplikację oraz monitoring użytych komponentów. Monitoring komponentów jest zadaniem równie trudnym co testy penetracyjne ponieważ wymaga od osób wspierających aplikację znajomości jej wewnętrznych bibliotek wraz z numerami ich wersji.

 

Bardzo często zdarza się, że odbiorca systemu nie wie w jakiej wersji aplikacja ma zaimportowany system logowania, a to na przykład ten system może być wykorzystany przez intruzów w trakcie próby kompromitacji aplikacji. Ważne jest, by przy wdrożeniu aplikacji posiadać aktualną, i w miarę możliwości pełną dokumentację. Istnieje wiele systemów, które automatycznie wskażą dziury bezpieczeństwa na podstawie dostarczonej listy użytych bibliotek. Jednym z takich systemów przeznaczonym dla aplikacji Java jest OWASP Dependency Check, jednak takie systemy stworzone są dla prawie każdego innego języka programowania.

 

 

W oczywisty sposób kierowanie się podejściem „bezpieczeństwo przede wszystkim” i uwzględnienie go w cyklu życia oprogramowania podwyższa jego całkowite koszty. Warto zauważyć, że tylko kompleksowa implementacja procesów zabezpieczania systemu może skutecznie ochronić przed konsekwencjami ich kompromitacji, jak w przedstawionym wcześniej przykładzie sklepu internetowego. Bezpieczeństwo aplikacji to w dużej mierze wykrywanie i usuwanie błędów w całym okresie jej życia.