Czym zajmuje się obszar bezpieczeństwa aplikacji?
Adrian Sroka: Można powiedzieć, że praca nad bezpieczeństwem aplikacji ma na celu takie zaprojektowanie systemów, by zarówno użytkownik jak i jego dane były bezpieczne. To dbanie o bezpieczeństwo można realizować na wiele sposobów, np. edukując użytkowników. Niestety jest to trudne i mało efektywne, ponieważ po pierwsze nie zawsze mamy stałych czy powracających użytkowników/Klientów, a po drugie nie wszystkich jesteśmy w stanie wyedukować, nawet wtedy, gdy bardzo byśmy się starali.
Znacznie efektywniejsze jest z kolei takie zaprojektowanie i zabezpieczenie systemów, żeby użytkownicy nie musieli tak wiele myśleć o swoim bezpieczeństwie. Wiadomo, nie można w ten sposób zredukować ryzyka do zera, ale można je skutecznie zmniejszyć do akceptowalnego poziomu. Dla przykładu, jeśli wprowadziliśmy logowanie dwuskładnikowe, to uratujemy naszego użytkownika nawet w sytuacji, gdy padnie on ofiarą ataku phishingowego i poda komuś swoje dane logowania do naszego systemu
Jakie są główne zagrożenia dla aplikacji?
A. S.: Obecnie bardzo popularnymi zagrożeniami są ataki na łańcuch dostawczy — czyli to wszystko, z czego jest budowana (i w jaki sposób jest budowana) finalna aplikacja. Atakujący dzięki temu mogą uzyskać efektywną dźwignię. Kompromitując jeden element łańcucha dostawczego oprogramowania, mogą zainfekować/ zaatakować wiele różnych firm, korzystających z tego elementu.
Przykładem może tu być korzystanie z narzędzi do automatyzacji wdrożeń i weryfikacji kodu. Po udanym ataku (lub znalezieniu luki) w takim narzędziu, każda firma, która z nich korzysta, może stać się łatwym celem ataku.
Najpopularniejszy branżowy przykład tego typu ataku to luka w log4j. Problem w jed-nej bibliotece skutkował podatnością zależną w 35 tysiącach innych bibliotek, co stanowi 8% całego zbioru bibliotek publicznych Java.
Jak więc można zadbać o ten obszar w firmie?
A. S.: Najważniejsze jest holistyczne podejście. Wytwarzanie oprogramowania to dość skomplikowana dziedzina, która obejmuje wiele perspektyw takich jak projektowanie, dewelopment, utrzymanie. Do tego dochodzi wiele różnych technologii i środowisk (chmura, aplikacje webowe, mobilne, itp.).
Każdy z tych elementów ma ogromny wpływ na bezpieczeństwo całego systemu. Nie wystarczy uwzględnić bezpieczeństwa na etapie projektowania, jeśli deweloperzy nie dbają o nie w swojej codziennej pracy nad tworzeniem kodu. Nie wystarczą testy penetracyjne, jeżeli nasza aplikacja jest skomplikowana, bo nie wychwycą one np. problemów bezpieczeństwa powiązanych z logiką.
Jakie są obecnie trendy w obszarze bezpieczeństwa aplikacji?
A. S.: Obecnie coraz częściej w celu redukcji kosztów i zwiększenia efektywności dbania o bezpieczeństwo aplikacji stosuje się podejście shift left. Kiedyś głównym punktem zadbania o bezpieczeństwo były testy penetracyjne wykonywane zwykle tuż przed wdrożeniem aplikacji lub cyklicznie. To powodowało wiele problemów organizacyjnych. Dlatego też teraz nacisk przenosi się na wcześniejsze etapy dewelopementu. Im wcześniej pomyślimy o zaaplikowaniu bezpieczeństwa do codziennej pracy analityków i deweloperów, tym łatwej i finalnie taniej będzie je wprowadzić.
Uwzględnienie elementów bezpieczeństwa dla funkcjonalności na etapie projektu jest dużo tańsze niż dodanie ich dopiero po wykryciu błędu. A co dopiero, gdy błąd ten zostanie wykorzystany na produkcji.
Kolejnym trendem jest DevSecOps. To krok dalej, czyli wprowadzenie automatycznych miar i testów, dzięki którym upewnijmy się, że spełniamy oczekiwany poziom bezpieczeństwa. W ten sposób możemy uwzględniać troskę o bezpieczeństwo w procesie wytwarzania oprogramowania najwcześniej, jak to tylko możliwe. Jak widać duży nacisk w obecnych trendach kładzie się na ludzi i na wdrażanie bezpieczeństwa, począwszy od nich.
Bezpieczeństwo, czyli najpierw ludzie, ale jak to wprowadzić?
A. S.: Wiele firm, zaczynając przygodę z bezpieczeństwem aplikacji, bierze udział w różnorakich szkoleniach podnoszących świadomość tego tematu. To dobry pomysł. Jednak tylko na początek, gdy poziom wiedzy i zainteresowania pracowników tymi tematami jest stosunkowo niski. Praktyka pokazuje, że pracownicy dość szybko zapominają o tym, czego nauczyli się na szkoleniach. Dlaczego? Ponieważ dostają w krótkim czasie potężną dawkę wiedzy (często szkolenia są bardzo dobrze przygotowane pod względem merytorycznym), ale nie mają przestrzeni, by chociaż część nowo poznanych praktyk od razu wprowadzić w życie.
Dlatego też obecnie popularnym trendem jest tworzenie międzyzespołowych społeczności skupionych na rozwijaniu bezpieczeństwa wewnątrz organizacji. Nazywa się je Security Champions. Ponieważ jak już mówiliśmy, dbanie o bezpieczeństwo wymaga spojrzenia z wielu perspektyw, taka społeczność jest zbiorem osób z różnych zespołów o różnych rolach. Celem społeczności jest rozwój umiejętności np. poprzez szkolenia, wymianę wiedzy i doświadczeń, tworzenie forum do wspólnego rozwiązywania problemów oraz przede wszystkim za-dbanie o ciągłą ekspozycję na temat bezpieczeństwa. Co przekłada się na to, że pracownicy stale zaangażowani w bezpieczeństwo, sami pilnują tego typu tematów już od samego początku procesu wytwarzania.
Nie wszystkie firmy mogą sobie pozwolić na tworzenie i utrzymywanie wyspecjalizowanych społeczności wewnątrz firmy. To wymaga dużego zaangażowania i wiedzy.
Przykładem wsparcia firm w tworzeniu bezpiecznych systemów może być społeczność Security Champions, której celem jest pomaganie pracownikom w podejmowaniu dobrych decyzji i wybieraniu właściwych rozwiązań poprzez przybliżanie trendów czy omawianie zagrożeń z zakresu bezpieczeństwa.
Od czego zacząć?
A. S.: Od przestrzeni czasowej w wyznaczaniu terminów, by pracownicy mogli zacząć stosować wiedzę w praktyce. Czyli aby mogli modelować zagrożenia (Threat modelling) czy zwracać uwagę na bezpieczeństwo w czasie Code Review.
Z biegiem czasu, omawiane na spotkaniach problemy bezpieczeństwa, będą coraz bardziej skomplikowane. Wiedza oraz świadomość w firmie będą rosły, a na testach penetracyjnych (z których wcale rezygnować nie należy) wykrywanych podatności będzie coraz mniej.
Dziękuję za inspirującą rozmowę.