Bezpieczeństwo aplikacji – dlaczego warto o nim pamiętać
Dowiedz się jakie zagrożenia związane z bezpieczeństwem mogą czekać na systemy informatyczne i w jaki sposób zmniejszyć prawdopodobieństwo ich wystąpienia.
Modelowanie zagrożeń
Istnieje wiele kryteriów, pomagających oszacować rodzaje zagrożeń, które mogą dotyczyć danego systemu informatycznego. Wszystko zależy między innymi od branży, klientów docelowych oraz dostarczanych funkcjonalności. Przykładowo jeżeli system służy do zamawiania biletów na wydarzenia to musimy wziąć pod uwagę zagrożenia związane w szczególności z nadużyciami systemów płatniczych oraz niewłaściwe zaprojektowane promocje i kody rabatowe. Oczywiście baza danych zawierająca dużą ilość danych osobowych może również okazać się łakomym kąskiem dla włamywaczy.
Spora część problemów na pierwszy rzut oka zdaje się być uniwersalna dla różnych systemów, jednak najważniejsze jest odpowiednie ustalenie priorytetów. Dlatego modelowanie zagrożeń należy wykonywać indywidualnie dla każdego systemu. Tylko w taki sposób będziemy w stanie zrozumieć z jakimi zagrożeniami będziemy musieli się mierzyć.
Możliwe konsekwencje
Z dbaniem o bezpieczeństwo jest podobnie jak z tworzeniem kopii zapasowych. Istnieją tylko dwa typy osób, takie które dbają o bezpieczeństwo i takie, które będą dbać o bezpieczeństwo. Zazwyczaj dzieje się to po jakimś większym incydencie oczywiście jeżeli ten incydent nie pogrąży firmy - bo takie przypadki też mają miejsce.
Wachlarz konsekwencji może być wbrew pozorom bardzo rozległy. Weźmy za przykład wyciek bazy danych klientów firmy oraz zaszyfrowanie danych na serwerze złośliwym oprogramowaniem typu ransomware.
Jeżeli sprawa zostanie nagłośniona to firma może ucierpieć wizerunkowo, co wiąże się też automatycznie ze stratami finansowymi. Kolejnym problemem mogą okazać się też konsekwencje prawne - jeżeli wyjdzie na jaw, że firma w nieodpowiedni sposób przechowywała dane i nie stosowała się do wytycznych to właściwe organy lub osoby pokrzywdzone mogą wytoczyć sprawę przeciwko niej.
W najgorszym przypadku gwoździem do trumny może okazać się brak posiadania wcześniej wspomnianych kopii zapasowych i jeżeli dane na serwerach zostały zaszyfrowane to może to utrudnić lub nawet uniemożliwić dalsze funkcjonowanie firmy.
Zespół zajmujący się bezpieczeństwem na ratunek
Najlepszym sposobem ograniczenia ryzyka jest oczywiście powołanie doświadczonego zespołu, który będzie dbał o bezpieczeństwo systemów. Jeżeli projekt jest stosunkowo młody i pracuje nad nim tylko kilku do kilkunastu deweloperów to jedna lub dwie osoby zajmujące się bezpieczeństwem powinny na początek wystarczyć.
Szybkim sposobem na sprawdzenie jakości bezpieczeństwa systemu może być też zamówienie audytu bezpieczeństwa u zewnętrznej firmy. Jednakże jest to tylko tymczasowe rozwiązanie, gdyż podczas audytu na pewno nie zostaną wykryte wszystkie podatności oraz gdy stan systemu się zmieni np - zostaną dopisane nowe funkcjonalności audyt będzie już nieaktualny.
Doświadczeni programiści oraz dobre praktyki
Statystki pokazują, że bardziej doświadczone zespoły programistów popełniają mniej błędów zagrażających bezpieczeństwu aplikacji. Prawdopodobnie dzieje się tak przez ich lepsze zrozumienie sposobu działania systemów informatycznych. Osoby te częściej też stosują dobre praktyki pisania kodu, które zazwyczaj idą w parze z unikaniem przestarzałych lub niebezpiecznych funkcji i metod języków programowania oraz frameworków.
Dlatego im więcej senior deweloperów na projekcie tym lepiej.
Dodatkowo wprowadzenie wymaganego code review, który będzie wykonywany przez doświadczone osoby oraz wymuszenie stosowania dobrych praktyk na projekcie może w znacznym stopniu podnieść bezpieczeństwo kodu.
Automatyczne narzędzia wykrywające podatności
Istnieje szereg narzędzi, które pomagają wykrywać podatności w sposób automatyczny. Możemy je podzielić na kilka grup, jedną z nich są narzędzia typu SAST - czyli takie, które skanują kod aplikacji w celu znalezienia nieaktualnych lub podatnych części kodu źródłowego. Narzędzia takie bardzo dobrze sprawdzają się w sytuacji, gdy są one podpięte w repozytoriach i skanują każdy kawałek kodu dodany przez programistów. Pomagają one uniknąć wytworzenia wielu podatności jeszcze przed wdrożeniem kodu do systemów produkcyjnych.
Kolejnym rodzajem narzędzi są skanery DAST - w odróżnieniu od narzędzi typu SAST nie bazują one na kodzie lecz na uruchomionych aplikacjach. Próbują one atakować aplikacje w celu znalezienia podatności między innymi takich jak Cross Site Scripting czy SQL Injection.
Warto też wspomnieć o narzędziach SCA - ich zadaniem jest wykrywanie czy żadna z paczek oraz zależności z których korzysta nasza aplikacja nie posiada groźnych podatności. Spora część takich narzędzi oprócz wykrywania podatnych bibliotek posiada też rekomendacje o bezpiecznych wersjach.
Na koniec
Praca nad zwiększeniem bezpieczeństwa systemów jest procesem, który ma na celu zminimalizowanie ryzyka. Trzeba pamiętać, że nie da się zredukować go do zera. Dobra aplikacja to taka, która potrafi utrzymać jak największą wygodę dla użytkowników jednocześnie zachowując bezpieczeństwo na jak najwyższym poziomie.
Proces ten tak naprawdę nigdy się nie kończy, jednak przy odpowiednim ustaleniu priorytetów, dobrej współpracy między zespołami oraz wykorzystaniem automatycznych narzędzi powinno udać się w dość krótkim czasie ograniczyć największe ryzyka, dzięki czemu wszyscy będą mogli spać trochę spokojniej.