Istota cyberbezpieczeństwa
Cyberbezpieczeństwo jest dziś jednym z najważniejszych i największych obszarów informatyki, co spowodowane jest rozwojem technologii i rosnącym zagrożeniem, które „czyha” na użytkownika na każdym kroku w cyberprzestrzeni. Zalew informacji online, transformacja wielu procesów, takich jak bankowość, załatwianie spraw urzędowych oraz innych, w wirtualne czy dynamiczny rozwój mediów społecznościowych, zmuszają firmy do projektowania i tworzenia oprogramowania bezpiecznego, które uchroni użytkowników i ich dane przed niepożądanym dostępem osób trzecich.
W erze, gdy dane i prywatność są jednym z najważniejszych i najcenniejszych aktywów, kluczowe staje się zagwarantowanie bezpieczeństwa i potencjalne zapobieganie atakom na użytkowników, takim jak np. kradzież tożsamości. Uchronienie użytkowników narzędzi cyfrowych przed atakami to dziś konieczność, ponieważ uchybienia w tym zakresie są coraz częściej eksponowane przez media i prowadzą do utraty renomy przez firmę. Przykład: zeszłoroczny wyciek danych z menedżera haseł LastPass, który zaowocował licznymi negatywnymi komentarzami w prasie. Jego efektem
był m.in. artykuł zatytułowany „Why You Should Stop Using LastPass (…)” opublikowany w Forbes, którego twórcy oprogramowania z pewnością woleliby uniknąć... Jeden incydent naruszenia bezpieczeństwa może całkowicie zrujnować reputację produktu lub firmy, co pociąga za sobą realne straty finansowe i wizerunkowe.
Ewolucja bezpieczeństwa w programowaniu
Secure by Design opiera się na ważnej zasadzie – bezpieczeństwo użytkownika jest czymś, o czym trzeba myśleć od samego początku procesu tworzenia oprogramowania. Teraz może się to wydawać oczywiste, lecz nie zawsze tak było. W latach 60. i 70. bezpieczeństwo było kwestią drugorzędną. Budowano zamknięte, lokalne programy (pierwsze systemy operacyjne), które głównie skupiały się na funkcjonalności.
W kolejnych latach, wraz ze wzrostem popularności i powszechności Internetu, zaczęły pojawiać się pierwsze ataki hakerskie oraz ryzyka z tym związane. Twórcy oprogramowania zaczęli dostrzegać istotę cyberbezpieczeństwa na etapie samego projektowania. W późnych latach 90. rozpoczęto stosowanie sformułowania „bezpiecznego
kodowania”, jednakże większość tych praktyk polegała na łataniu błędów i zabezpieczaniu luk po wdrożeniu programu na środowiska produkcyjne. Wraz z XXI wiekiem koncepcja Secure by Design weszła do informatycznego słownika i zaczęła po-woli zastępować reakcję na ataki skuteczną prewencją.
Jak zacząć?
Pierwszym krokiem do wdrożenia Secure by Design jest zrozumienie koncepcji i środowiska projektowanego oprogramowania. Analityk powinien postawić się w pozycji potencjalnego napastnika i pomyśleć o przypadkach w jakim celu i w jaki sposób chciałby i mógłby zaatakować program. Proces ten nazywa się modelowaniem zagrożeń i w dużym stopniu pozwala na zidentyfikowanie podatności i tzw. słabych punktów oprogramowania.
Dobrą praktyką jest kreowanie aktorów, czyli wymyślonych przez nas postaci z własną motywacją, konkretnymi umiejętnościami i celem, który chcą osiągnąć. Przykład: projektując system społecznościowy, możemy wymyśleć aktora – wyłudzacza pieniędzy, który chciałby przejąć konto użytkownika, aby pod jego tożsamością prosić jego znajomych na tym portalu o szybki przelew z obietnicą zwrotu. W tym celu wykonał fałszywą stronę logowania łudząco podobną do prawdziwej i próbuje za jej pomocą przejąć dane do logowania do konta nieświadomego użytkownika. Po wymyśleniu takiej historii, analityk powinien znaleźć rozwiązanie, które uniemożliwi aktorowi-napastnikowi pomyślnego wykonania opisanego ataku. W tym przypadku może to być, na przykład, zastosowanie weryfikacji dwuetapowej.
Kolejną dobrą praktyką przy projektowaniu jest tzw. minimalizacja powierzchni ataku, którą można zastosować, poprzez ograniczenie funkcjonalności oprogramowania do niezbędnego minimum. Eliminuje to potencjalne wektory ataku i ułatwia testowanie na etapie dalszego procesu deweloperskiego. Można to też osiągnąć przez zastosowanie dobrze przemyślanego systemu kontroli dostępu do funkcjonalności, do których dostęp mają jedynie osoby uprawnione.
Istotne również jest zaangażowanie testera penetracyjnego na wczesnym etapie projektu, co potrafi przynieść bardzo istotne wnioski i wyniki, które wdrożyć można bez potrzeby przerabiania większości zrealizowanych funkcjonalności – za-oszczędzone zostają wtedy potencjalnie czas i pieniądze. Istnieją również narzędzia pozwalające na automatyczne skanowanie bezpieczeństwa kodu, które potrafią wykryć lukę bezpieczeństwa bez ingerencji człowieka – aczkolwiek nie będą tak skuteczne jak doświadczony tester penetracyjny.
Integracja cyberbezpieczeństwa w cykl życia oprogramowania
Programiści przyzwyczajeni są do standardowego cyklu życia oprogramowania, opierającego się na dowolnej metodyce i składającego się z elementów takich jak analiza, wykonanie, testy, wdrożenie i utrzymanie. Secure by Design jest czymś więcej niż dodatkowym etapem w cyklu życia, ponieważ zastępuje ten wzorowy własnymi elementami (zaznaczam, iż jest to skondensowany i przykładowy schemat, który nie jest wzorem sprawdzającym się w każdym przypadku):
Definicja założeń projektu i polityki bezpieczeństwa – definicja wszystkich założeń projektu, istotne jest pamiętanie o polityce bezpieczeństwa i identyfikacji zagrożeń.
Analiza zagrożeń i ryzyka – ocena ryzyka i priorytetyzacja.
Projektowanie bezpiecznej architektury – wdrożenie zasady Secure by Design na poziomie architektury oprogramowania.
Programowanie w oparciu o bezpieczne praktyki – wytwarzania kodu przez wyszkolonych programistów z zakresu cyberbezpieczeństwa, świadomych o aktualnych zagrożeniach cybernetycznych.
Testowanie – nie tylko manualne i automatyczne, istotne są testy penetracyjne, które zbadają bezpieczeństwo na każdym etapie życia projektu.
Zabezpieczenie procesów CI/CD – zapewnienie bezpiecznego kanału ciągłej integracji i dostarczania, uniemożliwienie potencjalnego ataku związanego z podmianą kodu źródłowego do kompilacji.
Monitorowanie i reagowanie na incydenty – wykorzystanie osobnego zespołu do monitorowania i natychmiastowa reakcja na incydenty związane z cyberbezpieczeństwem. Istotne jest przygotowanie planów na ewentualne ataki.
Edukacja użytkowników – funkcje edukacyjne dotyczące cyberbezpieczeństwa, np. porady przy logowaniu, na co zwrócić uwagę – zielona kłódka, ważny certyfikat, adres URL itp.
Audyty bezpieczeństwa – wykonywane przez firmy zewnętrzne, potwierdzające bezpieczeństwo systemu lub wskazujące na miejsca wymagające poprawy.
Powyższe punkty składają się na cykl – po dotarciu do ostatniego punktu, z zasady oprogramowanie będzie musiało być rozwijane, aby wciąż być bezpieczne i funkcjonalne. Z tego też powodu należy wrócić do pierwszego kroku i każdą nową funkcjonalność rozpocząć od analizy bezpieczeństwa, idąc przez każdy z punktów, docierając aż do audytu.
Secure by Design od Cyber Security Lab
W Cyber Security Lab nie tylko implementujemy program Secure by Design, ale także stale analizujemy i reagujemy na zmieniające się zagrożenia w środowisku cybernetycznym. Realizując oprogramowanie w oparciu o trzy filary – funkcjonalność, doświadczenie użytkownika i bezpieczeństwo – nie tylko spełniamy oczekiwania użytkowników pod względem wydajności i łatwości użytkowania, ale również utrzymujemy najwyższe standardy bezpieczeństwa. Bezpieczeństwo nie jest u nas tylko dodatkiem, ale integralną częścią procesu tworzenia oprogramowania od analizy i koncepcji do jego dostarczenia.
Jako profesjonaliści z obszaru cyberbezpieczeństwa, zdajemy sobie sprawę, że zagrożenia nie śpią, dlatego ciągła edukacja, monitorowanie, oraz aktualizacje są nieodłączną częścią naszego podejścia. Dążymy do tego, aby nasze systemy były nie tylko odporne na obecne zagrożenia, ale również elastyczne i gotowe na wyzwania przyszłości.
W połączeniu z programem Secure by Design, nasz plan na bezpieczeństwo obejmuje również regularne przeglądy, testy penetracyjne oraz ścisłą współpracę z ekspertami ds. bezpieczeństwa. Dzięki temu nie tylko reagujemy na bieżące zagrożenia, ale także antycypujemy przyszłe wyzwania, aby nasze oprogramowanie nadal pozostawało w czołówce, jeśli chodzi o bezpieczeństwo i niezawodność. Wierzymy, że tylko poprzez holistyczne podejście i ciągłe doskonalenie możemy sprostać dynamicznemu środowisku cybernetycznym i chronić naszych klientów przed ewoluującymi zagrożeniami.